我试图了解Kademlia在寻找资源方面的工作方式。现在有很好的描述来构建一个最接近自身节点的节点树,如何找到节点之间的距离,如何启动过程等。我不明白文件infohash如何适合这张照片。所有描述都告诉我们如何进入游戏并构建自己的分布式哈希表部分,但事实并非如此。我们这样做是为了找到一个资源,一个带有某个infohash的文件。它是如何存储在这个节点树中的,或者是一个单独的节点树?如何找到具有此infohash的节点,从而拥有该文件。
简要提到一个事实,即节点id和infohash具有相同的20字节长度代码,而节点ID为XOR infohash的是节点和资源之间的距离,但我无法想象它是如何以及它如何帮助找到资源?毕竟,实际拥有资源的节点ID可以与资源具有最大的XOR距离。
谢谢你, 亚历
答案 0 :(得分:3)
我建议您不要只阅读bittorrent DHT specification,还要阅读original kademlia paper,因为前者相当简洁,只提到了一些事情。
Bittorrent的get_peers
查找等同于本文中描述的find_value
操作。
简而言之:就像您可以进行迭代查找,找到基于相对于目标键的xor距离的K-nearest-node-set - 最接近 - 对于您自己的节点ID,可以为任何其他身份证明这样做。
对于get_peers
,您只需使用infohash作为目标键。
特定infohash的K-nearest-node-set是被认为负责存储所述infohash的数据的节点集。虽然由于实现和节点流失的不准确性,目标密钥周围的K个节点可能存储了感兴趣的数据。