面试官提问:
请解释 MTU 和 MSS 的含义,它们的区别是什么?在网络传输中起什么作用?
应聘者参考回答:
MTU 和 MSS 都与数据包的大小控制有关,但它们处于不同的协议层,作用范围不同。具体如下:
一、定义与作用
- MTU(Maximum Transmission Unit)最大传输单元
- 属于链路层参数,由底层网络设备决定;
- 指在某种物理网络协议下,一个数据帧能够承载的最大数据量(单位为字节);
- 以太网标准 MTU 通常为 1500 字节;
- 若 IP 数据报超过 MTU,将在网络层进行 IP 分片,每个分片不超过 MTU。
- MSS(Maximum Segment Size)最大报文段长度
- 属于传输层 TCP 协议参数;
- 表示 TCP 连接中单个报文段中负载数据部分的最大长度,不含 TCP 和 IP 头部;
- MSS 的典型值为:MSS = MTU - IP头部(20字节) - TCP头部(20字节) = 1460 字节;
- TCP 在连接建立时通过 SYN 报文协商双方 MSS,传输过程中若 TCP 报文大于 MSS,会被分段。
二、区别对比
项目 | MTU | MSS |
---|---|---|
所属协议层 | 链路层 | 传输层(TCP) |
控制范围 | 整个 IP 数据报 | TCP 报文中数据部分 |
是否包含头部 | 包含所有头部 | 不包含 TCP/IP 头部 |
影响 | 超过 MTU 会导致 IP 分片 | 超过 MSS 会导致 TCP 分段 |
默认值(以太网) | 1500 字节 | 1460 字节 |
三、工作原理举例
- 在以太网中,MTU 是 1500 字节;
- TCP 在握手阶段协商得出 MSS 为 1460 字节;
- 那么每个 TCP 报文段最多发送 1460 字节的有效数据,再加 20 字节 TCP 头部 + 20 字节 IP 头部,刚好不超过 MTU,避免 IP 分片。
四、总结
- MTU 是链路层约束,MSS 是 TCP 层约束;
- 通过协商合理的 MSS,可以有效避免 IP 分片,提高网络性能与稳定性;
- 实际项目中建议:在链路复杂或中间设备不支持 IP 分片的网络环境中,主动调整 MSS 限制数据包大小,以增强传输可靠性。
😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。