为什么我在find_node响应消息中修改Compact节点信息不是26个字节?

时间:2017-08-14 10:27:18

标签: p2p bittorrent dht kademlia

在BEP5中说

  

节点的联系信息被编码为26字节的字符串。也称为“压缩节点信息”,网络字节顺序中的20字节节点ID具有连接到末尾的紧凑IP地址/端口信息。

  

当一个节点收到一个find_node查询时,它应该用一个键“nodes”和一个字符串的值来响应,该字符串包含目标节点的紧凑节点信息或者它自己的路由表中最近的K(8)个好节点。 / p>

在我的find_node响应java中,Compact节点信息字节不是26个字节,为什么?

1 个答案:

答案 0 :(得分:1)

密钥节点的值可以包含多个节点,如BEP5的引用所示:

  

...或其自己的路由表中最近的K(8)个良好节点。

8 * 26 = 208字节值长度,8 压缩节点信息连接在一起。
许多客户端甚至发送了两倍的节点:16 * 26 = 416字节长度。

在实践中,客户应接受任何可被26整除的长度。