如何从洪流磁铁链接获得第一个同行?

kba*_*kba 25 bittorrent dht magnet-uri kademlia

我一直试图了解洪流磁铁技术,但我似乎无法弄清楚在打开磁铁链接时你是如何与第一个同伴联系的.

当你得到如下所示的磁力链接时,它不包含初始对等 - 只有BitTorrent信息哈希(btih)和文件名.

magnet:?xt=urn:btih:bbb6db69965af769f664b6636e7914f8735141b3&dn=ubuntu-12.04-desktop-i386.iso
Run Code Online (Sandbox Code Playgroud)

根据BitTorrent和Magnets:他们如何运作?(MakeUseOf)

如果单击未指定跟踪器(tr)磁力链接,将使用DHT找到第一个对等方.一旦你有了同伴,同伴交换也会开始.

维基百科上的DHT文章没有具体说明如何找到同伴,但在Kademlia文章中(BitTorrent DHT所基于的),它说

想要加入网络的节点必须首先完成引导过程.在此阶段,加入节点需要知道另一个节点的IP地址和端口 - 一个已经参与Kademlia网络的引导节点(从用户或从存储的列表中获得).

但它从哪里知道该节点?我没有在磁铁链接中看到地址或任何内容.由于它是分散的(无跟踪),我不希望它提前知道节点.或者DHT实际上不是分散的?

Arv*_*vid 21

在大多数情况下,当你启动一个bittorrent客户端时,bootstrap off:

  1. 上次会话中保存到磁盘的节点
  2. 你在其他任何群体上拥有的其他同伴

有一些众所周知的引导程序节点,如果客户端没有其他任何查找方法,则可以使用这些节点.基本上唯一的情况是,当您第一次安装客户端时,您下载的第一个torrent是没有跟踪器的磁铁链接.

然后你可以点击router.utorrent.com:6881.我相信传输,azureus和bitcomet运行类似的路由器,也可能运行其他客户端.

通过"路由器",我的意思是一个节点看起来像DHT中的任何其他节点,但可能有一个不同的机制来确定要分发哪些节点,并且可能针对仅引入dht节点的用例进行了优化彼此.

更新:您可以运行自己的DHT引导程序机器,这是源代码.

  • 引导节点与bittorrent跟踪器不同.他们没有为每个信息哈希保留对等列表,他们保留单个节点列表.DHT协议也与跟踪器协议不同. (5认同)