第一次 ping 后 MTU 发生变化

网络工程
2021-07-23 20:12:51

我注意到一种奇怪的行为,我的知识没有答案。所以我想知道MTU。第一次ping:

ping -c 1 -s 1800 -M do google.com
PING google.com (216.58.209.14) 1800(1828) bytes of data.
ping: local error: Message too long, mtu=1500

--- google.com ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

所以我得出结论,MTU 是 1500。但在发送 1472 个字节后,我得到:

ping -c 1 -s 1472 -M do google.com
PING google.com (216.58.209.14) 1472(1500) bytes of data.
From 192.168.55.1 (192.168.55.1) icmp_seq=1 Frag needed and DF set (mtu = 0)

--- google.com ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

接着:

ping -c 1 -s 1500 -M do google.com
PING google.com (216.58.209.14) 1500(1528) bytes of data.
ping: local error: Message too long, mtu=552

--- google.com ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

为什么变了?

1个回答

-M do设置不分段位(DF),所以你只能成功不能超过路径MTU时平。

-s 1472总数据包大小为 1500 是在普通以太网上工作的最大 ping 有效负载像 PPPoE 这样的协议会影响到它,所以路径中的路由器报告 MTU 超出,并且没有回声回复。

-s 1500由于为 ICMP 回显请求-s指定了可选的有效负载,因此您甚至无法在没有碎片的情况下进行本地发送IP 包头为 20 字节,ICMP 头为 8 字节,因此 1472 字节是普通以太网的最大 ping 负载。