MTU是什么?如何检测MTU大小?

本文解释了MTU的概念,它定义了网络数据包的最大尺寸。MTU在不同路径上可能变化,超大包会被路由设备处理。通过ping命令的-f和-l参数可以探测链路MTU,如出现分片提示即为超过MTU。文章还分析了1472字节载荷情况下,MTU的计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MTU是什么

Maximum Transmission Unit (MTU)指的是一个网络传输数据包的最大大小,一般情况下最大为1500 字节。MTU是IP分片的最大单位,是一个网络层概念,所以链路层报文头不在MTU之内,节选RFC791 IP协议的部分内容

MTU在什么地方产生效果

mtu存在典型的短板效应,任意两个设备之间如果链接通路不同,mtu也不太一样

如图所示,设备A到设备B之间的网络通路,如果走链路A其MTU=1500,如果走链路2,则MTU=1400,链路中所有路由器和交换机设备等的最小值。

如果发送包超过MTU会怎么样

如果发送包大小超过了MTU大小,链路中的路由设备或者交换机设备会采取丢掉包或者将包分成两个包切片的方法处理超大包。具体处理方式由中间设备决定。

所以软件程序应该控制所有的包大小不要超过MTU

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

ping -f -l <包大小> <对端IP>
ping -f -l 1473 172.20.75.56

使用ping工具可以检测本设备到某个对端设备之间链路的MTU大小

ping 命令的-f 参数可以控制发送数据包不能使用分片的方法,只能发送单个包

ping命令的 -l参数能够控制发送每个包的大小,该命令会发送TCP包进行探测连通性,-l 后跟的包大小参数不包含28字节的TCP包头

探测原理是如果能够正常发送,说明包大小不超过MTU,会出现如下打印,包能正常发送

如果包大小超过了MTU则会出现如下打印,说明包大小超过MTU

只需要不断调整包大小,直到出现“Packet needs to be fragmented but DF set.”的异常,就能探测到链路的MTU大小。

分析载荷为1472时的情况

通过wireshark 抓包得到PING命令使用的是ICMP协议,包总长度为1514字节

其中链路层Ethernet II帧包含14个字节, 但是MTU是一个网络层概念,不包含链路头

IP报文头20字节

ICMP的报文头一共8字节

故MTU = 1472 + 8 (ICMP头) + 20(IP头) = 1500

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jacen.L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值