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

时间:2012-06-05 14:05:26

标签: python packet icmp scapy ttl

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

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

为什么?

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

这里有什么问题?

1 个答案:

答案 0 :(得分:5)

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

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

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

编辑:

根据评论,看起来你正在为scapy处理流量的能力做准备。我过去通过scapy发送并在后台生成tcpdump来接收流量,从而提高了吞吐量。