IPv6 的 MTU 发现
MTU (Maximum Transmission Unit),最大传输单元,是指在网络上传输的数据包的最大大小(以字节为单位)。不同的网络链路类型有不同的 MTU 值。例如,以太网的 MTU 通常是 1500 字节。
MTU 与 PMTU
- MTU 是最大传输单元
- PMTU (Path MTU) 是链路中传输实际的最大值,这个受到了木桶效应的制约,往往小于 MTU。(此时使用最小型IPv6 实现的那个设备成为了最短的那块板子)
PMTUD 过程:
IPv6 的 MTU 发现过程主要依赖于 ICMPv6 协议中的“分组过大”(Packet Too Big)消息。
-
发送方假设一个初始 MTU 值: 发送方在开始传输数据时,会假设一个初始的 MTU 值。这个值通常是发送方所在链路的 MTU 值,或者是一个默认值(例如 1280 字节)。
-
发送方设置“不分片”标志: 发送方在 IPv6 数据包的首部中设置“不分片”标志(Don’t Fragment flag)。这个标志告诉沿途的路由器:如果数据包太大,无法转发,不要进行分片,而是丢弃该数据包并发送 ICMPv6“分组过大”消息。
-
路由器检测 MTU: 数据包在传输过程中,如果经过一个 MTU 比数据包大小小的链路,该链路上的路由器会:
- 丢弃该数据包。
- 向发送方发送一个 ICMPv6“分组过大”消息。该消息中包含了该路由器所在链路的 MTU 值。
-
发送方接收 ICMPv6 消息: 发送方收到 ICMPv6“分组过大”消息后,会:
- 更新其路径 MTU 缓存,将路径 MTU 值设置为收到的 ICMPv6 消息中提供的 MTU 值。
- 使用新的路径 MTU 值重新发送数据包。
-
重复步骤 3 和 4: 如果数据包在后续的传输过程中仍然遇到 MTU 更小的链路,上述过程会重复进行,直到数据包能够顺利到达目标地址。
- 标题: IPv6 的 MTU 发现
- 作者: 三葉Leaves
- 创建于 : 2024-12-26 00:00:00
- 更新于 : 2025-01-05 18:48:33
- 链接: https://kiss1314.top/59abf7142bad/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论