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, 1
wenn der Client dieses besondere Stück hat , 0
ansonsten.
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.