Bei trackerlosen / DHT-Torrents werden Peer-IP-Adressen im DHT gespeichert, wobei der BitTorrent-Infohash als Schlüssel verwendet wird. Da ein Tracker im Grunde genommen nur auf Put / Get-Anfragen reagiert, entspricht diese Funktionalität genau der Schnittstelle, die eine DHT (Distributed Hash Table) bietet: Sie können IP-Adressen per Infohash im DHT suchen und speichern.
Eine "get" -Anforderung würde also einen BT-Infohash nachschlagen und einen Satz von IP-Adressen zurückgeben. Ein "Put" speichert eine IP-Adresse für einen bestimmten Infohash. Dies entspricht der "Ansage" -Anforderung, die Sie andernfalls an den Tracker richten würden, um ein Wörterbuch mit Peer-IP-Adressen zu erhalten.
In einem DHT werden Peers zufällig zugewiesen, um Werte zu speichern, die zu einem kleinen Bruchteil des Schlüsselraums gehören. Das Hashing stellt sicher, dass die Schlüssel zufällig auf die teilnehmenden Peers verteilt werden. Das DHT-Protokoll ( Kademlia for BitTorrent) stellt sicher, dass Put / Get-Anforderungen effizient an die Peers weitergeleitet werden, die für die Verwaltung der IP-Adresslisten eines bestimmten Schlüssels verantwortlich sind.
Die allgemeine Theorie findet sich in Wikipedia's Artikel über Kademlia . Die in bittorrent verwendete spezifische Protokollspezifikation finden Sie hier: http://wiki.theory.org/BitTorrentDraftDHTProtocol
quelle
Was mit Bittorrent und einem DHT passiert, ist, dass Bittorrent zu Beginn Informationen verwendet, die in die Torrent-Datei eingebettet sind, um entweder zu einem Tracker oder einem von mehreren Knoten des DHT zu gelangen. Sobald ein Knoten gefunden wurde, kann er weiterhin andere finden und das DHT weiterhin verwenden, ohne dass ein zentraler Tracker für die Wartung erforderlich ist.
Die ursprünglichen Informationen booten die spätere Verwendung des DHT.
quelle
DHT-Knoten haben eindeutige Kennungen, die als Knoten-ID bezeichnet werden. Knoten-IDs werden zufällig aus demselben 160-Bit-Speicherplatz wie BitTorrent-Info-Hashes ausgewählt. Die Nähe wird durch Vergleichen der Routing-Tabellen der Knoten-ID gemessen. Je näher der Knoten ist, desto detaillierter wird das Ergebnis
Was macht sie dann optimaler als ihre Vorgängerin "Kademlia", die einfache vorzeichenlose ganze Zahlen verwendete: distance (A, B) = | A xor B | Kleinere Werte sind näher. XOR. Abgesehen davon, dass es nicht sicher war, war seine Logik fehlerhaft.
Wenn Ihr Client DHT unterstützt, sind 8 Bytes reserviert, die 0x09 enthalten, gefolgt von einer 2-Byte-Nutzlast mit dem UDP-Port und dem DHT-Knoten. Wenn der Handshake erfolgreich ist, wird der oben genannte Vorgang fortgesetzt.
quelle