BitTorrent

aus WB Wiki; freien Wissensdatenbank rund ums Thema Computer
Version vom 16. August 2008, 21:09 Uhr von Singh (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Ein Filesharing, bzw. Übertragungsprotokoll, von Bram Cohen erfunden.

Anstatt alle Clients von einem Server herunterladen zu lassen, wird der Upload der Anwender auch genutzt und die Daten untereinander versendet. Seine erste Implementierung wurde von ihm in Python programmiert, wird stetig weiterentwickelt und unter der GPL veröffentlicht.

Prinzip

Dateiabhängige Netzwerke

Anders als bei typischen Tauschbörsen in der Form des legendären Napsters, finden sich bei BitTorrent Gruppen abhängig davon, welche Datei sie laden wollen. Es gibt also nicht ein BitTorrent Netz, und jeder Nutzer gibt alle seine Dateien frei. Stattdessen will ein Nutzer zum Beispiel eine Linux Distribution erhalten, so wird er nur mit Kontakten kommunizieren, die auch diese Linux Distribution transferieren.

Finden von Inhalten

Ähnlich wie auch beim FTP, kann man nicht global nach Dateien suchen. Vielmehr muss man meist über das Web auf geeignete Seiten wechseln, um von dort eine .torrent Datei zu erhalten. Diese enthält einen Fingerabdruck der Datei, den Namen, Größe, sowie auch die Addresse des Trackers.

Koordination der Netze via Tracker

Um Quellen zu bestimmten Dateien zu finden, verbindet man sich zu einem sogenannten dateiartspezifischen Tracker. Ähnlich wie auch bei herkömmlichen Übertragungsprotokollen ist dieser Server zwar zentral, das Protokoll kann aber von jedem verwendet werden und ist somit als Ganzes dezentral.

Der Anwender sendet dem Tracker eine Identifikation seiner Datei und erwartet daraufhin Informationen über andere Kontakte.

Der Tracker koordiniert die Übertragungen der BitTorrent Servents, er führt sie sozusagen zusammen.

Formen der Kontakte

Seeder: Er hat 100% der Datei und lädt ausschließlich hoch.

Leecher: Eigentlich Peer, dieser Kontakt hat die Datei nicht vollständig, meist aber in Teilen, die er auch schon weiterverteilt. Er lädt herunter und hoch.

Der Seeder kann ein Server in einem Datenzentrum sein, um die Gesundheit des Torrent zu verbessern. Ohne einen Seeder und ohne Leecher, dessen Stücke sich untereinander ergänzen, kann die Datei nicht komplettiert werden.

Schutz vor Sabotage

Leecher, die nur so schnell sie können herunterladen, aber nicht hochladen wollen (und sich danach wahrscheinlich abmelden werden) stellen ein Problem dar. In neueren Versionen erhält man daher oft Downloadgeschwindigkeit in Abhängigkeit, wie schnell dem Sendenden Host gesendet wird (Gegenseitigkeit). (Falsch anzugeben, man würde sehr schnell hochladen, nur nicht diesem Host, kann nämlich einfach erreicht werden. Dabei ist es egal, dass nirgends Daten ankommen).

Alle größeren Teile eines Torrents werden im .torrent mit Fingerabdruck genannt. Sendet ein Peer falsche Daten, so werden diese vom Servent einfach verworfen, aber nicht weiterverbreitet.


Typischer Ablauf

Beim BitTorrent-Protokoll werden die Dateien die zum Download angeboten werden sollen, zuerst in kleine "Happen" geteilt (z.B. 2 MB); diese werden mit einer SHA1-Checksumme versehen und mit anderen Infos in eine Datei geschrieben, die dann die Dateiendung .torrent oder .tor erhält. Wenn man nun die Datei herunterladen will, benötigt man einen Tracker, dieser hat alle IPs der Downloader - temporär - gespeichert. Wenn das eigene BitTorrentprogramm nun den Torrent geladen hat, verbindet es sich zum Tracker dieser schickt dem eigenen Client IP-Adressen, diese probiert er nun durch und fängt dann an, von den anderen Clients zu laden. Wenn das Programm ein Dateistück komplett geladen hat, überprüft es dieses anhand der SHA1 Checksumme und fängt - je nach Einstellung - an, das Stück an alle bekannten und interessierten IPs zu senden. Als interessiert gelten IPs, die das Stück noch nicht oder noch nicht vollständig geladen haben. Sollte ein heruntergeladenes Dateistück nicht der SHA1 Checksumme entsprechen, wird das betreffende Paket verworfen und neu geladen, so lange, bis jedes Paket vollständig intakt angekommen ist. Dann wird der Leecher zum Seeder. Das heißt, anstatt vorrangig herunterzuladen, lädt der Client jetzt nur noch hoch.

Das BitTorrentprogramm ist gehalten, zu versuchen, das Stück, welches am seltensten im Netzwerk verfügbar ist, hochzuladen, so verteilen sich seltene Teile schneller als oft verfügbare, so kann vermieden werden, dass irgendwann die letzte Quelle mit diesem Paket offline geht und der Torrent nicht mehr vollständig verfügbar ist. Alle Clients sind beim BitTorrent-Protokoll gleichberechtigt, daher gibt es keinen Server im ursprünglichen Sinn, denn alle Programme sind Server und Client gleichzeitig - je nachdem ob sie hoch- oder runterladen. Der User, der ursprünglich die Datei(en) zur Verfügung gestellt hat, kann (theoretisch, nachdem er die Datei einmal hochgeladen hat, das Seeden beenden. Das ist natürlich nur möglich, sofern alle Clients weiterhin verfügbar und alle Übertragungen fehlerfrei verlaufen sind.

Vor- / Nachteile von BitTorrent

++Dateien sind konsistent, egal wie schlecht die Verbindung ist

++Populäre Dateien sind extrem schnell und wirtschaftlich verfügbar

++Die Daten sind schnell verteilbar, da die Zeitverzögerung des Hochladens zum Server entfällt

+Der Betreiber kann entweder mehr zum selben Preis anbieten oder gleich viel zu einem billigeren Preis.

+OpenSource unter GPL

+Große Programmauswahl - sowohl bei Trackern als auch bei Clients

--Es ist Fachwissen vonnöten, sofern (NAT-)Router zur Einwahl benutzt wird

-Sollte der Tracker nicht verfügbar sein, ist der Download bei den meisten BitTorrent Clients nicht möglich - das File ist tot.

-Sollten sich wenige (bis keine) verbundenen Peers finden, so ist die Distribution langsam (bis eingestellt); man profitiert dann auch kaum von den Kostenvorteilen gegenüber FTP

-meist langsamer als FTP/HTTP (bei guter Anbindung der Server [im Vergleich zu BT ohne Server als Seeder])


Programme / Servents

BitTorrent ist ein offenes Protokoll. Daher gibt es außern dem offiziellen Programm viele andere.

BitTorrent - die offizielle Anwendung von Bram Cohen. Da sie in Python geschrieben ist, ist sie relativ groß und ressourcenaufwendig.

Azureus - Java basierter Servent, ständig in Entwicklung und sehr fortgeschritten. Wegen Java auch ressourcenaufwendig.

µTorrent - sehr kleines Programm, nativ für Windows geschrieben: Klein, effizient und schnell. Es bietet sogar ziemlich viele Funktionen.

BitComet - einer der ersten weit verbreiteten Programme, nativ für Windows geschrieben in C++, daher wohl populär. Leider nicht sehr seriös. BitComet hält das BitTorrent-Protokoll nicht ein (verbindet viel zu oft, 90% des Uploads an BitComets, missachtet Flaggen in Torrents, ...) und telefoniert scheinbar aggressiv nach Hause. Der Programmierer äußert sich nicht zu Vorfällen/Kritik. Leider ist BitComet sehr weit verbreitet.

yABC yet Another BitTorrent Client - ein auf BitTornado basierender Client. Er ist auch in Python geschrieben und sein Name bedeutet soviel wie "noch ein anderes torrent Programm".


Spezialbegriffserklärung

Seeden

Die Aktion die ausgeführt wird, wenn ein Client eine Datei (aus dem Torrent über BitTorrent) hochlädt.

Seeder

Ein Client (oder die Person die hinter dem Client steht), welcher einen Torrent vollständig lokal verfügbar hat und ihn nun nur noch ins Netz hochlädt.

Leechen

Das Herunterladen von Dateistücken über das BitTorrent-Protokoll, wobei der Torrent (logischerweise) nicht vollständig lokal vorhanden ist.

Leecher

1. Ein Client (oder die Person hinter ihm), die Dateistücke über das BitTorrentprotokoll herunterlädt. 2. Ein Schimpfwort für eine Person die das BitTorrent-Protokoll benutzt, um Daten herunterzuladen, die heruntergeladenen Dateien dann aber nicht an andere hochlädt. In den meisten Fällen wird von der Person der Torrent gestoppt, sobald die Datei fertig ist und somit den Upload (falls er überhaupt stattgefunden hat) beendet.

Weblinks

Offizielle Website
Torrent Suchmaschine