PEX协议(磁力链接)如何找到第一个IP?

22
我正在尝试理解磁性链接是如何工作的。我读到它们使用DHT和PEX来获取同行,但如果我是网络中的新节点,仅有文件哈希值如何找到同行呢?难道不总是需要链接到已知主机吗?
谢谢

Pex 标签是用于微软的白盒测试工具,而不是 Peer Exchange。已重新标记。 - shamp00
2
注意!磁力链接(如海盗湾上的链接)通常包含嵌入式跟踪器URL。使用这些类型的链接时,您只需向跟踪器请求对等方即可。 - gsk
1个回答

27

比特流 DHT 可以通过多种方式引导启动。它只需要知道任何其他可达的 DHT 节点的 IP 和端口。

当前客户端通常使用以下几种策略:

  • 从上一次会话中长期存在的节点缓存中引导启动
  • 使用 DNS A/AAAA 记录映射到已知节点(例如 router.bittorrent.com 或 dht.transmissionbt.com)并具有已知端口号
  • 使用嵌入在 .torrent 文件中的节点 内嵌模式
  • 通过其他方式建立 bittorrent 连接(例如传统追踪器)来检索DHT 端口
  • 通过 LSD 的多播邻居发现
  • IPv4 到 IPv6 DHT 之间的交叉对话,反之亦然(如有需要)

其他方式,例如用户可配置引导列表、DNS SRV 记录轮询映射到实时节点或 - 如果其他一切都失败 - 手动添加您朋友的 IP 也可以运作。

一旦一个节点加入网络,就会启动上述提到的第一种策略,因此不太可能再次引导启动。

因此,尽管大多数实现为方便起见依赖于单个/少数进入网络的节点,但协议本身足够灵活,可以将进入网络的节点去中心化。

强调一下:DHT中的任何节点都可以用来加入网络。专用引导节点是实现细节,不是协议的一部分,如果有必要,可以用其他发现机制替代。


1
好的,我明白了。但是如果你是一个新的节点,并且想要加入网络,那么没有办法在不请求对等节点的情况下完成。通常的做法是使用服务器进行连接,因此你总是需要一个服务器,否则将会让对网络的访问变得更困难。 - Marco Martins
3
通常情况下,目前使用服务器是一种常见的方式。但你得出“总是需要一个服务器”的结论是不正确的。还有其他可能的方式。我的回答的重点是你不需要“一个中央服务器”,只是使用它是一种方便的方法。 - the8472
1
是的,我明白了,但为了让它每次都能正常工作,选择一个服务器是正确的选择,否则给定的节点可能会离线。 - Marco Martins
一个服务器只是DHT网络的一个接入点,但与8472一样,DHT网络有很多“入口”。 - Cadell Christo
1
@the8472强调的一点是,任何节点都可以成为入口点,这使得DHT网络与传统的跟踪器机制根本不同。跟踪器是一个集中式服务器,如果你关闭它,就会结束整个群体,而DHT网络没有“中心”节点。 - MestreLion
3
鉴于比特流协议如此流行,“随机尝试一堆IPv4地址”是否是一种可行的引导方法? - Qwertie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接