我正在实现DHT protocol,并且我已经收到了许多find_node响应,并从中获得了新的节点。我将节点放在队列中,也向它们发送一个find_node请求。我在Linux上运行我的java程序。
所以我认为我的解码是正确的,我可以从find_node响应中解析IP和端口。
但奇怪的是,我从未收到过get_peers或announce_peers请求。是什么错误导致了我的情况?
我不能解释的一件事是,在find_node响应中,我得到了一个关键的IP,它是解析后我自己的IP和端口。但是端口每次都是不同的。为什么端口会有所不同?
发布于 2021-01-12 15:17:33
,但奇怪的是,我从未收到过get_peers或announce_peers请求。是什么错误导致了我的情况?
分布式哈希表节点A只有在您被添加到另一个节点B的某个路由表的情况下才会发送请求。只有当您的节点表现良好,即正常运行时间良好,具有稳定的IP、端口和ID,并正确响应各种查询类型(如ping)时,您才会被添加到路由表中。
我不能解释的一件事是,在find_node响应中,我得到了一个关键IP,它是我自己的IP和解析后的端口。但是端口每次都是不同的。为什么端口会有所不同?
如果你的公开可见的IP:port tuple不稳定,bittorrent DHT就不能工作。
https://stackoverflow.com/questions/65491641
复制相似问题