【问题标题】:How Kademlia tree of nodes relates to the infohash of a torrent file?Kademlia 节点树与 torrent 文件的 infohash 有何关系?
【发布时间】:2015-04-30 18:26:33
【问题描述】:

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

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

谢谢你, 亚历克斯

【问题讨论】:

    标签: bittorrent dht torrent kademlia


    【解决方案1】:

    我建议你不要只看bittorrent DHT specification,还要看original kademlia paper,因为前者相当简洁,只是顺便提了一些东西。

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

    简而言之:就像您可以进行迭代查找以查找 K-closest-node-set - closest 基于相对于目标键的 xor-distance - 对于您自己的节点 ID可以为任何其他 ID 这样做。

    对于get_peers,您只需使用 infohash 作为目标键。

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

    【讨论】:

    • 我还是不明白node id和infohash有什么联系。 Kademlia 树中的每个节点都是一个键值对,其中键是节点 ID,值是该节点的 IP 和端口。我明白那个。因此,我可以找到离我的节点最近的所有节点的 IP 和端口。信息哈希在哪里?它是否是我们树中的键值对,其中键是 infohash,值是 ..? (节点 ID 列表公布了 infohash?)。如果是这种情况,我将了解如何在树中找到 infohash,显然,一旦我找到它,我就有一个节点 ID 列表来查询文件。
    • 是的,<ip:port> 对的列表由节点(如果有的话)在您执行目标键的查找时返回。并且节点不是键值对。节点是多个键值对的存储,其中键接近其 ID。
    猜你喜欢
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多