Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在用python编写异步ping域的服务。所以它必须能够同时ping多个IP。我在epoll ioloop上写的,但是丢包有问题。当同时有许多 ICMP 请求时,对它们的大部分回复都没有到达我的服务范围。什么可能导致这种情况以及如何使我的服务同时 ping 多台主机而不会丢失数据包?
谢谢)
您可能遇到的一个问题是,ICMP 是 OSI 模型的第 3 层,并且不使用端口进行通信。简而言之,ICMP 并不是为此而设计的。所需的行为仍然是可能的,但您使用的 IP 堆栈可能会妨碍您,如果这是在 Windows 系统上,那么 100% 确定这是您的问题。我会启动 Wireshark 以确保您确实收到了传入的数据包,如果是这种情况,那么我将使用 libpcap 来跟踪 ICMP 回复。如果问题在于发送,那么您将不得不使用原始套接字并构建您自己的 ICMP 数据包。