DHT如何在种子中发挥作用?

Chr*_*ini 71 p2p protocols dht

我正在编写一个p2p实现,我想分散,但是我在掌握像bittorrent这样的协议中的DHT方面遇到了一些麻烦.如果没有跟踪器,客户如何知道同行在哪里?对等体是否存储在实际的torrent文件中?

cce*_*cce 62

使用无跟踪/ DHT种子,对等IP地址使用BitTorrent infohash作为密钥存储在DHT中.由于所有跟踪器基本上都响应put/get请求,因此该功能完全对应于DHT(分布式哈希表)提供的接口:它允许您通过infohash在DHT中查找和存储IP地址.

因此,"获取"请求将查找BT infohash并返回一组IP地址."put"存储给定infohash的IP地址.这对应于您向跟踪器接收对等IP地址字典的"通知"请求.

在DHT中,对等体被随机分配以存储属于密钥空间的一小部分的值; 散列确保密钥在参与的对等方之间随机分布.DHT协议(Kademlia for BitTorrent)确保将put/get请求有效地路由到负责维护给定密钥的IP地址列表的对等体.

  • 它从哪里获得每个 IP 的端口号? (3认同)
  • 该端口与对等方的 IP 地址一起包含在内:http://www.bittorrent.org/beps/bep_0005.html#contact-encoding (3认同)
  • 密钥空间的值是否丢失/过期? (3认同)
  • 如果您将您的评论纳入其中,您的答案将会更好。 (3认同)
  • 是的,由于到期(TTL)或流失(由于对等体来去,它们可能会占用部分键空间,如果这些值没有足够的副本),则可能会丢失值.因此,为了长期保持一个值,需要不断发出PUT请求.由于在BitTorrent群中,同伴不断加入和离开,这不是一个问题,长期生活的同伴可以定期向DHT重新宣布自己. (2认同)

bdo*_*lan 18

一般理论可以在维基百科关于Kademlia的文章中找到.bittorrent中使用的特定协议规范如下:http://wiki.theory.org/BitTorrentDraftDHTProtocol


DJ *_*lis 12

bittorrent和DHT会发生什么,起初bittorrent使用torrent文件中嵌入的信息转到跟踪器或DHT的一组节点之一.然后,一旦找到一个节点,它就可以继续查找其他节点并使用DHT持续存在而无需集中跟踪器来维护它.

原始信息引导DHT的后期使用.


小智 5

DHT 节点具有唯一标识符,称为节点 ID。节点 ID 是从与 BitTorrent 信息哈希相同的 160 位空间中随机选择的。紧密程度是通过比较Node ID的路由表来衡量的,越接近的Node越详细,从而得到最优的

那么是什么让它们比它的前身“Kademlia”更优化,后者使用简单的无符号整数:distance(A,B) = |A xor B| 值越小越接近。异或。除了不安全之外,它的逻辑也存在缺陷。

如果您的客户端支持 DHT,则保留 8 个字节,其中包含 0x09,后跟带有 UDP 端口和 DHT 节点的 2 字节有效负载。如果握手成功,上述过程将继续。