Resumen
¿Cómo puede un nuevo cliente unirse a un enjambre sin un rastreador o el conocimiento de al menos un miembro del enjambre con el que intercambiar pares?
No puedes Es imposible.*
* (A menos que un nodo en su red de área local ya sea un nodo en el DHT. En este caso, podría usar un mecanismo de transmisión, como Avahi, para "descubrir" este par y arrancar de ellos. Pero cómo ¿Se reinician ellos mismos? Eventualmente, se encontrará con una situación en la que necesita conectarse a Internet público. Y el Internet público es solo de unidifusión, no de multidifusión, por lo que está obligado a usar listas predeterminadas de pares).
Referencias
Bittorrent DHT se implementa a través de un protocolo conocido como Kademlia , que es un caso especial del concepto teórico de una tabla hash distribuida .
Exposición
Con el protocolo Kademlia, cuando te unes a la red, pasas por un procedimiento de arranque , que requiere que sepas, de antemano , la dirección IP y el puerto de al menos un nodo que ya participa en la red DHT. El rastreador al que se conecta, por ejemplo, puede ser un nodo DHT. Una vez que esté conectado a un nodo DHT, procederá a descargar información del DHT, que le proporciona información de conectividad para más nodos, y luego navegará esa estructura de "gráfico" para obtener conexiones a más y más nodos, que pueden proporcionar ambos conectividad a otros nodos y datos de carga útil (fragmentos de la descarga).
Creo que su pregunta real en negrita, la de cómo unirse a una red DHT de Kademlia sin conocer a ningún otro miembro, se basa en una suposición falsa.
La respuesta simple a su pregunta en negrita es que no . Si no conoce CUALQUIER información sobre siquiera un host que pueda contener metadatos DHT, está atascado, ni siquiera puede comenzar. Quiero decir, claro, podrías intentar por fuerza bruta descubrir una IP en Internet pública con un puerto abierto que transmita información DHT. Pero lo más probable es que su cliente BT esté codificado con alguna IP estática específica o DNS que se resuelva en un nodo DHT estable, que solo proporciona los metadatos DHT.
Básicamente, el DHT solo está tan descentralizado como el mecanismo de unión, y debido a que el mecanismo de unión es bastante frágil (¡no hay forma de "transmitir" por todo Internet! Por lo que debe unidifusión a un host preasignado individual para obtener el DHT datos), Kademlia DHT no está realmente descentralizada. No en el sentido más estricto de la palabra.
Imagine este escenario: alguien que quiere que se detenga P2P sale y prepara un ataque contra todos los nodos DHT estables de uso común que se utilizan para el arranque. Una vez que han organizado su ataque, lo lanzan a todos los nodos a la vez. zas ; Todos los nodos DHT de arranque están inactivos de una sola vez. ¿Ahora que? Estás atascado con la conexión a rastreadores centralizados para descargar listas tradicionales de pares de esos. Bueno, si también atacan a los rastreadores, entonces eres muy, muyhasta un arroyo En otras palabras, Kademlia y toda la red BT están limitadas por las limitaciones de Internet, ya que existe un número finito (y relativamente pequeño) de computadoras que tendrías que atacar con éxito o desconectar para evitar> 90% de usuarios que se conectan a la red.
Una vez que los nodos de arranque "pseudo-centralizados" desaparecen, los nodos interiores del DHT, que no son de arranque porque nadie en el exterior del DHT sabe acerca de los nodos interiores , son inútiles; no pueden traer nuevos nodos al DHT. Entonces, a medida que cada nodo interior se desconecta del DHT con el tiempo, ya sea debido a que las personas apagan sus computadoras, reinician las actualizaciones, etc., la red colapsaría.
Por supuesto, para evitar esto, alguien podría implementar un cliente BitTorrent parcheado con una nueva lista de nodos DHT estables predeterminados o direcciones DNS, y anunciar en voz alta a la comunidad P2P para usar esta nueva lista. Pero esto se convertiría en una situación de "golpe-a-lunar" en la que el agresor (el devorador de nodos) descargaría progresivamente estas listas por sí mismo y apuntaría a los nuevos y valientes nodos de arranque, y luego los desconectaría también.
Respuesta corta: lo obtiene del archivo .torrent.
Cuando un cliente BitTorrent genera un archivo .torrent sin seguimiento (es decir, cuando alguien se está preparando para compartir algo nuevo a través de BitTorrent), agrega una clave "nodos" (clave como en "par clave / valor"; como un encabezado de sección, no una clave criptográfica) al archivo .torrent que contiene los K nodos DHT más cercanos conocidos por ese cliente.
http://www.bittorrent.org/beps/bep%5F0005.html#torrent-file-extensions
Entonces, cuando alimenta a su cliente BitTorrent con el archivo .torrent de un torrent sin tracker que desea descargar, utiliza el valor de esa clave "nodos" del archivo .torrent para encontrar sus primeros nodos DHT.
fuente
no puedes! tienes que conocer al menos una IP de uno de los enjambres, esta es la debilidad de una red p2p. Puede transmitir a ciegas para encontrar la primera IP, pero en una red grande, si todo el mundo lo está haciendo, tendremos un problema de congestión. Puede usar un caché, pero solo es posible para grandes enjambres (caché de direcciones de pares más grandes). Siempre tiene que conectar un rastreador para solicitar solo la primera IP.
Distribuido en DHT significa que los clientes no tienen que mantener toda la lista que contiene la suma md5 del nombre de los archivos compartidos, con sus pares correspondientes. La lista de hash se forma en partes iguales y se distribuye con redundancia en todo el enjambre. Si un par se desconecta, hay otro lugar con la misma parte de la lista hash. Los compañeros comparten la dirección del buen titular de la parte hashlist.
torrent-freak escribió una publicación sobre este tema
fuente
Lo pide
Los clientes de Bittorrent que admiten el DHT ejecutan dos aplicaciones separadas peer-to-peer.
El primero hace el intercambio de archivos: un enjambre en la jerga bittorrent es un grupo de pares que comparten un objeto bittorrent (por ejemplo, un archivo o estructura de directorio). Cada objeto bittorent tiene algunos metadatos que se guardan en un archivo .torrent. (Incluye el tamaño del objeto, el nombre de la carpeta, posiblemente la información del rastreador o los nodos. Ect.) El hash de los metadatos necesarios para descargar este objeto bittorrent se llama infohash.
El DHT básicamente es una segunda aplicación P2P que tiene como objetivo reemplazar a los rastreadores: almacena pares de (infohash, enjambre) y actualiza el enjambre si recibe mensajes de anuncio. Un nuevo cliente debe tener conocimiento de algún "nodo" (jerga de bittorrent para un par del DHT) para arrancar su información del DHT. Aquí se aplican los argumentos dados por @allquixotic. Como el MDHT actualmente consta de más de 7 millones de pares, parece poco probable un ataque sostenido de denegación de servicio.
Luego puede consultar el DHT con respecto a un infohash y no tiene que usar un rastreador o conocer a un par que sea parte del enjambre antes. Si uno de los pares con los que se contacta admite compartir metadatos , solo necesita que infohash pueda recuperar el archivo .torrent del enjambre.
fuente
La mayoría de los clientes de la red p2p se arrancan de una lista de pares de semillas con los que se conectan inicialmente ... una vez que se conectan a un par de botas, descarga el resto de manera distribuida. Se conecta al par de arranque y descarga su lista DHT de pares y luego va a cada uno de ellos y hace lo mismo, etc., etc.
Por ejemplo:
Aquí hay una lista de nodos de arranque:
https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L10
Aquí es donde el cliente se conecta a ellos para hidratar la lista de pares:
https://github.com/dontcontactme/p2pspider/blob/master/lib/dhtspider.js#L60
Esto es similar a cómo funciona un rastreador, excepto que casi cualquier persona puede ser un nodo de arranque, por lo que es casi imposible apagarlo.
La billetera Bitcoin Core funciona de la misma manera. Le permite cambiar los pares de semillas de bootstrap si, por algún motivo, los predeterminados se apagan.
fuente