在 linux 系统中,我使用 scapy
发送高频 UDP ping。例如:每20毫秒,发送一个UDP包;一共100个。但是我只能得到前几个ICMP端口不可达的回答。
pkt = IP(dst=dst)/UDP(dport=RandShort())
ans,_ = sr(pkt*100, inter=0.02, timeout=3)
我尝试用tcpdump
抓包,发现所有的UDP包都发到了目标机器上,只有少数ICMP包回到了源机器。什么会导致这种情况?
如果我使用 ICMP ping,这不会发生。
我猜:
- 可能是目标机器处理icmp包的系统内核参数导致
- 可能是icmp包路由开关策略引起的。
最佳答案
ICMP数据包的速率被内核硬限制以防止DDOS攻击。通常每秒只发送 1 个数据包。几乎不可能比任何外部(互联网)路由器更快地获得任何东西。 Example
关于linux - 使用scapy高频发送UDP ping,为什么只收到前几个ICMP端口不可达报文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419474/