【网络】什么是最大传输单元 ( MTU)|MTU 优化

本文详细介绍了最大传输单元(MTU)的概念,包括以太网的MTU值1500字节、IP分段以及Path MTU Discovery技术。MTU对网络编程中的TCP和UDP性能有直接影响,例如UDP的最大数据长度应控制在1472字节内以避免IP分段。Nagle算法和TCP_CORK选项也会影响数据包的发送策略,Nagle算法旨在减少小包传输,而TCP_CORK则允许延迟发送以提高效率。对于实时性要求高的应用,可以关闭Nagle算法,通过TCP_NODELAY选项立即发送数据。此外,TCP和UDP数据包大小受MTU限制,UDP建议不超过548字节,以适应Internet的最小MTU值576字节。
摘要由CSDN通过智能技术生成

目录

最大传输单元MTU

最大传输单元 (MTU)

IP 分段(IP Fragmentation)

Path MTU Discovery

关于网络编程中MTU、TCP、UDP优化配置的一些总结

TCP,UDP数据包的大小以及MTU


最大传输单元MTU

原文:https://notfalse.net/23/mtu

比较好的简介结构:https://www.cloudflare.com/zh-cn/learning/network-layer/what-is-mtu/

(Maximum Transmission Unit, MTU)

封装 与 拆装 一文,
提及了 区段 (Segment)、资料包 (Datagram)、帧 (Frame)、封包 (Packet) 的概念。
应用层的资料,经由逐层的 封装 (Encapsulation),
最后成为 数据链路层 (Data-Link Layer) 的 帧 (Frame) 并传送。

encapsulation

但是,帧 (Frame) 太大会发生什麽事?

 

传输需耗损大量的 缓衝区 (buffer) 大小
传输媒介可能被某一传送端独佔,造成堵塞

因此,数据链路 (Data-Link) 规范了 帧 (Frame) 的大小上限,
也就是 — — 最大传输单元 (Maximum Transmission Unit, MTU),
如果没有这些缺点, MTU 当然越大越好啦!


最大传输单元 (MTU)


不同的 数据链路层,有不同的 MTU。
如:
以太网路 (Ethernet) 的 1500 个位元组,
IEEE 802.3/802.2 的 1492 个位元组,
光纤分散式数据介面 (FDDI) 的 4352 个位元组…。
以 以太网路 (Etherner) 为例:

Ethernet-frame-format

一个 以太网路 帧(Frame),最大的长度为 1518 位元组 (octet),
去掉表头与尾端数据后,载荷的最大资料长度则为 1500 octet,
且资料最小长度需为 46 octet,不足的话就用 填充位元 (padding) 填满至 46 为止。

 
使用指令:

netstat -i

可显示系统网路介面信息(含 MTU)

IP 分段
(IP Fragmentation)

 
网络层的 IPv4 与 IPv6,
其封包大小上限,分别为 65535 与 65575 位元组 (octet),
并提供较大的封包选项 — — 巨型封包 (jumbograms)。
远远超出了许多数据链路层的 帧大小(MTU)!
IP 分段 (IP Fragmentation) 即是其中一种解法:

IP 会将封包切割成多个较小的 (小于 MTU) 片段 (fragment),使其能透过数据链路层传输 ,
目的端接收完所有片段后,再将片段 (fragment) 进行重组。

 分段 (fragmentation),可能由传输路径中的任何一台路由器来做 (含来源主机),
且被分段的封包 — — 片段 (fragment) 可能经由不同路由方式,
只要最终达到相同的目的地即可。
(IPv6 只有来源端可以做分段)
将 IP 数据包 (IP Datagram) 分段的主机或路由器,
会复制必要栏位到各个片段中,
并更改 标志、片段偏移量、(封包)总长度,与重新计算各个分段的检验和。
(IP 检验和,不含虚拟表头)
最后,目的端接收完所有片段后,再将片段 (fragment) 进行重组:

IP Datagram 格式

IP Datagram 格式

 
将在未来讨论 IP 协定进一步说明。


Path MTU Discovery

如果 IP Fragmentation 任一片段遗失、毁损呢?

 答案是: 目的端将无法重组这个封包。
更重要的是:

网路层的 IP 并不会处理重送

 这对有重送机制的传输层 (Ex: TCP),降低了传输效率 (无法只重送一个 片段);
对没有重送机制的传输层 (Ex: UDP),增加了资料的遗失率。
Path MTU Discovery 技术,有效的避免 IP Fragmentation:

找出 来源 与 目的端路径中,
所有数据连接层的 最小 MTU。
(通常,为以太网路的 1500 octet)

 许多可靠的传输层 (如: TCP),会以此值做为参考,
调整 最大区段长度 (Maximum Segment Size, MSS)。
最简单的算法:

MSS = MTU - 20 octet (TCP 固定表头) - 20 octet (IP 固定表头)
或 其他动态调整演算法,
常见的 MSS 有 1460、1400、1380…。
 
而没有此机制的传输层 (如: UDP),
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值