1

pingドメインを非同期にするサービスをpythonで書いています。したがって、同時に多くの IP に対して ping を実行できる必要があります。epoll ioloop で書きましたが、パケット損失の問題があります。多くの同時 ICMP 要求がある場合、それらに対する応答の多くの部分が私のサービスに届きませんでした。この状況の原因は何ですか?また、サービスがパケット損失なしで同時に多くのホストに ping を実行するにはどうすればよいですか?

ありがとう)

4

1 に答える 1

0

問題が発生している可能性があるのは、ICMPがOSIモデルのレイヤー3であり、通信にポートを使用していないためです。つまり、ICMPは実際にはこのために設計されたものではありません。望ましい動作は引き続き可能ですが、使用しているIPスタックが邪魔になっている可能性があります。これがWindowsシステム上にある場合は、これが問題であると100%確信しています。Wiresharkを起動して、実際に着信パケットを受信して​​いることを確認します。その場合は、libpcapを使用してICMP応答を追跡します。送信に問題がある場合は、rawソケットを使用して、独自のICMPパケットを作成する必要があります。

于 2010-02-19T22:00:11.117 に答える