对等发现和资源发现(在您的情况下是文件)是两个不同的东西。
我对 JXTA 比较熟悉,但所有对等网络都遵循相同的基本原则。
需要发生的第一件事是对等发现。
对等发现
大多数 p2p 网络是“种子”网络:当第一次启动对等点时,将连接到一个众所周知的(硬编码)地址以检索正在运行的对等点列表。它可以是直接播种,例如 dht.transmissionbt.com
在另一篇文章中提到的连接,也可以是间接播种,通常使用 JXTA 完成,其中对等点连接到仅提供其他对等点网络地址的纯文本列表的地址。
一旦与第一个(少数)对等点建立连接,连接的对等点就会执行其他对等点的发现(通过发送请求)并维护它们的表。由于其他对等点的数量可能很大,因此连接的对等点仅维护对等点的分布式哈希表 (DHT) 的一部分。确定连接对等方应维护表的哪一部分的算法因网络而异。BitTorrent 使用带有 160 位标识符/密钥的 Kademlia。
资源发现
一旦连接的对等点发现了一些对等点,后者就会向它们发送一些请求以发现资源。磁力链接识别这些资源,并以这样一种方式构建它们,即它们是资源的“签名”,并保证它们在所有对等点中唯一标识所请求的内容。然后,连接的对等方将向其周围的对等方发送对磁链/资源的发现请求。DHT 的构建方式有助于确定应首先向哪些对等方询问资源(请阅读 Wikipedia 中的 Kademlia 了解更多信息)。如果请求的对等点不持有请求的资源,它通常会将查询“传递”给从其自己的 DHT 获取的其他对等点。
查询可以传递的“跳数”通常是有限的;4 是 JXTA 类型网络的常用数字。
当对等点持有资源时,它会回复其完整的详细信息。然后连接的对等点可以连接到持有资源的对等点(直接或通过中继 - 我不会在这里详细介绍)并开始获取它。
P2P 网络中的资源/服务不直接附加到网络地址:它们是分布式的,这就是这些高度可扩展网络的优点。