¿Cómo funciona DHT en torrents?


Estoy codificando una implementación p2p que me gustaría hacer descentralizada, sin embargo, estoy teniendo algunos problemas para comprender cómo funciona DHT en protocolos como bittorrent. ¿Cómo sabe el cliente dónde están los pares si no hay un rastreador? ¿Los pares se almacenan en el archivo torrent real?

Author: Christopher Tarquini, 2009-08-26

4 answers

Con torrents trackerless/DHT, las direcciones IP de pares se almacenan en el DHT utilizando el infohash de BitTorrent como clave. Dado que todo lo que hace un tracker, básicamente, es responder a las solicitudes put / get, esta funcionalidad corresponde exactamente a la interfaz que proporciona un DHT (distributed hash table): le permite buscar y almacenar direcciones IP en el DHT de infohash.

Así que una solicitud "get" buscaría un BT infohash y devolvería un conjunto de direcciones IP. Un" put " almacena una dirección IP para un determinado infohash. Esto corresponde a la solicitud de "anunciar" que de otra manera haría al rastreador para recibir un diccionario de direcciones IP de pares.

En un DHT, los pares se asignan aleatoriamente para almacenar valores pertenecientes a una pequeña fracción del espacio de claves; el hash garantiza que las claves se distribuyan aleatoriamente entre los pares participantes. El protocolo DHT (Kademlia para BitTorrent) garantiza que las solicitudes put / get se enruten de manera eficiente a los pares responsables de mantener la clave dada Listas de direcciones IP.

 52
Author: cce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-17 06:03:29

La teoría general se puede encontrar en el artículo de wikipedia sobre Kademlia. La especificación de protocolo específica utilizada en bittorrent está aquí: http://wiki.theory.org/BitTorrentDraftDHTProtocol

 14
Author: bdonlan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-02 06:09:03

Lo que sucede con bittorrent y un DHT es que al principio bittorrent utiliza información incrustada en el archivo torrent para ir a un rastreador o a uno de un conjunto de nodos del DHT. Luego, una vez que encuentra un nodo, puede continuar encontrando otros y persistir usando el DHT sin necesidad de un rastreador centralizado para mantenerlo.

La información original arranca el uso posterior del DHT.

 10
Author: DJ Capelis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-11 10:36:44

Los nodos DHT tienen identificadores únicos, denominados, Node ID. Los ID de nodo se eligen al azar del mismo espacio de 160 bits que los hashes de información de BitTorrent. La cercanía se mide comparando las tablas de enrutamiento de Node ID, cuanto más cerca esté el nodo, más detallado, lo que resulta en

Lo que entonces los hace más óptimos que su predecesor "Kademlia" que usaba enteros simples sin signo: distance(A,B) = |A xor B| Los valores más pequeños están más cerca. XOR. Además de no ser seguro, su lógica era defectuoso.

Si su cliente admite DHT, hay 8 bytes reservados en los que contiene 0x09 seguido de una carga útil de 2 bytes con el puerto UDP y el nodo DHT. Si el apretón de manos es exitoso, lo anterior continuará.

 0
Author: AndreasRZA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-16 13:22:32