webtorrent sintel setup peerflix descargar node.js udp bittorrent

node.js - sintel - Conectándose a seguidores/pares de torrents



webtorrent setup (1)

El Wiki.theory.org/BitTorrentSpecification no oficial es sin duda el mejor lugar para comenzar a aprender sobre el protocolo BitTorrent, pero está incompleto. Solo cubre el protocolo base y las extensiones que se desarrollaron en los primeros años. Es por eso que no puedes encontrar toda la información que necesitas allí.

Desde 2008, la documentación oficial * del protocolo se puede encontrar en BitTorrent.org .
La versión oficial del protocolo base es el BEP3 denso y denso : la especificación del protocolo BitTorrent .

Los enlaces de imán están cubiertos en BEP9 - Extensión para pares para enviar archivos de metadatos .
No puedes leer:

Si no se especifica ningún rastreador, el cliente DEBERÍA usar DHT para adquirir pares.

El DHT se especifica en BEP5 - Protocolo DHT .

Como habrás notado, los rastreadores hoy en día usan UDP, que está especificado en BEP15 - UDP Tracker Protocol .

nota al pie: * Oficial solo significa que BitTorrentInc lo ejecuta, no que sea superior o la única fuente que use. El protocolo BitTorrent no está gobernado por la autoridad. Ninguno cliente ha jurado fidelidad a BEP. El protocolo está formado por consenso de lo que hacen los clientes en el mundo real.

Actualmente estoy tratando de implementar un cliente de torrente mínimo, en nodeJS.

Estoy leyendo esta especificación: https://wiki.theory.org/index.php/BitTorrentSpecification

Tengo 2 URI de imán:

magnet:?xt=urn:btih:633ab5b0cc27218bca2f9fec9b68ae4f7cbf0c5f&dn=dmb2017-05-31.dpa4021.flac16 xt=urn:btih:633ab5b0cc27218bca2f9fec9b68ae4f7cbf0c5f dn=dmb2017-05-31.dpa4021.flac16

magnet:?xt=urn:btih:9f9165d9a281a9b8e782cd5176bbcc8256fd1871&dn=Ubuntu+16.04.1+LTS+Desktop+64-bit&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Fzer0day.ch%3A1337&tr=udp%3A%2F%2Fopen.demonii.com%3A1337&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Fexodus.desync.com%3A6969 xt=urn:btih:9f9165d9a281a9b8e782cd5176bbcc8256fd1871 dn=Ubuntu+16.04.1+LTS+Desktop+64-bit tr=udp://tracker.leechers-paradise.org:6969 tr=udp://zer0day.ch:1337 tr=udp://open.demonii.com:1337 tr=udp://tracker.coppersurfer.tk:6969 tr=udp://exodus.desync.com:6969

Según lo que he leído, el rastreador se usa para buscar pares, a partir de los cuales se descargan los datos. ¿Cómo se descargaría el primer torrente? No tiene rastreador

¿Cómo realizo esta conexión?

La especificación no tiene nada en los enlaces magnet, y establece que los rastreadores se pueden utilizar a través de los protocolos HTTP (S), pero estos son claramente UDP.

Le di una puñalada a esto:

var PORT = 6969 ; var HOST = ''tracker.leechers-paradise.org''; var dgram = require(''dgram''); var message = new Buffer("xt=urn:btih:9f9165d9a281a9b8e782cd5176bbcc8256fd1871"); var client = dgram.createSocket(''udp4''); client.on(''listening'', function () { var address = client.address(); console.log(''UDP Server listening on '' + address.address + ":" + address.port); }); client.on(''message'', function (message, remote) { console.log(remote.address + '':'' + remote.port +'' - '' + message); }); client.send(message, 0, message.length, PORT, HOST, function(err, bytes) { if (err) throw err; console.log(''UDP message sent to '' + HOST +'':''+ PORT); console.log(bytes); });

Obviamente, esto no funciona, pero no puedo encontrar ninguna documentación para ayudar.