我正在尝试使用Kademlia实现一个DHT。纸张 作为更好地理解这些系统如何工作的一种方式。
我读过一些其他的文章,其中提到了这种实现分布式哈希表的方式,但有一些东西我无法理解。在p2p交换文件网络中,密钥id可以作为文件名的摘要来实现,以便通过搜索机制保持一致性。
但是节点id本身呢?
例如,我是应该采用 "WAN-IP:PORT "组合的摘要,还是简单地从头开始生成一个完全随机的id?
在第二种情况下,总是存在着两个节点生成相同id的风险。但是使用我的WAN-IP:PORT,我依靠的是我的客户机在WAN-IP后面运行一个节点,这个节点永远不会改变。
它应该如何来自于网络本身?我的意思是,在第一次接触时,对等体会施展一些魔法,并给新节点一个id?
我希望能得到一些关于如何实现Kademlia节点id生成的意见。
正如Kademlia论文中所说,"节点ID目前只是随机的160位标识符,尽管它们同样可以像Chords中一样构造"。
Chords使用的是节点IP的SHA-1摘要。