bittorrent - ¿Cómo se "arranca" un DHT en un cliente Bittorent?
(8)
En BiTTorrent, tienes tres opciones principales:
- Archivo Torrent: algunos archivos torrent pueden incrustar
nodes
para que pueda vincularlos con el DHT (de hecho, se recomienda cuando se hace un archivo torrent) - Hardcoding: algunos clientes de torrent codifican algunos nodos de arranque (como los mencionados por stk). Estos generalmente son administrados por empresas y organizaciones con servidores de larga ejecución.
- Conversaciones entre pares / PEX : normalmente puede solicitar nodos de DHT a las personas a las que está descargando otros torrents (si sus clientes entienden el idioma de los demás, es decir, algunas versiones son incompatibles).
Si tengo un torrente sin ningún rastreador, y acabo de iniciar un cliente de bittorent, así que no tengo compañeros todavía ... ¿cómo sé con quién me conectaré primero en el DHT? Parece que tendría que saber al menos UN nodo en el DHT para comenzar ...
Los nodos de arranque de DHT principales son router.utorrent.com
y un CNAME, router.bittorrent.com
. Puerto 6881
.
Necesitas compañeros de algún otro torrente para hablar. Como has declarado que no tienes estos, no tienes mucho con lo que ir ...
Para el registro, Deluge también usa nodos de boostrap codificados :
self.session.add_dht_router("router.bittorrent.com", 6881)
self.session.add_dht_router("router.utorrent.com", 6881)
self.session.add_dht_router("router.bitcomet.com", 6881)
Un cliente puede aprender sobre otros compañeros habilitados para DHT a través de sus interacciones con ellos. El soporte de un compañero para DHT se anuncia en su Handshake. Una vez que un cliente descubre al menos un par DHT bueno y bien conectado, puede navegar el DHT para encontrar más y más cercanos pares DHT. Recordará a estos pares, llamados nodos en DHT-speak, entre los reinicios del software y mantendrá / actualizará la lista continuamente mientras se está ejecutando. En el peor de los casos en que un cliente no conoce a buenos pares aptos para DHT, se le pedirá que descargue un torrente basado en el rastreador para poder contactar con unos pocos buenos pares aptos para DHT a través del rastreador.
Actualización: para su lista inicial de pares DHT, como señala @Seppo, un cliente de torrents puede usar uno o más nombres DNS codificados para encontrar las direcciones para pares bien conocidos, y también puede incluir una lista de códigos rígidos de pares como una última alternativa también. Una limitación de DNS, sin embargo, no se proporciona información de puerto por lo que generalmente se asume un puerto predeterminado de 6881, mientras que otros medios admiten pares que operan en puertos diferentes.
el gráfico en la parte inferior de este sitio de proyecto de monitoreo de DHT muestra
- dht.transmissionbt.com
- router.utorrent.com
- router.bittorrent.com
como pares de arranque
Transmission
usa un nodo de arranque codificado para dht si no hay otra forma de obtener pares:
bootstrap_from_name( "dht.transmissionbt.com", 6881, bootstrap_af(session) );
Supongo que cada cliente de torrent usa su propio nodo de arranque.
Cuando un cliente de BitTorrent se conecta a DHT, hay un lugar inicial para buscar pares. Con el cliente original de BitTorrent, había una url a bitorrent.com que ayudaría a comenzar. Intenté buscar la referencia, pero no pude encontrarla. Una vez que haya establecido las conexiones con otros clientes, puede hacer un announce
en la red DHT para buscar pares para el torrente que está buscando.
Aquí hay un enlace a las especificaciones de BitTorrent que discuten DHT.
Un diccionario de torrents sin tracker no tiene una clave de "anunciar". En cambio, un torrente sin tracker tiene una clave de "nodos". Esta clave debe establecerse en los nodos K más cercanos en la tabla de enrutamiento del cliente generador de torrente. Alternativamente, la clave podría establecerse en un nodo bueno conocido tal como uno operado por la persona que genera el torrente. No agregue automáticamente "router.bittorrent.com" a los archivos de torrents o añada automáticamente este nodo a las tablas de enrutamiento de los clientes.