Für Benutzer, die große Dateien wie beispielsweise das CD-Image einer Linux-Distribution herunterladen, strapaziert es die Geduld und ohne Flatrate auch den Geldbeutel, wenn der Download trotz schneller Internet-Anbindung kriecht. Anbieter, die ein Interesse an der Verbreitung ihrer Software haben, möchten ihrer Fan-Gemeinde dies ersparen.
Als Entlastung für beide Seiten funktioniert das BitTorrent-Konzept: Wer große Datenmengen – wie eine oder mehrere CD-Image-Dateien – zur Verfügung stellt, ist im BitTorrent-Vokabular der erste "Seed" (deutsch: Saat/Samen). Die angebotenen Dateien werden unterteilt in kleinere Pakete; hat ein BitTorrent-Downloader das erste Paket heruntergeladen, stellt er selbst es ebenfalls zum Download bereit und wird damit zum "Peer"; einer Art Mirror-Server, der aber nur Teile des Gesamt-Downloads anbietet.
Der nächste Benutzer, der das Angebot herunterladen möchte, bezieht nun von einer dieser Quellen – Seed oder Peer – die einzelnen Pakete und wird dadurch ebenfalls zum Peer. Hat ein Teilnehmer sämtliche Pakete gesammelt und seinen BitTorrent-Client nicht beendet, erfüllt er nur noch die Funktion eines Servers: Er bietet den kompletten Download an, ohne herunterzuladen; das bedeutet, er wird ebenfalls zum Seed.
Dieses Konzept verteilt die benötigte Gesamtbandbreite auf alle Anwender; je mehr Interessenten es für eine Datei gibt, desto mehr Anbieter gibt es. Bei ausreichender Anzahl Peers und Seeds braucht der ursprüngliche Anbieter sich nicht mehr um die Bandbreite seines Servers zu sorgen, während die "Kunden" sich über schnelle Downloads freuen. Wenige Peers gibt es im Idealfall nur dann, wenn insgesamt wenig Interesse an einem Angebot besteht und somit die primäre Quelle ebenfalls kein Problem mit der Versorgung hat.
Zur Koordination dieses Vorgangs dient ein so genannter Tracker. Das ist ein Server, bei dem sich Peers anmelden und dem sie regelmäßig Bescheid geben, welche Pakete sie schon heruntergeladen haben und selbst anbieten. Meldet sich ein neuer Peer beim Tracker, erhält er eine Liste angemeldeter Peers und Seeds, bei denen er mit dem Download beginnen kann.
Um den zuständigen Tracker zu finden, gibt es für jedes Angebot eine Torrent-Datei, die die wichtigsten Informationen zusammenfasst: Außer der Internet-Adresse des Trackers stehen darin die enthaltenen Dateien nebst Größe sowie ein Hash-Code zur eindeutigen Identifikation. Da der Tracker selbst keinen Download anbietet, benötigt er zwar eine konstante, aber keine besonders schnelle Internet-Anbindung.
Der Anwender benötigt also die Torrent-Datei, die zum gesuchten Angebot gehört, um mit dem Download zu beginnen. Solche Dateien liegen im Internet auf Web-Servern, die man über eine Suchmaschine oder Links findet; wer nach der Linux-Distribution Fedora sucht, fahndet bei seiner Lieblingssuchmaschine nach den Begriffen Fedora und Torrent und landet schnell bei der richtigen Adresse. Startpunkte bietet auch die BitTorrent-Homepage [1].
Unter Debian ab der Version Sarge gibt es ein fertiges BitTorrent-Programmpaket; der Befehl apt-get install bittorrent installiert es. Unter anderen Distributionen verwenden Sie das Archiv auf der Heft-CD und entpacken es beispielsweise in Ihrem Home-Verzeichnis mit tar -xzf BitTorrent-3.4.2.tar.gz.
Der BitTorrent-Client ist in der Programmiersprache Python geschrieben und setzt deshalb zum Starten weitere Programme voraus: Neben dem Python-Basispaket braucht das grafische Client-Programm den Python-Zusatz für wxWidgets, das sich um die Fenstergestaltung kümmert. Unter Suse heißt das entsprechende Paket python-wxGTK, unter Mandrake wxPythonGTK.
Nun speichern Sie die Torrent-Datei auf Ihrer Festplatte und starten den Download mit dem grafischen BitTorrent-Client im neuen Verzeichnis BitTorrent-3.4.2:
python btdownloadgui.py tettnang-binary-i386-iso.torrent
Dieses Beispiel lädt die Fedora-Ausgabe "Tettnang" (Core 2) herunter. Debian-Benutzern reicht der Befehl:
btdownloadgui tettnang-binary-i386-iso.torrent
Nach Angabe des gewünschten Zielverzeichnisses startet dann der Download (Abbildung 1).
Alternativ zum grafischen Client bietet BitTorrent den textbasierten Download. Verwenden Sie für ein Textfenster das Programm btdownloadcurses.py an Stelle von btdownloadgui.py oder das reine Kommandozeilenprogramm btdownloadheadless.py.
Zum Starten mehrerer Downloads auf einmal dient der Aufruf
python btlaunchmanycurses.py ~/torrents
Dieses Beispiel verwendet alle Torrent-Dateien im Verzeichnis ~/torrents/ und startet die Downloads in einem gemeinsamen Textfenster (Abbildung 2). Ein grafisches Werkzeug gibt es für den mehrfachen Download nicht, allerdings laufen mehrere Clients problemlos gleichzeitig.
Mehr Informationen über den Inhalt eines Torrent-Angebots verschafft Ihnen das Werkzeug btshowmetainfo.py: Rufen Sie es gefolgt vom Namen einer Torrent-Datei auf, erfahren Sie unter anderem Namen und Größe der enthaltenen Dateien:
python btshowmetainfo.py tettnang-binary-i386-iso.torrent
Ist ein Torrent-Angebot so weit verbreitet, dass sich für jede Download-Anfrage ein freier Peer oder Seed findet, erreicht der Client eine sehr effiziente Download-Rate. Wenn ein Peer jedoch mehrere Anfragen gleichzeitig erhält, muss er entscheiden, welche davon er zuerst versorgt; er wählt stets den Kandidaten, der ihm im Gegenzug mehr Pakete bietet. So gibt es die ersten Pakete für einen neuen Peer meist mit sehr langsamer Geschwindigkeit, bietet er diese dann aber zur Weitergabe an, steigt die Download-Rate.
Dieses Verfahren verhindert, dass Clients nur herunterladen, ohne Pakete weiterzugeben; denn dies würde die Lastenverteilung aufheben. Problematisch ist dies für Downloader, zu denen eine Firewall oder ein Router Kontakte von außen unterbindet; sie haben nicht die Möglichkeit, heruntergeladene Pakete anzubieten und bleiben daher bei einer geringen Download-Rate, wenn es mehr Anfragen als Anbieter gibt.
Wer seine Firewall selbst konfiguriert, löst dieses Problem, indem er die von BitTorrent verwendeten TCP-Ports 6881-6889 für eingehende Verbindungen freischaltet. Sonst lernen von außen zugängliche Peers ihre abgeschirmten Kollegen erst dann kennen, wenn sie von ihnen durch eine Anfrage kontaktiert wurden, denn bei der Kontaktaufnahme teilen sie gleichzeitig ihr eigenes Angebot direkt mit; so besteht für Firewall-geschützte Clients trotzdem die Hoffnung auf ein schnelles Ja zur Download-Anfrage, ihr Bekannheitsgrad und damit ihre Download-Geschwindigkeit wächst aber wesentlich langsamer.
Glossar
Mirror-Server
Um einen Server zu entlasten, stellen Mirror-Server den gleichen Inhalt an anderem Ort ebenfalls zur Verfügung.
Hash
(engl. für "Durcheinander") Ein mathematischer Algorithmus generiert aus einer Datei eine Zahlenkette (Hash); diese Rechnung lässt sich jedoch nicht umkehren. So entstehen aus gleicher Eingabe immer gleiche Hash-Codes und aus verschiedenen Eingaben immer unterschiedliche Ergebnisse; eine Datei lässt sich so über ihren Hash-Code eindeutig identifizieren.
Python
Eine Programmiersprache u. a. für Linux und andere Unix-System, Windows, OS/2 und Mac OS. Als Skriptsprache benötigt sie keinen Compiler zum Übersetzen des Programmtextes in maschinenlesbare Form, dafür braucht man zum Ausführen eines Python-Programms den Python-Interpreter.
Infos
[1] BitTorrent: http://bitconjurer.org/BitTorrent/