BitTorrent
BitTorrent ist ein kollaboratives Filesharing-Protokoll, das besonders für die schnelle Verteilung großer Dateien (jenseits von 100 MB) geeignet ist. Die erste Implementierung durch den Erfinder Bram Cohen erfolgte in der Programmiersprache Python. Mittlerweile steht eine Reihe von alternativen Programmen zur Verfügung, die das BitTorrent-Protokoll implementieren.
Der Vorgang der Datendistribution mit BitTorrent ist grundsätzlich verschieden von der Arbeitsweise der bekannten File-Sharing-Tauschbörsen, bei welchen jeder Teilnehmer parallel eigene Dateien anbietet. Der Anwendungszweck ist vielmehr vergleichbar mit dem traditionellen File Transfer Protocol oder ähnlichen Protokollen zur Dateiübertragung. Durch die zunehmende Implementierung von Trackern, trackerlosem Betrieb sowie Suchfunktionen in den Clients, lassen sich diese jedoch zunehmend auch wie traditionelle Tauschbörsen verwenden.
Funktion von BitTorrent-Filesharing

Im Vergleich zum herkömmlichen Download einer Datei per HTTP oder FTP werden bei der BitTorrent-Technik die Upload-Kapazitäten der Downloader mitgenutzt, auch wenn sie die Datei erst unvollständig heruntergeladen haben. Dateien werden also nicht mehr nur sternförmig von einem Server verteilt, sondern auch von Nutzer zu Nutzer verteilt (Peer-to-Peer), wodurch alle ihre Dateien schneller erhalten können. Der Server wird weniger belastet und der Anbieter spart Kosten. Insgesamt ist die Downloadlast nicht geringer, sie wird lediglich auf die Clients verlagert. Möglich wird diese Art der Verbreitung durch die Ausnutzung ungenutzter Upload-Kapazitäten. Bei populären Quelldateien verhindert diese Technik das Zusammenbrechen des Netzes.
BitTorrent (was übersetzt soviel heißt wie „reißender Datenstrom”) besteht aus zwei Teilen: Das Server-Programm, genannt Tracker, verwaltet Informationen zu einer oder mehreren Dateien. Der herunterladende Client erfährt vom Tracker, wer sonst noch die Datei herunterlädt und verteilt. Sobald ein Client ein Segment (chunk) der Datei erhalten und die Prüfsumme verifiziert hat, meldet er dies dem Tracker und kann dieses Dateistück schon an andere Clients weitergeben. Peers, die am gleichen Torrent interessiert sind, nennt man Schwarm. Peers, die downloaden, nennt man leecher (engl. „Blutegel, Blutsauger“), solche die den Download zu 100% haben und daher nur uploaden, heißen seeder (engl. „Säer“).
Um eine Datei herunterladen zu können, benötigt der Client eine Torrent-Datei (Dateiendung .torrent oder .tor). In dieser befindet sich die Adresse des Trackers sowie Dateiname, Größe und Prüfsummen der herunterzuladenden Datei. Eine Torrent-Datei kann auch Informationen über mehrere Dateien beinhalten. Torrent-Dateien sind wenige Kilobytes groß und liegen üblicherweise auf der Homepage des Anbieters zum Download bereit. Löscht der Anbieter den Torrent aus dem Tracker oder geht der Kontakt zum Tracker verloren, können die Clients keinen neuen Kontakt zu anderen Clients mehr aufbauen, der Austausch zwischen schon bekannten Clients kann aber fortgeführt werden.
Im Gegensatz zu den bekannten File-Sharing-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 für den Download 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 Netz. Anbieter können sich so von fremden, möglicherweise illegalen, Inhalten leichter distanzieren.
In neuen Versionen wurden „trackerlose“ (trackerless) Systeme entwickelt. Die Trackerfunktion wird dabei von den Clients mit übernommen. Dies vermeidet einige der bisherigen Probleme (z. B. die fehlende Ausfallsicherheit des Trackers), auch wenn tracker-gestützter Betrieb weiter 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 Kad-Netzwerk, als Distributed Hash Table auf den Clients (im Netz) selbst abgelegt und verwaltet werden.
In Zukunft wird die Weiterentwicklung des Protokolls nicht mehr alleine von Bram Cohen sondern auch von anderen Entwicklern geleistet. BitTorrent-Benutzer sind in letzter Zeit zunehmend vom (teils unwissentlichen) Traffic-Shaping ihrer Provider betroffen. Diese setzen meist Sandivine/Ellacoya Systeme oder die Cisco SCE 1000 Serie ein, die tief in den Datenverkehr sniffen können. Werden Pakete als P2P-Pakete klassifiziert, wird der Upload nahezu auf null gedrosselt. Als Antwort darauf, und weil Bram Cohen keine Notwendigkeit sah, implementierten die Clients Azureus und uTorrent eine End-zu-End-Verschlüsselung (RC4) um dem Traffic-Shaping zu entgehen. BitComet unterstützt die neue Protokoll-Verschlüsselung ebenfalls.
Einsatzgebiete, Vor- und Nachteile
Besonders gut geeignet ist BitTorrent für die schnelle Verteilung großer Dateien, für die eine aktuell große Nachfrage vorhanden ist. Bei etwas älteren oder weniger gefragten Dateien ist unter Umständen der Download über FTP oder HTTP wegen der evtl. zu geringen Anzahl von Uploadern vorzuziehen.
Da die Menge der Bandbreite, die jeder Downloader (Leecher) bekommen kann, von der Menge der fertigen und der Menge der unfertigen Downloads (Quellen) im Netz, sowie der Uploadraten der User abhängt, kann es je nach Menge der Anbieter (Seeder), der Downloader (Leecher) und der Verteilungsrate zu mehr oder weniger "Kilobytes pro Sekunde" kommen. Da ein User mit vollständigem Download praktisch keinerlei Download-Bandbreite benötigt, steigt die maximal verfügbare Bandbreite für das gesamte Netz, weil dieser fertige User nur hochlädt (seeden). Andersrum beanspruchen Downloader Bandbreite, tragen aber selbst mit ihrer Upload-Bandbreite bei. Am folgenden (nur sehr theoretischen) Beispiel soll die Auswirkung von unterschiedlichen Mengen von reinen Anbietern (Seeder) und Downloadern (Leecher) dargestellt werden:
- 5 Vollständige Downloads, jeder der Anschlüsse hat im Schnitt eine Upload-Bandbreite von 30 Kilobytes pro Sekunde: 5 × 30 = 150 KByte/s
- 10 Unvollständige Downloads, jeder der Anschlüsse hat im Schnitt eine Upload-Bandbreite von 30 KByte/s: 10 × 30 = 300 kbyte/s
Die gesamte Bandbreite im Netzwerk beträgt also 150 KByte/s plus 300 KByte/s, gesamt also 450 KByte/s. Da 10 User gleichzeitig herunterladen, teilt sich diese verfügbare Bandbreite auf in 10× durchschnittlich 45 KByte/s.
In der Realität wird solch ein Wert auf großen, öffentlichen Trackern aber meist nur bei beliebten Torrents erreicht, da auch Bandbreite durch Wartezeiten, Zuordnungen, verschiedene Erreichbarkeiten etc. verloren geht. Außerdem sind in der Praxis auch verschiedene Anschlussgeschwindigkeiten und Prioritäten für ein mehr oder weniger schnelles Runterladen verantwortlich.
Auf Anti-Leech-Trackern (Erklärung s. u.) sind solche und noch wesentlich höhere Downloadraten allerdings sehr oft anzutreffen. Hier lassen sich auch schnelle Anschlüsse wie etwa DSL 6000 mit Download-Geschwindigkeiten jenseits der 500 KByte/s optimal nutzen.
Ableger und Anwendungen
Der BitTorrent-Client eXeem verteilt auch die .torrent-Dateien und kann dadurch auf Tracker verzichten. Schlechte Kritiken hat dieses Programm jedoch durch den Einbau von Adware in die Software (ähnlich dem Programm Kazaa) erhalten.
Moderne BitTorrent-Clients können auf Tracker verzichten und dadurch 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 zur Zeit Azureus und µTorrent sowie Bitcomet und der Classic-Client. Die Entwickler arbeiten jedoch verstärkt daran Kompatibilität herzustellen.
Red Hat gehörte neben Ubuntu zu den ersten Linux-Distributionen, die auch mit BitTorrent die CD-ROMs der Distribution verteilten und auch Blizzard brachte die World of Warcraft-Beta und bringt jetzt, wie id Software es schon länger versucht, die größeren Patches für die finale Version per BitTorrent unters Volk. Inzwischen sind alle bekannteren Linuxdistributionen und FreeBSD über BitTorrent erhältlich. Auch außerhalb des Software-Bereiches gibt es konkrete Anwendungen: Die britische BBC unternimmt derzeit Pilotversuche, um aktuelle Sendungen und Dokumentationen unmittelbar nach der Ausstrahlung online über BitTorrent zur Verfügung zu stellen.
Auch existieren diverse BitTorrent-Anwendungen für das dezentrale, anonyme und verschlüsselte Kommunikationsnetzwerk I2P.
ALT (Anti-Leech-Tracker)
BitTorrent beruht – wie alle Peer-to-Peer-Netze – auf „Geben und Nehmen“. Viele Anwender solcher Peer-to-Peer (p2p)-Software befolgen diese „Regeln“ nicht. Gemeinhin wird ein solches Verhalten als „Snatch and Leave“ (snl) bezeichnet, da Peers mit der kompletten Datei gleich nach Beenden des Downloads das p2p-Programm beendeten. Als Reaktion auf dieses Verhalten haben einige Nutzer einen eigenen (ALT-)Tracker erstellt oder sind einem solchen beigetreten. Ziel ist es, dass nur Nutzer bei einem ALT (Anti-Leech-Tracker) genannten Tracker downloaden, die sich an minimale Regeln halten. Die wohl wichtigste Regel lautet: Gib weiter, was du bekommen hast. Wer zu wenig „seedet“ (hochlädt), also eine zu niedrige Ratio hat, wird gebannt. Die Ratio ergibt sich durch Division der durchschnittlichen Uploadrate durch die durchschnittliche Downloadrate. Eine Ratio von 1 oder höher heißt, dass gleichviel oder mehr gegeben wurde als genommen.
Die Folgen, die entstehen, wenn zu viele Benutzer nehmen möchten ohne zu geben, führten bereits in der Vergangenheit in anderen P2P-Netzen zu großen Problemen. Im Edonkey2000-Netz reagierte man zum Beispiel mit der Implementierung eines Credit-Systems, das dieses Problem dadurch löst, dass man mehr nehmen kann je mehr man gibt, indem man für das Hochladen Punkte bekommt. Ganz allgemein: Ein P2P-Netz kann sich vor den Problemen durch Leechen schützen, indem es entweder ein solches Credit-System bietet, oder den Benutzern nicht erlaubt den Upload im Client zu minimieren, was jedoch nicht wirklich möglich ist, kann man doch quelloffene Clients als Benutzer leicht modifizieren oder einen eigenen Client entwickeln.
Einige Nutzer (vorwiegend User von ALT-Trackern) haben sich, um noch schneller Daten zu senden/empfangen, einen Server zugelegt. Server haben meist eine sehr gute Anbindung von mehreren Dutzend Megabit pro Sekunde, weshalb die Verteilung von Dateien sehr viel schneller vonstatten geht als vom heimischen Computer. Torrents sind manchmal mit dem Zusatz „webseed“ oder „webseeding“ versehen, was heißt, dass ein oder mehrere Server als Seeder (Uploader) funktionieren. Im Endeffekt führt dies zu einer höheren Geschwindigkeit. Durch günstige Preise von Servern nimmt die Verbreitung zu.
Nachteilig kann sich eine hohe Upload-Geschwindigkeit vieler User für Personen mit geringem Upstream auswirken. Für solche ist es viel schwieriger, eine gute Ratio zu erreichen, da meist Leute mit viel Upstream bevorzugt werden. Folglich kann es sein, dass diese User trotz guter Absichten von dem ALT verbannt werden, weil sie einfach ihre Ratio nicht halten konnten.
Clients
- BitTorrent Client - Original-Client (Windows,Linux, Mac OS X), Open Source.
- Azureus - plattformunabhängig, Open Source, Java, meistgenutzter Client
- BitComet – Windows, proprietär, C++
- µTorrent – Windows, proprietär, C++, leichtgewichtiger Client
Außer diesen meistgenutzten, weitestgehend Feature-kompatiblen Clients gibt es noch viele weitere, zum Beispiel:
- ABC – Windows, Open Source (GPL), Python
- eXeem – Entwicklung eingestellt, enthält Werbung
- KTorrent – KDE, Open Source (GPL)
- MLDonkey – plattformunabhängig, Open Source (GPL), Objective CAML, unterstützt auch die Protokolle eDonkey2000/eMule, Overnet, Emule-kademlia, Fasttrack, FileTP, Gnutella1, Gnutella2
- Opera ab Version 9.0 (bisher nur als Beta-Version verfügbar)
- Rufus – plattformunabhängig, Windows, Open Source, Python
- Shareaza – Windows, Open Source (GPL), C++, unterstützt auch die Protokolle Gnutella2, Gnutella1, eDonkey2000/eMule
- Tomato Torrent – Mac OS X, Open Source
- Transmission (P2P) – plattformunabhängig, Open Source (MIT-Lizenz)
Da an dieser Stelle unmöglich alle Clients aufgezählt werden können, siehe auch:
- Comparison of BitTorrent clients – Vergleich von BitTorrent-Clients aus der englischen Wikipedia
Weblinks
- Offizielle BitTorrent-Website (englisch)
- Interview mit Bram Cohen
- Linkkatalog zum Thema BitTorrent bei odp.org (ehemals DMOZ) (englisch)
- Wikipedia:WikiReader/p2p-filesharing
- BitTorrent Guide & FAQ