Einen BitTorrent-Client in Go von Grund auf bauen
(blog.jse.li)Schrittweise Erklärung zur Erstellung eines trackerbasierten Clients (ohne DHT, Magnet-Links usw.)
-
.torrent-Datei parsen -
Peers finden
-
Tracker-Antwort parsen
-
Payload mit Peers austauschen (Concurrency, Pipelining usw.)
4 Kommentare
Ich habe Torrents benutzt und mich dabei gefragt, wie so etwas eigentlich gebaut wird. Vielen Dank für die hilfreichen Informationen.
Ich habe mal danach gesucht, ob Torrents heutzutage überhaupt noch für etwas anderes als illegale Zwecke genutzt werden.
Das Open-Source-Projekt Murder, das Twitter für Server-Deployments verwendet hatte, wird inzwischen nicht mehr gepflegt.
https://github.com/lg/murder
Blizzard hatte für die Verteilung großer Client-Dateien das Torrent-Protokoll eingesetzt, aber auch das wurde nach 2015 abgeschafft.
https://us.battle.net/forums/en/bnet/topic/16283439122
Am ehesten wird es wohl noch vom Internet Archive zum Herunterladen von Dateien genutzt.
https://help.archive.org/hc/en-us/…
Das ist gelegentlich auch nützlich, wenn man eher kleine Linux-basierte OS-Distributionen beschaffen möchte.
Ziemlich viele Linux-basierte Betriebssysteme bieten die Option an, sie per Torrent herunterzuladen.
Wenn sie später etwa wegen eingestellter Entwicklung des betreffenden OS nicht mehr direkt heruntergeladen werden können,
kann man sie über andere Nutzer beziehen, die sie bereits per Torrent heruntergeladen haben und weiterhin seeden.
Es gibt neben diesem noch mehrere vollständige BitTorrent-Clients und Bibliotheken, die in Go geschrieben sind.
https://github.com/cenkalti/rain
https://github.com/anacrolix/torrent