问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Ethernet帧MTU最大值验证方法

创作时间:
作者:
@小白创作中心

Ethernet帧MTU最大值验证方法

引用
CSDN
1.
https://blog.csdn.net/m0_49035150/article/details/137863400

最大传输单元MTU(Maximum Transmission Unit),是指网络能够传输的最大数据包大小,以字节为单位。

MTU是数据链路层的概念,指数据链路层对数据帧长度的限制。不同链路介质类型的网络有不同的默认MTU值,以下是一些常见网络的默认值:

以太网最大的数据帧是1518字节,这样刨去帧头14字节和帧尾CRC校验部分4字节,那么剩下承载上层IP报文的地方最大就只有1500字节,这个值就是以太网的默认MTU值。这个MTU就是网络层协议非常关心的地方,因为网络层协议比如IP协议会根据这个值来决定是否把上层传下来的数据进行分片,如果单个IP报文长度大于MTU,则会在发送出接口前被分片,被切割为小于或等于MTU长度的IP包。

MTU示意图

超过MTU的报文如何进行分片?

以太网缺省MTU=1500字节,这是以太网接口对IP层的约束,如果IP层有<=1500字节需要发送,只需要一个IP包就可以完成发送任务;如果IP层有>1500字节数据需要发送,需要分片才能完成发送。

以主机发送一个数据载荷长度为2000字节的报文为例说明其分片的过程(假设出接口的MTU值为1500)。在网络层会对报文进行封装,其结构组成:IP头部20字节+数据载荷长度2000字节,报文封装后,整个报文长度为2020字节。在出接口进行转发的时候,发现IP报文的长度超过了MTU的值1500,因此要进行分片处理,详情见下图。

IP分片示意图

如何判定一个链路的MTU大小

ping -f -l <包大小> <对端IP>
ping -f -l 1472 198.87.177.4

使用ping工具可以检测本设备到某个对端设备之间链路的MTU大小
ping 命令的-f 参数可以控制发送数据包不能使用分片的方法,只能发送单个包
ping命令的 -l参数能够控制发送每个包的大小,
ping命令是基于ICMP协议,报文封装如下图所示
由上图可知Ping命令的ICMP消息封装在IP数据包中,ICMP消息头部占8个字节,IP头部占20个字节,故在默认MTU值为1500字节的网络中,Ping命令的最大字节数是1472字节(1500-8-20=1472),实际验证如下图:

下图1472字节,Ping测试成功

下图1473字节,Ping测试失败,提示需要拆分数据包

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号