¿Cómo ayuda el uso de DHT por parte de BitTorrent a sus pares a encontrar archivos de destino?

¿Cómo ayuda el uso de DHT por parte de BitTorrent a sus pares a encontrar archivos de destino?

Leí sobre Kademlia y entendí sus conceptos básicos. Los conceptos básicos de BitTorrent también se entienden de forma sencilla. Pero ambos juntos no tienen ningún sentido.

Por lo que he podido encontrar en línea, el hash del archivo de destino se usa para generar una identificación de destino para buscar en el DHT, luego se supone que esa búsqueda encuentra pares cercanos a la identificación de destino. Vale, tiene sentido. Excepto que no es así en absoluto, ¿cómo es posible que el par que tiene una identificación cercana a la identificación de destino sepa algo sobre seeders u otros pares en la red?

Cualquier intento de investigar la relevancia ha dado como resultado la misma explicación de que el algoritmo DHT usa su Kademlianess para llegar a un par cuya identificación de par está cerca de la identificación de destino, pero esto no responde la pregunta.

Respuesta1

Según tengo entendido, el 'par con el ID de destino' sabe acerca de los sembradores u otros pares porque esos pares también utilizaron exactamente el mismo procedimiento paraalmacenarinformación sobre ellos mismos en ese lugar. El par con esa identificación es simplemente una ubicación que todos los demás pares acuerdan para almacenar/recuperar datos relacionados con algo u otro.


DHT es una "Tabla Hash Distribuida", donde el "tabla de picadillo" significa una estructura de datos que almacena asignaciones {clave⇒valor} (también llamada dict, matriz asociativa, tabla de búsqueda, etc.). Un programa que utiliza una tabla hash puedeponer (clave, valor)y la tabla hash almacena la información {clave⇒valor} en la dirección X; entonces una parte diferente del programa puedeobtener la clave)y la tabla hash recupera el valor de la dirección X.

Cuando se usa una tabla hash típica dentro de un programa, usaría un procedimiento similar para generar una ubicación de memoria para una clave de búsqueda determinada cuando se almacena (el hash) y haría lo mismo cuando sea necesario recuperarla. Las bases de datos, sistemas de archivos, Git, etc. también hacen lo mismo en varios niveles; por ejemplo, .git/objects/ de Git.

DHT es lo mismo, sólo que a nivel de red (la parte "distribuida"). Aunque el DHT de BitTorrent sabe algunas cosas específicas de BT, fundamentalmente todavía sólo almacena datos que los clientes de BitTorrent necesitan almacenar en una ubicación acordada. Como dice la especificación Kad:

Para almacenar un par <clave, valor>, un participante localiza...

Lo que significa que en términos generales se puede integrar en un protocolo de intercambio de archivos como este:

  1. El nodo de origen S (que tiene el archivo) calcula la ID y envía una operación "Almacenar" a través de la red DHT, almacenando la información {clave: fileID ⇒ valor: "disponible en el nodo S"} que va al nodo X que esté más cercano para la clave (ID de archivo).

  2. La información {clave: ID de archivo ⇒ valor: "disponible en el nodo S"} se almacena en el nodo X.

  3. Otro nodo C par/cliente aprende el ID del archivo y envía una operación de "Recuperación" a través de la red DHT, que recupera el valor "disponible en el nodo S" del nodo X.

ElBitTorrentDHTse implementa de manera similar a ese ejemplo, solo se llama a la operación "almacenar" announce_peery no sobrescribe el valor por completo, sino que solo agrega los datos del locutor a la lista de pares ya almacenada.

información relacionada