Implementation 主线DHT引导过程

Implementation 主线DHT引导过程,implementation,bootstrapping,bittorrent,dht,Implementation,Bootstrapping,Bittorrent,Dht,有人能澄清一下干线DHT规范中的陈述吗 在将第一个节点插入到其路由表中以及之后启动时,该节点应尝试在DHT中找到与其自身最近的节点。它通过向越来越近的节点发出find_node消息,直到找不到任何更近的节点为止 “直到它找不到更近的距离”是什么意思 当我的程序开始发送find_node消息时,它有一组空的节点。find_node消息的每个响应返回大约8个dht节点。我的程序在列表中收集它们 我的程序何时必须停止发送查找节点消息 我认为它必须在接收到dht节点集时停止发送,所有元素都在已经收集的节

有人能澄清一下干线DHT规范中的陈述吗

在将第一个节点插入到其路由表中以及之后启动时,该节点应尝试在DHT中找到与其自身最近的节点。它通过向越来越近的节点发出find_node消息,直到找不到任何更近的节点为止

“直到它找不到更近的距离”是什么意思

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

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

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

我说得对吗


提前感谢。

主线DHT是一个kademlia实现,有关详细信息,请参阅

从您收到的8个节点中,按其节点id与您自己的id的接近程度对它们进行排序,然后将
find_node
发送到最前面的3个节点(离您最近的3个)。然后,您将再收到8 x 3个节点,将它们插入到节点列表中,仍然按节点与您的距离排序。继续向前3个节点发送
find_node
消息(忽略已向其发送消息的节点),直到返回的节点已在列表中。i、 e.终止条件是您已向离您最近的所有8个节点(位于列表顶部)发送消息

正如本文所解释的,距离度量是XOR。要计算节点ID与另一个节点ID的距离,可以对节点ID进行异或运算。结果越低,节点之间的距离就越近

在现实生活中,您可能希望这样做更复杂一些,在任何给定时间保留3个未完成的请求,并在超时的中途临时打开更多未完成的请求