首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主线DHT引导过程

主线DHT引导过程
EN

Stack Overflow用户
提问于 2011-09-28 21:18:04
回答 1查看 1.4K关注 0票数 4

有人能澄清一下主干线DHT的说明吗?

在将第一个节点插入其路由表并随后启动时,该节点应尝试在DHT中找到与其自身最近的节点。它通过向越来越近的节点发出find_node消息来做到这一点,直到它找不到更接近的节点。

“直到找不到更近的距离”意味着什么?

当我的程序开始发送find_node消息时,它有一组空节点。每个对find_node消息的响应返回大约8个dht节点。我的程序把它们收集在列表中。

我的程序何时必须停止发送查找节点消息?

我认为它必须停止发送,当它将接收dht节点集合时,所有元素都在已经收集的节点列表中?

我说的对吗?

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-29 04:20:14

Mainline是一个kademlia实现,有关详细信息,请参阅论文

从您接收的8个节点中,按照它们的节点- ID与您自己的ID的接近程度对它们进行排序,然后将find_node发送到最上面的3个节点(离您最近的3个节点)。然后再接收8x3个节点,将它们插入到节点列表中,按节点与您的距离的大小排序。继续向3个顶级节点发送find_node消息(忽略已经发送消息的节点),直到返回的节点已经在列表中。也就是说,终止条件是您已经向与您最近的所有8个节点发送了一条消息(位于列表的顶部)。

正如本文所解释的那样,距离度量是异或。要计算您的节点ID与另一个节点的距离有多远,您可以将节点ID异或。结果越低,节点之间就越接近。

在现实生活中,您可能想要这样做更复杂一点,保持3个未完成的请求在任何时间,并暂时打开更多的未决请求中途超时。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7589717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档