我注意到一种奇怪的行为(至少,我无法出去)。
平IP,指定数据包大小:
ping -s 128 8.8.8.8
我得到:
PING 8.8.8.8 (8.8.8.8) 128(156) bytes of data.
72 bytes from 8.8.8.8: icmp_req=1 ttl=43 (truncated)
平网站,指定数据包大小:
ping -s 128 www.google.com
我得到:
PING www.google.com (173.194.35.19) 128(156) bytes of data.
136 bytes from mil01s16-in-f19.1e100.net (173.194.35.19): icmp_req=1 ttl=52 time=8.36 ms
那么,为什么 ping 纯 IP 数据包大小会被截断呢?
从平伙计,我得到:
-s packetsize:指定要发送的数据字节数。默认值为 56,与 8 个字节的 ICMP 标头数据组合时,转换为 64 个 ICMP 数据字节。
答案1
看起来这只是 Google DNS 服务器施加的限制。他们显然将响应限制为 72 字节,无论发送的数据包有多大。这可能是防止其服务器被用于某种 DOS 攻击,或防止其上行链路因大型 ping 响应而过载的一种方法。
看肯·菲利克斯安全博客。他写:
以谷歌为例,那里有 ipv4 dns 服务器,可能每秒都有天知道是谁在 ping。因此,他们部署了 icmp (echo-reply) 速率控制。
[示例已省略]
所以我的 200 字节回显请求,只返回了 72 字节。他们必须这样做,否则,他们会看到更多的 icmp 流量出站,这将与 DNS 响应或其他关键业务服务的交付的整个目标发生冲突。