linux - 使用scapy高频发送UDP ping,为什么只收到前几个ICMP端口不可达报文?

标签 linux networking udp scapy icmp

在 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,这不会发生。

我猜:

  1. 可能是目标机器处理icmp包的系统内核参数导致
  2. 可能是icmp包路由开关策略引起的。

最佳答案

ICMP数据包的速率被内核硬限制以防止DDOS攻击。通常每秒只发送 1 个数据包。几乎不可能比任何外部(互联网)路由器更快地获得任何东西。 Example

关于linux - 使用scapy高频发送UDP ping,为什么只收到前几个ICMP端口不可达报文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419474/

相关文章:

linux - 将 linux 命令的值存储到 groovy 脚本(soapui)中的变量

linux - 如何在 Ubuntu 中配置 openvpn

java - 如何在循环中发出 Volley 请求,直到出现特定响应

c++ - 当一个套接字在后台执行操作时如何处理两个套接字

php - 从 PHP 启动独立的 Python 进程

linux - 如何消除 sox 中 0.1 秒的间隙?

ios - 如何在 iOS 上以 React Native 连接到真实设备上的本地主机?

wcf - 什么时候适合在 webclient 或 httpwebrequest 上使用 WCF?

java - 组播的替代方案

java - 如何在 Spring Boot 中实现 UDP 服务器以读取来自客户端的输入