美文网首页
ping 包长度及 MTU

ping 包长度及 MTU

作者: yestyle | 来源:发表于2018-08-29 22:07 被阅读545次

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

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

Windows

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

ping 192.168.1.1 -l 1000

使用 Wireshark 抓包看看:

可以看到 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 抓包看看:

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

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

MTU

维基百科对 MTU 的定义

In 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:

大于 1472 的值将导致分片:

小结

  • Windows 和 Linux 下的 ping 命令分别使用 -l 和 -s 指定包长度。
  • ping 命令指定的包长度是 ICMP payload 的长度(不包括 ICMP header),加上 42 字节后为以太网帧的总长度。
  • MTU 指的是网络层协议的包长度。
  • ping 命令中指定的能 ping 通且不分片的最大长度是 MTU - 28。

以上。

相关文章

  • ping 包长度及 MTU

    ping 命令是测试网络是否连通最常用的命令,而无论是 Windows 还是 Linux,ping 命令都可以指定...

  • OPNsense测试并修改MTU值

    MTU值是ping包+8+20,上面不拆包能发出去的长度是1464,+8+20=1492 输入 命令直接生效。 或...

  • 为何抓包中出现大于MTU的数据包?

    如图所示,包的长度大于MTU 网卡开启了TCP Segmentation Offloading功能(简称TSO):...

  • 【MTU】网络链路MTU大小测试

    一、 关于Ping -l 和 MTU 的详细说明 Windows xp默认的MTU=1500(字节),即允许发送不...

  • 【MTU】网络链路MTU大小测试

    一、ping man 文档 cat ping_manual.txt 二、协议头大小 三、各系统 MTU 大小测试 ...

  • 用 ping 查找 MTU

    MTU = max icmp data + icmp header(8 bytes) + ip header(20...

  • linux常用网络命令(下)

    上一节题目:为什么ping的包大小不能超过1500? 这是因为每个子网都有MTU值的设置,它就是当前网络传输的最大...

  • 调整网卡MTU值

    问题:如果能ping通外网域名,但是无法访问,这种情况通常是因为网卡的mtu值过高。那么该如何查看网卡的mtu值以...

  • TCP/IP中的分段分片问题

    MTU是用来限制数据链路层的数据帧的长度大小(可以视作对IP层的限制),以以太网为例,以太网MTU长度为46字节~...

  • MTU

    MTU 概念 MTU( Maximum Transmission Unit),最大传输单元。用来设置 一个数据包的...

网友评论

      本文标题:ping 包长度及 MTU

      本文链接:https://www.haomeiwen.com/subject/qkklwftx.html