[英]Connecting to torrent trackers / peers
我目前正在尝试在nodeJS中实现一个最小的torrent客户端。
我正在阅读这个规范: https : //wiki.theory.org/index.php/BitTorrentSpecification
我有2个磁铁URI:
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
根据我的阅读,跟踪器用于查找从中下载数据的对等项。 那么如何下载第一个洪流呢? 它没有跟踪器。
我如何实际进行此连接?
该规范在磁链路上没有任何内容,并指出跟踪器可以通过HTTP(S)协议使用,但这些显然是UDP。
我对此嗤之以鼻:
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);
});
显然,这不起作用,但我找不到任何文档可以提供帮助。
非官方的Wiki.theory.org/BitTorrentSpecification无疑是开始学习BitTorrent协议的最佳场所,但它不完整。 它仅涵盖基础协议和早期开发的扩展。 这就是为什么你找不到你需要的所有信息的原因。
自2008年以来,可以在BitTorrent.org上找到该协议的官方*文档。
基本协议的官方版本是简洁而密集的BEP3 - BitTorrent协议规范 。
磁带链接包含在BEP9 - 用于发送元数据文件的对等扩展中 。
你能读到:
如果没有指定跟踪器,客户端应该使用DHT来获取对等体。
DHT在BEP5-DHT协议中规定 。
正如您所注意到的,跟踪器现在使用UDP,这是在BEP15-UDP跟踪器协议中指定的。
脚注:* 官方仅表示它由BitTorrentInc运行,而不是它是优越的或唯一使用的源。 BitTorrent协议不受权限管辖。 没有客户承诺效忠BEP。 该协议是由真实客户的共识形成的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.