mini|BitTorrent-Logo BitTorrent (von der kleinsten Daten-Einheit Bit und ‚reißender Strom‘ oder ‚Sturzbach‘, von ) ist ein kollaboratives Filesharing-Protokoll, das sich besonders für die schnelle Verteilung großer Datenmengen eignet und 2001 entworfen sowie erstmals veröffentlicht wurde. Im Gegensatz zu anderen Filesharing-Techniken setzt BitTorrent nicht auf ein übergreifendes Filesharing-Netzwerk, sondern baut für jede Datei ein dezentrales Verteilnetz auf.
BitTorrent-Technik Technisch ist das Protokoll der OSI-Schicht 7, also der Anwendungsschicht, zuzuordnen und setzt auf das TCP/IP-Referenzmodell auf. Die Referenzimplementierung (BitTorrent-Client) durch den Erfinder Bram Cohen erfolgte ursprünglich in der Programmiersprache Python. Mittlerweile stehen eine Reihe alternativer Programme zur Verfügung, die das BitTorrent-Protokoll implementieren.
mini|BitTorrent reduziert die Serverauslastung, da sich Peers auch mit unvollständigen Dateien untereinander austauschen. Wie die farbigen Balken bei einigen Clients anzeigen, wird die Datei stückweise in zufälliger Reihenfolge untereinander ausgetauscht statt sie komplett zu laden.
Im Unterschied zum Herunterladen einer Datei mittels HTTP oder FTP werden bei der BitTorrent-Technik die (ansonsten ungenutzten) Upload-Kapazitäten der Downloader mitgenutzt, auch wenn sie die Datei noch nicht vollständig heruntergeladen haben. Dateien werden also nicht nur von einem Server verteilt, sondern auch von Nutzer zu Nutzer (Peer-to-Peer oder P2P) weitergegeben. Dieser Ansatz vermeidet Flaschenhälse in Folge ausgereizter Kapazitäten eines einzelnen Anbieters.
Funktion Um sich an der Verteilung der Daten eines Torrents zu beteiligen, benutzt der Client üblicherweise eine Torrent-Datei (Dateinamenserweiterung .torrent oder .tor). In dieser befindet sich die IP-Adresse (bzw. der Hostname) des Trackers sowie Dateiname, Größe und eine Liste von Prüfsummen von Segmenten der herunterzuladenden Daten (eine oder mehrere Dateien). Torrent-Dateien können mit vielen verfügbaren Bittorrent-Clients erzeugt werden. Dabei muss der initiale Seeder-Peer (engl. „seeder“ = Sämaschine) die Verknüpfung zur als Torrent anzubietenden Datei herstellen und diese verfügbar halten.
Für das Finden anderer (an einer bestimmten Datei interessierter) Peers gibt es u. a. ein System, bei dem spezielle (Web-)Server – die Tracker (englisch „track“ = verfolgen) – Kontakte vermitteln. Der Tracker hält im Normalfall lediglich eine eindeutige ID des Torrents lokal vor, der die IP-Adressen der Peers zugeordnet sind, welche die Datei verfügbar halten. Peers nehmen recht häufig Verbindung zum Tracker auf, um schnell auf Änderungen der verfügbaren Peers reagieren zu können.
Torrent-Dateien sind üblicherweise wenige Dutzend Kilobyte groß und enthalten Metadaten über die herunterzuladende Datei. Sie werden auf der Website des Anbieters oder über Index-Sites (zum Beispiel The Pirate Bay, Mininova oder isoHunt) bereitgestellt. Ohne Tracker müssen andere Methoden zum Auffinden von Gegenstellen genutzt werden (DHT, PEX, …), oder es kann nur mit schon bekannten Gegenstellen getauscht werden.
Die Client-Software erhält vom Tracker eine Liste von Gegenstellen, die die Daten oder Teile davon haben oder interessiert sind. Sobald ein Peer ein Segment (englisch „chunk“) der Datei erhalten und die Prüfsumme verifiziert hat, meldet er dies dem Tracker und kann dieses Dateistück nun an die anderen Peers weitergeben. Die Menge aller Peers, die am gleichen Torrent interessiert sind, nennt man Schwarm. Peers, die im Besitz des kompletten Inhalts des Torrents sind, und somit nichts von anderen Clients herunterladen, sondern lediglich Daten verteilen, nennt man Seeder (von engl. to seed: säen). Als Leecher (von engl. leech: Blutegel; -sauger) werden diejenigen Peers bezeichnet, die noch nicht über den gesamten Torrent-Inhalt verfügen und weitere Segmente herunterladen. Vorwiegend in anderen Zusammenhängen werden zum Teil auch Peers abwertend als „Leecher“ bezeichnet, die nur herunterladen, ohne selbst bereits heruntergeladene Segmente weiterzuverteilen und so dem P2P-Prinzip zuwiderhandeln. Peer bezeichnet allgemein einen mit einem Client verbundenen anderen Client.
Im Gegensatz zu anderen Filesharing-Systemen werden nicht beliebige Dateien aus den Beständen der Teilnehmer ausgetauscht. Vielmehr verteilt jeder Schwarm nur die Dateien, welche der Autor der Torrent-Datei explizit zur Verteilung vorgesehen hat. Auch der Betreiber des Trackers bestimmt selbst, welche Downloads von diesem verwaltet werden sollen. Die einzelnen Tracker stehen nicht in Verbindung zueinander, es existiert daher kein gemeinsames Netzwerk, sondern ein gesondertes für jeden einzelnen Torrent. So können sich Anbieter auch von fremden, möglicherweise illegalen Inhalten leichter distanzieren.
Offizielle Protokollerweiterungen Die Entwicklung der BitTorrent-Protokolle wurde der Community übergeben. In den BitTorrent Enhancement Proposals (BEP) sammeln sich neue Funktionen, die in der Regel von den Autoren verschiedener BitTorrent-Software eingeführt und nun darin standardisiert wurden.
Erweiterung für Peers zum Übertragen von Metadaten Die in BEP 9 beschriebene Erweiterung erlaubt Peers das Übertragen von Metadaten, um z. B. Magnet-Links auflösen zu können. Darüber kann ein Peer ohne eine .torrent-Datei einen Torrent herunterladen und dazu dem entsprechenden Schwarm beitreten.
DHT-Protokoll
BEP 5 beschreibt den Einsatz einer verteilten Hashtabelle (englisch „Distributed Hash Table“; DHT) auf Basis des Kademlia-Algorithmus für den „trackerlosen“ (englisch „trackerless“) Betrieb. Diese Erweiterung ist derzeit noch im Entwurfsstadium, der Einsatz ist jedoch schon weit verbreitet. Die Trackerfunktion wird dabei von der Clientsoftware übernommen. Dies vermeidet einige der bisherigen Probleme (zum Beispiel die fehlende Ausfallsicherheit des Trackers), auch wenn tracker-gestützter Betrieb weiterhin möglich sein wird. Es erleichtert auch das Anbieten, da Tracker den aufwändigsten Teil in BitTorrent darstellen. Seit der im November 2005 erschienenen Version 4.2.0 unterstützt der Referenz-Client den trackerlosen Betrieb und setzt dabei auf den Kademlia-Algorithmus. Der Tracker kann dabei dezentral, ähnlich wie im Kademlia-Netzwerk, als verteilte Hashtabelle auf den Clients selbst abgelegt und verwaltet werden.
Moderne BitTorrent-Clients können daher auf Tracker verzichten und dezentral arbeiten („trackerlos“). Allerdings verwenden sie noch unterschiedliche Protokolle, sodass die Kommunikation zwischen verschiedenen Clients auf DHT-Basis nicht immer möglich ist. Untereinander kompatibel sind zurzeit BitComet, Deluge, µTorrent, KTorrent, qBittorrent, rTorrent, Transmission und der Referenz-Client. Die Entwickler arbeiten verstärkt daran, Kompatibilität herzustellen.
UDP-Trackerprotokoll
Mit der Erweiterung aus BEP 15 kann ein Tracker per UDP abgefragt werden, was das Datenverkehrsaufkommen am Tracker stark reduzieren kann. Diese Erweiterung ist derzeit noch im Entwurfsstadium.
Superseeding
BEP 16 beschreibt das sogenannte Superseeding (bei µTorrent auch initial seeding genannt), bei dem für den Fall, dass der jeweilige Peer der einzige Seed in einem noch datenlosen Schwarm ist, der Versand daraufhin optimiert wird, dass im restlichen Schwarm möglichst schnell eine (verteilte) Kopie der Daten entsteht. Dazu zeigt sich der Seed in diesem Modus im Schwarm auch als unvollständige Quelle und gibt seine Teile nur nach und nach heraus. Er liefert vorerst jedes Teil nur je einmal aus und gibt weitere Teile frei, wenn er Rückmeldung erhalten hat, dass ein hochgeladenes Teil weiterverbreitet wurde. Er versucht herauszufinden, welche Peers für die schnellste Weiterverbreitung sorgen, und lädt zu diesen bevorzugt hoch. Der Client BitComet ist dafür bekannt geworden, dieses Vorgehen zum eigenen Vorteil zu missbrauchen.
Superseeding wurde in dem Client BitTornado eingeführt. Die Erweiterung ist derzeit noch im Entwurfsstadium.
HTTP/FTP Seeding
BEP 17 und 19 beschreiben Verfahren zur Nutzung von HTTP- oder FTP-Webservern als vollständige Quellen (Seeds) in einem BitTorrent-Schwarm.
Private Torrents Im Unterschied zu öffentlichen Torrents, wird bei privaten Torrents der Zugriff eingeschränkt. Mit einem Flag in der .torrent-Datei (die hierbei nur einen einzigen Tracker enthält) wird dem Client vorgeschrieben, sich bei der Auffindung von Quellen auf den einen in der Datei angegebenen Tracker zu beschränken und nur mit Clients zu verbinden, die dieser liefert. BEP 27 beschreibt das Verfahren.
Ankündigen und Auffinden von Peers mittels Zeroconf
Mit der in BEP 26 (noch im Entwurfsstadium) beschriebenen Erweiterung können sich Peers mittels DNS Service Discovery (Zeroconf) in einem lokalen Netzwerk finden. Innerhalb eines lokalen Netzwerkes sind in der Regel deutlich höhere Übertragungsraten möglich und der Aufwand für die Übertragung ist geringer. Mit dieser Erweiterung können Peers im gleichen lokalen Netzwerk, die am selben Torrent interessiert sind, dies entlastend für den Schwarm und die gemeinsame Außenanbindung nutzen und eventuell mehr Peers gefunden werden. Dazu muss auf den jeweiligen Systemen ein Zeroconf-Daemon laufen.
Auffinden von BitTorrent-Zwischenspeichern
Die im BEP 22 (noch im Entwurfsstadium) beschriebene Erweiterung ermöglicht das Aufspüren netzwerk-topologisch naheliegender Knoten wie zum Beispiel Pufferspeichern eines Internetdienstanbieters. Dies kann in vielerlei Hinsicht nützlich sein:
Indem Internetdienstanbieter Verkehr von auf ihrem Netz populären Torrents zwischenspeichern und auf ihrem Netz betriebene Clients aus dem Zwischenspeicher speisen, kann teurerer externer Datenverkehr eingespart werden. Für die Kunden ergibt sich damit eine Verbesserung der Zuverlässigkeit des Torrents und der Geschwindigkeit beim Herunterladen. Die Daten von Torrent-Transfers können damit unkompliziertere Routen durchs Internet nehmen.
Diese Erweiterung wurde mit Version 4.20.0 des Original-Clients (mainline) eingeführt.
Protokollverschleierung Viele Clients bieten mittlerweile eine Verschlüsselung des Datenstromes mit dem unsicheren Algorithmus RC4 (Stromchiffre) und dem „Infohash“ des jeweiligen Torrents als Schlüssel, um das Protokoll des Datenstromes zu verschleiern und Internetdienstanbietern das Traffic-Shaping zu erschweren. Für Kunden einiger Internetdienstanbieter ist es die einzige Möglichkeit, einer selektiven Drosselung ihres Datenverkehres zu entgehen, andererseits nimmt es den Anbietern auch die Möglichkeit des Betriebes von BitTorrent-Zwischenspeichern und braucht mehr Rechenleistung.µTorrent und Azureus führten die Erweiterung zusammen ein, was schlagartig einen Großteil aller Peers kompatibel zu verschlüsselten Verbindungen machte.
Der ursprüngliche Entwickler des BitTorrent-Protokolles Bram Cohen kritisierte dieses Vorgehen und das zugehörige BEP 8 ist zurückgestellt.
Peer Exchange
Peer Exchange (PEX) ist ein alternatives Verfahren zum Auffinden von Peers. Damit können Peers ihre Peer-Listen untereinander austauschen und somit zusätzliche Peers von verbundenen Peers bezogen werden. Obwohl die entsprechende BEP 11 noch nicht angenommen ist, ist das Verfahren schon weit verbreitet.
Internetcache Ab Version 4.20.0 unterstützt BitTorrent das Internet Cache Protocol (ICP), um die Datenübertragungsrate der Provider zu schonen. Dazu wurde das Zusatz-Protokoll Cache Discovery Protocol definiert. Bisher wurde diese Methode aber noch nicht genutzt. Da Caching-Provider durch den Digital Millennium Copyright Act (DMCA) nicht für den durchgeleiteten Datenverkehr haften müssen, bestehen zumindest in den Vereinigten Staaten juristisch keine Probleme.
Anti-Leech-Tracker (ALT)