Wie funktioniert Bittorrent?

34

Ich möchte mehr über die bittorrente Art der Dateifreigabe erfahren. Ich bin ein technisch fortgeschrittener Benutzer (Programmierer), daher ist technisch fortgeschrittenes Material kein Problem, aber es sollte präzise und auf den Punkt gebracht werden. Ich brauche ein gutes Ressourcenbuch / Web, das die gesamte Bittorrent-Architektur erklärt.

Ich interessiere mich nicht für Details, nur für die Gesamtarchitektur und die Terminologie wie Samen, Kollegen usw.

Irgendwelche Vorschläge?

erforschen
quelle

Antworten:

29

Überblick über die Funktionsweise von Bittorrent:

  • Sie haben Kollegen und einen Tracker . Alle Peers, die zu einem bestimmten Zeitpunkt zusammen sind, sind der Schwarm . Die übliche Situation ist, dass ein oder mehrere Peers den kompletten Dateisatz haben und ihn anderen Peers zur Verfügung stellen möchten.

  • Ein Peer erwirbt eine Torrent-Datei, die unter anderem Folgendes enthält: A) den SHA-1-Hash der Dateigruppe, B) die URL des Trackers und C) die Anzahl der Teile, in die die Datei unterteilt ist ein SHA-1-Hash von jedem Stück. Die Größe der Stücke wird durch den Strom selbst bestimmt.

  • Der Peer stellt dann unter Verwendung der im Torrent angegebenen URL eine Verbindung zum Tracker her. Der Tracker antwortet mit einer Liste von Peers. Tracker sprechen HTTP über Port 80 oder 443.

  • Der Peer wählt dann unter Verwendung der Informationen aus dem Tracker einen anderen Peer aus und kontaktiert ihn direkt, um eine Austauschsitzung einzurichten und zu versuchen, ein Teil zu erhalten. Beachten Sie, dass Austauschsitzungen direkt von den Peers durchgeführt werden und der Tracker NICHT an der Übertragung beteiligt ist. Der Tracker liefert nur Informationen.

  • Sobald der Peer ein Teil hat, überprüft er es mit dem SHA-1-Hash und schreibt es in die Datei. Es kann dieses Teil dann anbieten, wenn es einen anderen Partner auswählt. Nachfolgende Austauschsitzungen beinhalten das "Handeln" von Stücken. Ich glaube, dass Gleichaltrige Ihnen im Allgemeinen nur das erste Stück geben werden, wenn Sie keine anderen Stücke haben.

  • Der Peer konsultiert den Tracker von Zeit zu Zeit erneut, um eine aktualisierte Liste der Peers zu erhalten. Der Peer muss nicht warten, bis ein Austausch beendet ist, bevor er einen anderen beginnt, wenn er mehrere Teile hat. Wenn der Peer also mehrere Teile hat, kann die Übertragung wirklich beschleunigt werden. Dies ist der Grund, warum Torrents langsam starten, aber schnell an Geschwindigkeit gewinnen, wenn der Peer Teile erwirbt.

  • Wenn ein Peer alle Teile hat, wird die gesamte Datei mit dem SHA-1-Hash der Dateigruppe verglichen. Dann wird es ein Seeder und tut jetzt nichts anderes, als dem Dateisatz zu helfen, hochverfügbarer zu werden. Gleichaltrige, die nicht alle Teile haben, sind Blutegel .

  • Wenn ein Torrent keine Samen hat, ist er tot. Wenn jedoch eine vollständige Kopie der Datei zwischen allen Stücken existiert, die von allen Peers gehalten werden, werden sie schließlich handeln, um eine vollständige Kopie unter sich zu erhalten.

  • Der SHA-1-Hash gibt an, wie der Tracker und die Peers "wissen", welche Datei überschwemmt werden soll. Dateinamen im Torrent werden nicht zur Identifizierung der Daten verwendet. Teile, die nicht mit den Hashes in der Torrent-Datei abgeglichen werden, werden verworfen. Gleichaltrige, die ständig schlechte Nachrichten senden, werden von anderen Gleichaltrigen gebremst und können schließlich keine Verbindung zu jemandem im Schwarm herstellen.

  • Eine kleinere Stückzahl bedeutet, dass der Torrent robuster ist, da Peers schneller mit Stücken handeln können, aber es müssen auch mehr Hashes von Stücken in der Torrent-Datei aufgelistet werden, und daher kann die Torrent-Datei groß sein.

  • Wenn Sie etwas über BitTorrent veröffentlichen, ist es am besten, die Datei so lange zu sortieren, wie Sie sie verfügbar machen möchten. Andere Peers werden Ihnen helfen, da die meisten BitTorrent-Programme Algorithmen implementieren, die es bevorzugen, Dinge auf möglichst viele Peers zu verteilen, um die Anzahl der gleichzeitigen Verbindungen zu maximieren. Auf diese Weise kann BitTorrent Sie beim Veröffentlichen unterstützen und Bandbreitenkosten sparen.

LawrenceC
quelle
1
Eine schöne Antwort! Ein Witz: Ich glaube, Samen bevorzugen es, am seltensten zu säen , nicht die ersten Stücke zuerst. Ich bin mir nicht sicher, ob es sich um einen Algorithmus handelt, aber das habe ich einmal von einem Torrent-Programm erhalten, als ich an den Einstellungen herumgespielt habe.
Gallifreyan,
8

Es gibt ein ziemlich schönes Video auf YouTube , das dies auf visuelle Weise mit Pappausschnitten erklärt. Es ist keine hochtechnische Erklärung, aber es ist großartig, um den Menschen die Idee hinter BitTorrent auf einfache und verständliche Weise zu erklären.

wie bittorrent auf youtube funktioniert

nhinkle
quelle
3
+1 Nützliches Video. Hat es meinem Vater gezeigt. Er hatte danach keine Fragen mehr. Erstaunlich. :)
zero2cx
2

Eine Übersicht über das Peer-Nachrichten-Protokoll .

Der Client kann zwei Protokolle verwenden, um Informationen mit Peers zu teilen, TCP oder uTP (über UDP). Diese Daten folgen der Bittorrent-Protokollspezifikation , Abschnitt Peer-Nachrichten .

Aus programmtechnischen Gründen muss eine Verbindung zwischen zwei Clients hergestellt werden. Nachdem die Verbindung hergestellt wurde (über TCP oder uTP), wird vom Client ein BitTorrent-Handshake initiiert, der die Informationen des Remote-Peers (IP & Port) vom Tracker oder über DHT abruft . Dieser Handshake enthält den info_hash , der den Torrent angibt , über den die Verbindung hergestellt werden soll.

Sehen wir uns zuerst an, wie Torrent-Daten durch das Protokoll gekürzt werden. Ein Stück ist ein Teil der Daten , die Sie über das Netzwerk gemeinsam nutzen. Nicht zu verwechseln mit einem Block , der ein Teil eines Stücks ist, das in ein Paket eingewickelt ist. Der Block ist die Granularität ein teilen Stück durch Pakete und ein Stück ist die Granularität ein Torrent durch Peers zu teilen.

Wenn die Verbindung hergestellt wird, sind beide Clients (lokaler Client, den ich LC und Remote-Client, RC, nenne ) verstopft und uninteressiert . Choked bedeutet "Ich werde keine Ihrer Nachrichten beantworten, die zu beschäftigt sind, aber ich kann sie berücksichtigen". Unchocked bedeutet daher "Ich werde Ihre Nachrichten beantworten". Interessiert bedeutet natürlich, dass ich einige Stücke haben möchte , die Sie haben. Daher könnte der Zustand einer Verbindung zwischen zwei Peers mit diesen vier Zuständen definiert werden: LC_chocked ?, LC_interested ?, RC_chocked ?, RC_interested? RC warnen, dass ich (un) erstickt oder (un) interessiert binIch muss ihm (un) interessierte und (un) verstopfte Mitteilungen senden und umgekehrt.

Um sich gegenseitig darüber zu informieren, welche Teile sie haben, können sie unmittelbar nach dem Handshake eine Bitfield- Nachricht senden . Wie der Name schon sagt, handelt es sich um eine Bitfolge, bei der jedes Bit gesetzt ist, 1wenn der Client dieses besondere Stück hat , 0ansonsten.

Wenn LC also blockiert und interessiert ist und RC ihn nicht blockiert hat, kann er eine Anforderungsnachricht senden, um nach einem Block zu fragen, der zu einem Teil gehört, von dem er weiß, dass LC ihn dank einer Bitfeldnachricht hat .

Wenn ein Peer die gesamte erhalten hat Stück , konnte er einen schicken Stück Nachricht alle Remote - Peers ist es zu informieren , damit sie die zugehörige aktualisieren bitfield sie halten.

Das ist eine sehr grundlegende Übersicht, und natürlich werden hier nicht alle Details bereitgestellt, wie der Drosselungsalgorithmus usw. Wenn Sie weitere Details wünschen, überprüfen Sie die beiden Links, die ich oben im Kommentarbereich gepostet habe (als neuer Benutzer kann ich das) Es gibt nicht mehr als zwei Links in einem Beitrag.

Jules Randolph
quelle