如果我有一个没有任何跟踪器的 torrent,并且我刚刚启动了一个 bittorent 客户端,所以我还没有同伴……我怎么知道在 DHT 中首先与谁联系?看来我必须至少知道 DHT 中的一个节点才能开始......
8 回答
主线 DHT 引导节点是router.utorrent.com
和它的 CNAME router.bittorrent.com
,. 港口6881
。
当 BitTorrent 客户端连接到 DHT 时,它会在一个初始位置找到对等点。使用最初的 BitTorrent 客户端,有一个指向 bitorrent.com 的 url 可以帮助您开始工作。我试图查找参考,但我找不到它。一旦你与其他客户端建立了连接,你就可以announce
在 DHT 网络上为你正在寻找的 torrent 寻找对等点。
这是讨论 DHT的BitTorrent 规范的链接。
无跟踪器的洪流字典没有“宣布”键。相反,无跟踪器的洪流有一个“节点”键。此键应设置为 torrent 生成客户端路由表中最近的 K 个节点。或者,可以将密钥设置为已知的良好节点,例如由生成种子的人操作的节点。请不要自动将“router.bittorrent.com”添加到 torrent 文件或自动将此节点添加到客户端路由表中。
在 BiTTorrent 中,您有三个主要选项:
- Torrent 文件:可以嵌入一些 torrent 文件
nodes
供您链接到 DHT 中(实际上,在制作 torrent 文件时建议使用) - 硬编码:一些 torrent 客户端硬编码一些引导节点(如 stk 提到的那些)。这些通常由具有长期运行服务器的公司和组织运行。
- PEX / Peer Conversations:您通常可以向您下载其他种子的人询问 DHT 节点(如果您的客户了解彼此的语言。即某些版本不兼容)。
Transmission
如果没有其他方法获得对等点,则为 dht使用硬编码的引导节点:
bootstrap_from_name( "dht.transmissionbt.com", 6881, bootstrap_af(session) );
我猜每个 torrent 客户端都使用自己的引导节点。
作为记录,Deluge还使用硬编码的 boostrap 节点:
dht_bootstraps = set(
lt_bootstraps.split(',')
+ [
'router.bittorrent.com:6881',
'router.utorrent.com:6881',
'router.bitcomet.com:6881',
'dht.transmissionbt.com:6881',
'dht.aelitis.com:6881',
]
)
客户端可以通过与其他具有 DHT 能力的对等方的交互来了解它们。对等点对 DHT 的支持在其握手中公布。一旦客户端发现至少一个良好的、连接良好的 DHT 对等体,它就可以导航 DHT 以找到更多、更接近的 DHT 对等体。它将在软件重新启动之间记住这些对等点,在 DHT 中称为节点,并在运行时持续维护/更新列表。在更糟糕的情况下,客户端不知道支持 DHT 的对等点,它会要求您下载基于跟踪器的种子,以便它可以联系通过跟踪器了解的一些具有 DHT 能力的良好对等点。
更新: 对于它的初始 DHT 对等点列表,正如@Seppo 指出的那样,torrent 客户端可以使用一个或多个硬编码的 DNS 名称来查找知名对等点的地址,它还可能包括一个硬编码的列表同行也作为最终的后备。但是,DNS 的一个限制是,它没有提供端口信息,因此通常假定默认端口为 6881,而其他方式支持在不同端口上运行的对等方。
这是我遇到的主要节点。
dht.transmissionbt.com 6881
router.bittorrent.com 6881
router.bitcomet.com 6881
dht.aelitis.com 6881
bootstrap.jami.net 4222