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

时间:2013-03-04 21:16:15

标签: bittorrent dht magnet-uri kademlia

我一直在努力了解磁力磁铁技术,但我似乎无法弄清楚在打开磁铁链接时你是如何与第一个同伴建立联系的。

当您获得如下所示的磁力链接时,它不包含初始对等 - 仅包含BitTorrent信息哈希(btih)和文件名。

magnet:?xt=urn:btih:bbb6db69965af769f664b6636e7914f8735141b3&dn=ubuntu-12.04-desktop-i386.iso

根据BitTorrent & Magnets: How Do They Work? (MakeUseOf)

  

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

DHT article on Wikipedia未指定如何查找对等方,但在Kademlia article(BitTorrent DHT所基于的)中,它表示

  

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

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

1 个答案:

答案 0 :(得分:20)

在大多数情况下,当你启动一个bittorrent客户端时,引导程序:

  1. 上次会话中保存到磁盘的节点
  2. 您在任何群体中拥有的其他同伴
  3. 有一些众所周知的引导程序节点,如果客户端没有其他任何查找方法,则可以使用这些节点。基本上唯一的情况是,当您第一次安装客户端时,您下载的第一个torrent是没有跟踪器的磁力链接。

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

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

    更新:您可以运行自己的DHT引导程序机,here's源代码。