MTU 和 MSS 如何影响网络?
TCP是网络协议族的重要协议之一。 TCP是一种面向连接的可靠数据传输协议。 TCP 使用 MTU(最大传输单元)来标识任何数据包的最大大小,并使用 MSS(最大段大小)来指定可以通过网络发送的数据包的最大大小。在本文中,我们将讨论 MTU 和 MSS 的大小对网络的影响。
最大传输单位:
最大传输单元 (MTU) 是计算机网络中的一种度量,它表示网络设备将接受的最大数据包。大于 MTU 的数据包会被分割成更小的部分以便通过。这个过程称为分片,由网络层完成。如果不允许分段,路由器将丢弃任何超过 MTU 的数据包。
网络层的限制直接来自数据链路层。帧用于数据链路层,每个帧都有一个最大尺寸。
例如,以太网标准规定最大帧大小为 1518 字节。以太网报头长 18 个字节,为数据包提供 1500 个字节的工作空间。结果,数据包的 MTU 为 1500 字节。
网络的 MTU 大小会对性能产生重大影响。
更大的 MTU 大小对网络的影响:
好处:
- 更大的 MTU 可以将更多数据放入更少的数据包中,从而实现更快、更高效的传输。
- 较低的开销与较大的 MTU 相关联。
- 对于相同数量的数据,更大的 MTU 需要处理更少的数据包。
- 较大的数据包会降低操作系统必须执行的处理量。
缺点:
- 大数据包在慢速链路上比小数据包占用更多带宽,导致后续数据包延迟时间更长并增加网络延迟。
- 增加 MTU 可能需要昂贵的硬件更改。
- 如果工作负载只发送小消息,则增加的 MTU 大小将无济于事。
较小的 MTU 大小对网络的影响:
好处:
- 当 MTU 较小时,网络延迟会减少。
- 较小的 MTU 大小改进了以太网的 CRC-32 算法,该算法用于数据的错误检测和纠正。
缺点:
- 更多的带宽被浪费在标头上。
- 操作系统的工作量增加。
最大段大小:
MSS(最大段大小)指定可以通过网络发送的数据包的最大大小。它是 TCP 标头的选项字段中的一个参数。几个标头附加到数据包中,每个标头都包含有关数据包源和目标的信息。数据包的非标头部分,通常称为有效载荷,由 MSS 测量。
注意:该值是一个段可以存储的最大数据量,不包括 TCP 标头。因此,如果 MSS 为 100,则实际的最大段大小可能是 120(对于标准 TCP 标头)甚至更大。
MSS 的值来源于 MTU 的值。考虑以下场景:您有 2460 字节的数据要发送。如果MTU为1500,IP头+TCP头为40字节,第一个IP包只能发送1460字节的数据。在第二个 IP 数据包中,将传递剩余的 1000 个字节。因此,如果 MSS = 1000,则 MTU 必须至少为 1040。
MSS 对网络的影响:
好处:
- 可以通过减小最大 TCP 数据包大小来减少网络延迟。
- MSS 通常在 TCP 三向握手期间确定。 MSS 不是为每个数据包协商的,而是为整个 TCP 会话协商的。
- 操作系统可用于设置或更改最大大小。
缺点:
- MSS 通常在 TCP 三向握手期间确定。如果 MSS 设置得太低,网络流量流会被分解成大量的小数据包,这会对性能产生负面影响。
- 超过网络上最大 MSS 的数据包将被简单地丢弃。