MTU、MSS

MTU 最大传输单元(Maximum Transmission Unit,MTU):是链路层中的网络对数据帧的一个限制(所以是在网卡上配置),一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。

为什么MTU一般是1500

这其实是由传输效率决定的。首先,虽然我们平时用的网络感觉挺稳定的,但其实这是因为TCP在背地里做了各种重传等保证了传输的可靠,其实背地里线路是动不动就丢包的,而越大的包,发生丢包的概率就越大。

那是不是包越小就越好?也不是

但是如果选择一个比较小的长度,假设选择MTU300ByteTCP payload = 300 - IP Header - TCP Header = 300 - 20 - 20 = 260 byte。那有效传输效率= 260 / 300 = 86%

而如果以太网长度为1500,那有效传输效率= 1460 / 1500 = 96% ,显然比 86% 高多了。

所以,包越小越不容易丢包,包越大,传输效率又越高,因此权衡之下,选了1500

Internet上标准的MTU(最小的MTU,链路层网络为x2.5时)为576,那么如果不设置,则MSS的默认值就为536个字节。很多时候,MSS的值最好取512的倍数。TCP报文段的分段与重组是在运输层完成的。

MSS(Maximum Segment Size,最大段长度):是TCP头部的一个字段,用于限制应用数据段最大长度。

只有在SYN报文中使用MSS,即三次握手的前两个报文中。

### 三、MTUMSS 的定义及长度 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]。 --- ### 四、MTUMSS网络传输中的关系 在网络通信过程中,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 限制。 --- ### 五、示例:MTUMSS 的封装关系 假设某网络链路支持标准以太网帧格式,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] 合理配置 MTUMSS 对于提升网络性能、减少分片和提高传输效率具有重要意义。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值