MTU与MSS的关系

MTU与MSS详解
本文详细解释了MTU(最大传输单元)和MSS(最大报文段长度)的概念及两者之间的关系。MTU是数据链路层的载荷部分的最大长度,而MSS则是TCP协议中用于协商的最大数据长度。

MTUMSS的关系

1MTU:   Maximum Transmission Unit  最大传输单元

    首先看一下Ethernet帧的结构示意图:

 

       Ethernet帧的结构由6字节目标地址(48 bit)段、6字节的原地址段、2字节的type段、46-1500字节的数据段以及4字节帧尾CRC校验部分(FCS)。这里说明一下前导符是是在物理层添加上去的,并不是正式帧的一部分。

      从上图可见,一个以太网帧最小64 Bytes(6+6+2+46+4) 最大1518 Bytes(6+6+2+1500+4),对于小于或者大于这个大小范围的以太网帧,一般的以太网转发设备都会丢弃这些数据帧。由于以太网Ethernet最大的数据帧长是1518 Bytes这样,刨去以太网帧的帧头(目标、源、类型共计14字节)14 Bytes和帧尾CRC校验部分FCS 4 Bytes,那么承载上层协议的Data域最大就只能有1500 Bytes。而这个值就是我们称之为MTU

      MTU,即最大传输单元,这是一个数据链路层的概念,限定的是链路层数据帧长度。概念上是这样讲,但实际上MTU限制的并非数据链路层数据帧的长度,而是数据链路层的载荷部分(数据域)的长度。以上图所示Ethernet帧的结构可见,数据载荷部分的最大长度为1500 Bytes

 

2MSS: Management Support System  最大报文长度

    最大报文段长度MSS选项是TCP协议定义的一个选项(TCP协议里面的一个概念)MSS选项用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度(MSS是发送方与接收方通过TCP握手协商得出的)

    MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20 BytesTCP数据段的包头20 Bytes)所以往往MSS1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。

3关系:

网上有文章这样描述:大家可以参考理解
    MSS指的是TCP中的一个概念。MTU是一个没有固定到特定OSI层的概念,不受其他特定协议限制。也就是说第二层会有MTU,第三层会有MTU,像MPLS这样的第2.5层协议,也有自己的MTU值。并且不同层之间存在关联关系。
    举个例子:如果你要搬家,需要把东西打包,用车运走。这样的情况下,车的大小受路的宽度限制;箱子的大小受车限制;能够搬运的东西的大小受箱子的限制。这时可以将路的宽度理解成第二层的MTU,车的大小理解成第三层的MTU,箱子的大小理解成第四层的MTU,搬运的东西理解成MSS

MTUMSS的关系可以简单理解为:

MTU= MSS+TCP层头部长度+IP层头部长度 (MSS是指应用层在一个数据包内最大能传输的字节数,MTU是指IP层在一个数据包内最大能传输的字节数

### 三、MTU MSS 的定义及长度 MTU(Maximum Transmission Unit,最大传输单元)是指在某一网络链路中能够传输的**最大数据帧大小**,单位为字节。该值包括 IP 头部和 TCP 头部在内的整个 IP 数据包的最大长度,但不包括链路层的头部(如以太网头部)和尾部校验信息[^4]。对于标准以太网而言,MTU 的默认值为 1500 字节。 MSS(Maximum Segment Size,最大分段大小)是 TCP 协议中的一个参数,表示在单个 TCP 段中所能承载的**最大应用层数据长度**,不包括 TCP 和 IP 头部,但包含 TCP 选项以外的数据部分。通常 MSS 是通过从 MTU 中减去 IP 头部(20 字节)和 TCP 头部(20 字节)得到的,因此在标准以太网环境下,MSS 的典型值为 1500 - 20 - 20 = 1460 字节[^2]。 --- ### 四、MTU MSS 在网络传输中的关系 在网络通信过程中,MTU 决定了链路层一次可以传输的最大 IP 包大小。如果上层协议(如 TCP)发送的数据长度超过路径上的最小 MTU,则 IP 层会进行分片处理,将数据分割为多个不超过 MTU 的片段进行传输。这种分片操作会增加延迟并可能引起丢包,因此通常希望避免分片。 为了防止 IP 分片,TCP 引入了 MSS 参数,在建立连接时通过三次握手协商双方能够接收的最大数据段长度。这样可以确保每个 TCP 段加上 TCP/IP 头部后的总长度不会超过路径 MTU,从而避免 IP 分片的发生[^3]。 例如,在使用 VLAN tag 的情况下,由于以太网帧头部增加了 4 字节的 VLAN 标签,导致实际可用的 MTU 减少到 1500 - 4 = 1496 字节。此时 MSS 应相应调整为 1496 - 20(IP 头部) - 20(TCP 头部) = 1456 字节,以确保整体数据包不超过链路的 MTU 限制。 --- ### 五、示例:MTU MSS 的封装关系 假设某网络链路支持标准以太网帧格式,MTU 为 1500 字节: ```text +-----------------------------+ | Ethernet Header (14 bytes) | +-----------------------------+ | IP Header (20 bytes) | +-----------------------------+ | TCP Header (20 bytes) | +-----------------------------+ | Application Data (≤1460B) | +-----------------------------+ | FCS (4 bytes) | +-----------------------------+ ``` 其中,TCP 可承载的应用数据最大为 1460 字节,即 MSS 值。 若启用 VLAN tag,则以太网头部变为 18 字节,MTU 实际有效载荷减少为 1500 - 18 = 1482 字节: ```text +----------------------------------+ | Ethernet Header (14 bytes) | +----------------------------------+ | VLAN Tag (4 bytes) | +----------------------------------+ | IP Header (20 bytes) | +----------------------------------+ | TCP Header (20 bytes) | +----------------------------------+ | Application Data (≤1440B) | +----------------------------------+ | FCS (4 bytes) | +----------------------------------+ ``` 此时 MSS 应调整为 1440 字节,以保证整体数据不超过 MTU 限制。 --- ### 六、总结 MTU 是链路层的概念,决定了单次可传输的最大数据帧大小;而 MSS 是传输层 TCP 的概念,用于控制每次传输的数据段大小,避免 IP 分片。两者之间的关系为: - **MSS = MTU - IP header length - TCP header length** - 当网络中存在 VLAN tag 或其他扩展字段时,MSS 需相应减小以适应 MTU 的变化[^2] 合理配置 MTU MSS 对于提升网络性能、减少分片和提高传输效率具有重要意义。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值