没有得到所有ICMP超时消息:为什么?

Ric*_*son 6 python scapy packet icmp ttl

我正在使用Scapy来重放一些我改变TTL值的转储数据包.即使TTL = 1,我也得到了非常奇怪的结果.

当我将测试时间彼此分开时,我可以从大约40%到95%的数据包中获得ICMP超时消息.然后我可以递归地重放未应答的数据包,并且每次获得的回复数据包的百分比与之前相同或多或少.

这是为什么?

我一直在发送间隔为0.1秒的数据包.这应该没问题吧?我的超时值是10秒,这应该是非常保守的.

这有什么不对?

Mik*_*ton 5

你所说的基本上你只能在给定的时间内测试这么多无法访问的主机.一个可能的原因:许多路由器限速ICMP消息.

ping在做其他事情之前测试主机是否成功要好得多; 通过这种方式,您可以确认可达性.缺点是默认情况下MS Windows阻止ping.

如果不能ping,那么您需要增加探测之间的时间,或者在返回ICMP消息的路由器上提高ICMP不可达速率.

编辑:

根据评论,看起来你正在scapy为了处理流量的能力而陷入困境.我通过在后台发送scapy和生成tcpdump以接收流量来提高吞吐量.