5

我试图了解 Kademlia 在寻找资源方面的工作方式。现在有很好的描述来构建一个最接近自身节点的节点树,如何找到节点之间的距离,如何启动进程等。我不明白的是文件infohash如何适合这张图片. 所有描述都告诉我们如何进入游戏并构建您自己的分布式哈希表部分,但事实并非如此。我们这样做是为了实际找到一个资源,一个具有特定信息哈希的文件。它是如何存储在这个节点树中的还是有一个单独的?如何找到具有此信息哈希的节点,从而拥有该文件。

简要提到了节点 id 和 infohash 具有相同的 20 字节长度代码以及节点 id XOR infohash 是节点和资源之间的距离的事实,但我无法想象这是如何以及它如何帮助找到资源?毕竟,实际拥有资源的节点 ID 与资源的异或距离最大。

谢谢你,亚历克斯

4

1 回答 1

4

我建议您不要只阅读bittorrent DHT 规范,还要阅读原始的 kademlia 论文,因为前者相当简洁,只是顺便提及了一些内容。

Bittorrent 的get_peers查找等价find_value于论文中描述的操作。

简而言之:就像您可以进行迭代查找以查找 K-closest-node-set -基于相对于目标键的 xor-distance 最接近 - 对于您自己的节点 ID,您可以为任何其他 ID 执行此操作

因为get_peers您只需使用 infohash 作为目标键。

特定 infohash 的 K-closest-node-set 是被认为负责存储该 infohash 数据的节点集。尽管由于实现的不准确性和节点流失,目标键周围的 K 个以上的节点可能正在存储感兴趣的数据。

于 2015-04-30T05:14:54.310 回答