2009-08-26 16 views
53

Estoy codificando una implementación de p2p que me gustaría descentralizar, sin embargo estoy teniendo problemas para entender 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 compañeros están almacenados en el archivo torrent real?¿Cómo funciona DHT en torrentes?

Respuesta

48

Con torrents sin tracker/DHT, las direcciones IP del par se almacenan en el DHT utilizando el BitTorrent infohash como la clave. Como todo lo que hace un rastreador es, básicamente, responder a solicitudes de envío/recepción, esta funcionalidad corresponde exactamente a la interfaz que proporciona una DHT (tabla de hash distribuida): le permite buscar y almacenar direcciones IP en DHT mediante infohash.

Por lo tanto, una solicitud de "obtención" buscaría un infohash BT y devolvería un conjunto de direcciones IP. Un "poner" almacena una dirección IP para un infohash dado. Esto corresponde a la solicitud de "anunciar" que de otro modo haría al rastreador para recibir un diccionario de direcciones IP iguales.

En una DHT, los pares se asignan aleatoriamente a almacenar valores que pertenecen a una pequeña fracción del espacio clave; el hash asegura 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 las listas de direcciones IP de una determinada clave.

+1

¿de dónde obtiene el número de puerto para cada IP? –

+0

el puerto está incluido junto con la dirección IP del par: http://www.bittorrent.org/beps/bep_0005.html#contact-encoding – cce

+1

¿Los valores del espacio de claves se pierden o caducan? – schulwitz

10

¿Qué ocurre con BitTorrent y una DHT es que al principio BitTorrent utiliza la información incrustada en el archivo torrent para ir a cualquiera de un rastreador o una de un conjunto de nodos de la DHT. Luego, una vez que encuentra un nodo, puede seguir buscando otros y persistir utilizando el DHT sin necesidad de un rastreador centralizado para mantenerlo.

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

0

Los nodos DHT tienen identificadores únicos, denominados ID de nodo. Los identificadores de nodo se eligen al azar desde el 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 detallada, resultando en

Lo que los hace más óptimos que su predecesor "Kademlia" que usa enteros simples sin signo: distancia (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 defectuosa.

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á.

Cuestiones relacionadas