好的,我最近一直在阅读有关 Kademlia 的文章和论文,以实现一个使用 kademlia dht 算法的简单 p2p 程序。那些论文说,Kademlia 节点中的那些 160 位密钥用于识别节点(节点 ID)和数据(以元组的形式存储)。
我对“两者”部分感到很困惑。
据我了解,Kademlia 二叉树中的每个节点都唯一地代表一个客户端(IP、端口),每个客户端都拥有一个文件列表。
这是我理解的一般流程。
- 客户端 (.exe) 被启动
- 创建节点组件
- 新创建的节点加入网络(引导)
- 将 find_node(filehash) 发送到 k-closest 节点
- 假设哈希是通过散列名为 file1.txt 的文件二进制文件生成的
- 接收到的节点各自在其不同的哈希表
中找到查询的文件哈希
- 比如说,一个包含文件列表的哈希映射(文件哈希,文件位置)
- 重复步骤 4,5 直到找到节点(同时所有关联节点都在更新存储桶)
这个流程看起来没问题吗?
此外,Kademlia 的引导方法也让我感到困惑。当节点被创建(用户执行程序)时,它似乎使用引导节点来填充桶。但是什么是引导节点?它是另一个一直在运行的进程吗?如果引导节点被关闭怎么办?
有人可以帮助我更好地理解这个概念吗?
我在这里先向您的帮助表示感谢。