Bittorrent

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Das Filesharing-Protokoll Bittorrent (auch: BitTorrent; von Bit und engl. torrent, "reissender Strom") ist ein kollaboratives Netzwerkprotokoll, das sich besonders für die schnelle Verteilung grosser Datenmengen eignet. Es handelt sich um ein Peer-to-Peer-Verfahren, bei dem gleichberechtigte Partner (engl. peer) miteinander kommunizieren. Nicht ein Server verteilt also die Dateien, sondern die Teilnehmer tauschen die Dateien untereinander aus.

Technisch ist das Protokoll der OSI-Schicht 7 (der Anwendungsschicht) zuzuordnen und setzt auf das TCP/IP-Referenzmodell. Die Referenzimplementierung namens Bittorrent durch den Erfinder Bram Cohen erfolgte in der Programmiersprache Python. Mittlerweile steht eine Reihe alternativer Programme zur Verfügung, die das Bittorrent-Protokoll implementieren.

Die US-amerikanische Firma namens Bittorrent hat im Februar 2007 ihre gleichnamige Website in einen Online-Shop umgewandelt, in dem sich viele Medieninhalte nur noch kostenpflichtig herunterladen lassen.

Die englische Wikipedia listet Anfang 2009 über 50 Bittorrent-Clients auf, darunter

Einer der Hauptzwecke von Bittorrent ist die Verteilung von CD- oder DVD-Abbilddateien von Linux-Distributionen.

Konzept

Der Ausgangsrechner (auch: Seeder von engl. to seed "säen"), der im Besitz der vollständigen Datei ist, verteilt Stücke (engl. chunk "Brocken") davon an einzelne Peers. Anschliessend können die an der Datei interessierten Clients (der "Schwarm") die noch fehlenden Stücke bei den anderen Peers beziehen. Durch diese Verteilung des Herunterladens auf viele Rechner bildet nicht mehr ein einzelner Rechner einen Flaschenhals für die Datenübertragunsgrate. Peers, die schliesslich alle Stücke und somit die ganze Datei erhalten haben, werden nun selbst zu Seedern und steigern so die verfügbare Gesamt-Datenübertragungsrate weiter.

Damit das ganze klappt, wird eine Koordinierungsstelle benötigt, welche die beteiligten Peers registriert und ihnen mitteilt, wer welches Stück der gesuchten Datei anbietet. Diese zentrale Instanz heisst Tracker. Moderne Bittorrent-Clients können auch auf einen zentralen Tracker verzichten, indem sie die entsprechenden Daten als Hash-Tabelle auf die beteiligten Clients verteilen. Bekannte Tracker sind The Pirate Bay und Mininova.

Das Vorgehen zum Verteilen einer Datei über Bittorrent ist das folgende.

  • Es wird eine Torrent-Datei (mit der Dateinamenserweiterung ".torrent") benötigt, welche Meta-Informationen enthält.
    • Der Bittorrent-Client zerlegt die zu verteilende Datei zuerst in viele kleine Stücke und erzeugt einen SHA-1-Hash für jedes einzelne Stück. Eine Liste dieser Prüfsummen wird in die Torrent-Datei geschrieben, zusätzlich werden einige Informationen wie Dateigrösse und Dateiname hinzugefügt.
    • Anschliessend wird ein weiterer SHA-1-Hash über diese Hash-Liste und die Metadaten erzeugt; mit Hilfe dieser zweiten Prüfsumme lässt sich die Torrent-Datei eindeutig identifizieren.
    • Die Torrent-Datei benötigt ausserdem eine "Announce URL", die auf einen Torrent-Tracker verweist.
  • Die Torrent-Datei wird über ein beliebiges Medium (z. B. E-Mail) verteilt. Um sie der Allgemeinheit zur Verfügung zu stellen, wird sie auf eine Torrent-Suchmaschine hochgeladen. Die meisten Tracker-Betreiber bieten neben ihrem Tracker auch Torrent-Suchmaschinen. Dabei gilt es zu beachten, dass Torrent-Dateien, die über den Tracker laufen nicht zwingend auch auf der Suchmaschine auftauchen und umgekehrt.
  • Der ursprüngliche Besitzer der Datei lädt nun die erzeugte Torrent-Datei in seinen Bittorrent-Client.
    • Der Client liest die Announce URL aus und meldet dem Tracker, dass er eine Datei mit einem bestimmten SHA-1-Hash tauschen möchte.
    • Der Tracker merkt sich im Gegenzug die IP-Adresse und den Port des Clients.
  • Inzwischen haben auch andere Bittorrent-Benutzer die Torrent-Datei heruntergeladen und sie ebenfalls in ihren Bittorrent-Client gelegt.
    • Auch diese Clients melden dem Tracker, dass sie Interesse am Tausch der Datei mit diesem SHA-1-Hash haben.
    • Der Tracker merkt sich auch von diesen Clients die IP-Adresse und den Port.
    • Als Antwort liefert der Tracker eine Liste mit allen anderen Kombinationen aus IP-Adresse und Port, die er sich zuvor in Zusammenhang mit diesem SHA-1-Hash gemerkt hat.
  • Nach einigen Minuten fragen die Bittorrent-Clients (einschlisslich desjenigen, der die ursprüngliche Datei anbietet) erneut nach einer List aller IP-Adressen, welche diese Datei haben bzw. haben wollen. Auf diese Weise macht der Tracker alle Clients miteinander bekannt, ohne von der ursprünglichen Datei mehr zu kennen, als ihren SHA-1-Hash.
  • Der Bittorrent-Client, der die vollständige Datei besitzt, besitzt nun die einzelnen Stücke an die anderen Clients zu verteilen. Dabei achtet er darauf, dass er nach Möglichkeit verschiedene Stücke an die verschiedenen Clients ausliefert.
    • Sobald einer der beteiligten Bittorrent-Clients ein einzelnes Stück der ursprünglichen Datei vollständig empfangen hat, beginnt auch er dieses Stück an die anderen Clients zu verteilen.

Es genügt also theoretisch, dass der Seeder jedes Stück genau einmal an irgendeinen der anderen Teilnehmer verschickt, damit diese die Datei untereinander selbstständig austauschen können. In der Praxis reicht das jedoch meist nicht aus, da jeder Client jederzeit beendet werden oder die Dateistücke aus irgendeinem Grund nicht wieder hochladen kann. Bei Anwendung besonderer Verfahren ("Super Seed Mode", auch "Initial Seeding" genannt) genügt es zum effizienten Verbreiten der Datei, wenn der erste Seeder etwa 110 Prozent der Dateigrösse hochlädt. Dieser Aufwand lohnt aber nur dort, wo der Datenverkehr nach Volumen berechnet wird. Im normalen Modus muss der erste Seeder das Drei- bis Fünffache der Datei hochladen, um diese effektiv zu verbreiten.

Bittorrent kann statt sehr schnell auch sehr langsam sein - nämlich dann, wenn die Torrent-Datei nur von sehr wenigen Seedern angeboten wird, welche die Dateistücke womöglich auch noch langsam liefern. Das hat natürlich nicht ursächlich mit der Bittorrent-Technik zu tun.

Weblinks

Vorlage:dewi Vorlage:dewi

Herunterladen von Bittorrents