Stück für Stück
P2P-Filesharing mit Bittorrent
Clients und Tracker
Der ursprüngliche Besitzer der Datei lädt nun die erzeugte Torrent-Datei in seinen Bittorrent-Client. Dieser liest die Announce-URL aus und meldet dem Tracker, dass er eine Datei mit einer bestimmten SHA1-Prüfsumme tauschen möchte. Der Tracker merkt sich im Gegenzug die IP-Adresse und den Port des Clients.
In der Zwischenzeit haben auch andere Benutzer die Torrent-Datei heruntergeladen und sie ebenfalls in ihre Clients gelegt. Auch diese Clients melden dem Tracker, dass sie Interesse am Tausch der Datei mit dieser SHA1-Kennung haben. Der Tracker merkt sich auch von diesen Clients IP-Adresse und Port und liefert als Antwort eine Liste mit allen anderen IP/Port-Kombinationen, die er sich vorher im Zusammenhang mit diesem Hash gemerkt hat.
Nach ein paar Minuten fragen die Clients – inklusive desjenigen, der die ursprüngliche Datei anbietet – wieder nach einer Liste aller IP-Adressen, die diese Datei haben beziehungsweise haben wollen. Auf diese Weise schafft es der Tracker, alle Clients mit einander bekannt zu machen, ohne von der eigentlichen Datei mehr zu wissen als ihren SHA1-Hash. Der Ursprungs-Client, auf dem die gesamte Datei liegt, beginnt nun die einzelnen Stücke des Files an die anderen Clients zu verteilen. Dabei achtet er darauf, dass er nach Möglichkeit verschiedene Stückchen an verschiedene Clients ausliefert.
Hier kommt die P2P-Technik ins Spiel: Sobald einer der beteiligten Clients ein einzelnes Stück der Datei hat, beginnt er dieses an die anderen Peers zu verteilen. Es genügt also theoretisch, dass der Seeder jedes Stück genau einmal an irgendeinen der anderen Teilnehmer schickt, um diese in die Lage zu versetzen, die Datei selbstständig untereinander auszutauschen. In der Praxis reicht das jedoch meist nicht aus, da stets die Möglichkeit besteht, dass einer der Clients offline geht oder die Dateistückchen aus anderen Gründen nicht wieder hochladen kann.
Bei Anwendung spezieller Verfahren ("Super Seed Mode" [7], auch "Initial Seeding" genannt) genügt es zum effizienten Verbreiten einer Datei, wenn der Seeder ungefähr 110 Prozent der Dateigröße hochlädt. Dieser Aufwand lohnt aber nur dort, wo der Datenverkehr nach Volumen berechnet wird. Im normalen Modus muss der erste Seeder 300 bis 500 Prozent der Ausgangsdatei hochladen, um diese effektiv im Netzwerk zu verbreiten.
Die Kritik
Oft hört man den Vorwurf, Bittorrent sei langsam. Und tatsächlich: Lädt man zum Beispiel eine Linux-Distribution über Bittorrent herunter, gestaltet sich der Download häufig langwieriger als über einen FTP- oder HTTP-Mirror. Das liegt meist daran, dass die Torrent-Datei gerade bei etwas älteren Distributionen nur bei sehr wenigen Seedern vorrätig liegt.
Dieses Problem tritt in der Praxis zwar häufig auf, hat jedoch nicht eigentlich mit der Technik des Bittorrent-Protokolls zu tun und ließe sich sehr einfach lösen: Dazu müsste lediglich jeder Server, der die Daten sonst über HTTP/FTP verteilt, daneben auch Bittorrent nutzt. So gäbe es wesentlich mehr Seeder, was das Problem der Lastverteilung lösen würde. Auch die Benutzer würden sich freuen, müssten sie doch nicht mehr umständlich aus einer langen Liste von Servern den richtigen aussuchen, sondern bräuchten nur noch eine Torrent-Datei zu benutzen.
Glossar
SHA1
Secure Hash Algorithm. Methode zur Berechnung einer eindeutigen Prüfsumme für beliebige Daten. Die 1995 veröffentlichte erste Variante SHA1 gilt als nicht mehr völlig sicher.
[1] Bram Cohens Homepage: http://bitconjurer.org
[2] Bittorrent-Clients (Wikipedia): http://en.wikipedia.org/wiki/BitTorrent_client
[3] SHA (Wikipedia): http://de.wikipedia.org/wiki/Secure_Hash_Algorithm
[4] The Pirate Bay: http://thepiratebay.org
[5] The Pirate Bay (Wikipedia): http://de.wikipedia.org/wiki/The_Pirate_Bay
[6] Mininova: http://www.mininova.org
[7] Super-seeding (Wikipedia): http://en.wikipedia.org/wiki/Super-seeding


