首页 > 解决方案 > 为什么我的两台云服务器在 dht 爬虫上的行为不同?

问题描述

我写了一个基于 .java 的 dht 种子爬虫Bittorrent ProtocolA它在我从中获得一些种子的 1c2g1m 云服务器上运行良好。

然后我又买了一个云服务器B,叫Lighthouse. B为 1c2g5m,限制为 1000g。但是我的爬虫没有工作B,我无法得到任何响应,例如find_node响应。

我测试了B使用 linuxnc进行 udp 发送和接收。这里没有问题。我还使用了两台服务器互相发送和接收 udp 数据包。也没问题。

另一个奇怪的是,我收到了一些sample_infohashes定义在bep_0051B的请求,ip是127.0.0.1:43928,哈哈哈……我是用来router.bittorrent.com, 6881初始化的。所以我认为这些sample_infohashes消息来自router.bittorrent.com.

为什么我的两个云服务器的行为如此不同?

标签: javalinuxcloudbittorrentdht

解决方案


您的问题没有提供足够的信息来查明原因。在您的 bittorrent 爬虫和服务器的网络接口之间存在许多可能出错的抽象层。

爬虫可能绑定到错误的接口。DHT 数据包可能格式不正确并被远程对等方忽略。您可能正在错误地解析响应。在服务器或云提供商基础设施中,可能有防火墙静默丢弃东西。主机可能在无法访问部分 Internet 的情况下路由错误。很多可能的原因。

您只需尝试各种网络诊断工具,例如tcpdump/ wiresharkss、等nstattraceroute并收集更多数据以了解实际发生的情况。由于您的问题也被标记为 java: 确保有用的异常消息不会被静音。

由于您有一个正在工作的主机和一个不工作的主机,因此您可以比较结果,这应该会使事情变得容易得多。

您可能还想测试在不同客户端之间发送消息,以防其中一个出现错误。


推荐阅读