我正在努力实现另一个 bittorrent 客户端,此时正在与 DHT 作斗争。它是根据本规范http://www.bittorrent.org/beps/bep_0005.html实施的,但开始调试它我注意到网络上其他节点的响应有所不同。
例如, find_node 应该返回目标节点信息或 8 个最近的节点。大多数节点回复 34 个最近的节点,通常这 34 个节点中只有 1-3 个节点成功回复了随后的 ping 请求。
是否有其他文件具有更好的实施建议?可能已经证明使用 15 分钟间隔将节点状态更改为有问题的效率不高,我必须使用 10 或其他数字?我在哪里可以找到最好的最新建议?
还有一件奇怪的事。像 router.bittorrent.com 这样的引导节点会使用更接近的节点进行回复,并且通常“节点”BDictionary 属性缓冲区长度不能被 6 整除(紧凑节点信息:IP 为 4,端口为 2)。现在,我只是在最接近 6 长度的整除处切断了缓冲区,但这一切都很奇怪。有谁知道为什么会发生这种情况?