linux ping mtu值,ping 包长度及 MTU

ping 命令是测试网络是否连通最常用的命令,而无论是 Windows 还是 Linux,ping 命令都可以指定包长度,这对于验证网络设备的 MTU 非常有帮助。

先来看看在不同的操作系统下如何指定 ping 包长度及其各自的含义。

Windows

Windows 的 ping 命令通过 -l 参数指定包长度:> ping 192.168.1.1 -l 1000

使用 Wireshark 抓包看看:b5d76a3af168e94a32f9d114f502d040.png

可以看到 Length 为 1042 字节,比指定的包长度多了 42 字节。注意到 ICMP data 的长度正好是 1000 字节,加上 ICMP header 8 字节,IP header 20 字节,Ethernet header 14 字节,正好是 1042 字节。

也就是说,ping 命令指定的是 ICMP payload 的长度(不包括 ICMP header)。ping 命令作为 ICMP 协议的具体实现,这样的设定也符合逻辑。

当不使用 -l 参数时,默认的包长(ICMP payload)是 32 字节。

GNU/Linux

Linux 的 ping 命令通过 -s 参数指定包长度:$ ping 192.168.1.1 -s 1000

同样使用 Wireshark 抓包看看:74c06fcd757040ee9200db74241cf356.png

可以看到,Length 同样是 1042 字节,但 ICMP data 只有 992 字节,这是因为在 ICMP data 之前还有 8 个字节用于填入时间戳,也属于 ICMP payload 的一部分,只是 Wireshark 解析时分开显示而已。

当不使用 -s 参数时,默认的包长(ICMP payload)是 56 字节。

MTUIn computer networking, the maximum transmission unit (MTU) is the size of the largest protocol data unit (PDU) that can be communicated in a single network layer transaction.

也就是说,MTU 是 Maximum Transmission Unit(最大传输单元)的缩写,指的是「网络层」单次传输的最大字节数。

常见的 MTU 设置为 1500。而以太网帧长度的允许范围是 64—1518 字节(不考虑 jumbo 帧),指的是以太网线路上可传输的整个以太网帧的长度,扣除 14 字节以太网帧头、4 字节帧校验和之后,最大值正好是 1500 字节。

ping 与 MTU

假如要使用 ping 命令验证网络设备的 MTU,应该如何指定 ping 命令的包长度参数呢?由于 MTU 是整个 IP 包的最大长度,那么 ICMP 包的最大 payload 就是 MTU - 20 (IP header) - 8 (ICMP header),因此能 ping 通且不分片的最大参数值是 MTU - 28。

假如 MTU 为 1500,那么 ping 命令的长度参数最大可指定为 1472:3be55ba5093b69c94f8d7e93ee05ea47.png

大于 1472 的值将导致分片:f89e91d9344b7a15b15340156d890a0c.png

小结Windows 和 Linux 下的 ping 命令分别使用 -l 和 -s 指定包长度。

ping 命令指定的包长度是 ICMP payload 的长度(不包括 ICMP header),加上 42 字节后为以太网帧的总长度。

MTU 指的是网络层协议的包长度。

ping 命令中指定的能 ping 通且不分片的最大长度是 MTU - 28。

以上。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值