IPv6 的 MTU 发现

三葉Leaves Author

MTU (Maximum Transmission Unit),最大传输单元,是指在网络上传输的数据包的最大大小(以字节为单位)。不同的网络链路类型有不同的 MTU 值。例如,以太网的 MTU 通常是 1500 字节。

MTU 与 PMTU

  • MTU 是最大传输单元
  • PMTU (Path MTU) 是链路中传输实际的最大值,这个受到了木桶效应的制约,往往小于 MTU。(此时使用最小型IPv6 实现的那个设备成为了最短的那块板子)

PMTUD 过程:

IPv6 的 MTU 发现过程主要依赖于 ICMPv6 协议中的“分组过大”(Packet Too Big)消息。

  1. 发送方假设一个初始 MTU 值: 发送方在开始传输数据时,会假设一个初始的 MTU 值。这个值通常是发送方所在链路的 MTU 值,或者是一个默认值(例如 1280 字节)。

  2. 发送方设置“不分片”标志: 发送方在 IPv6 数据包的首部中设置“不分片”标志(Don’t Fragment flag)。这个标志告诉沿途的路由器:如果数据包太大,无法转发,不要进行分片,而是丢弃该数据包并发送 ICMPv6“分组过大”消息。

  3. 路由器检测 MTU: 数据包在传输过程中,如果经过一个 MTU 比数据包大小小的链路,该链路上的路由器会:

    • 丢弃该数据包。
    • 向发送方发送一个 ICMPv6“分组过大”消息。该消息中包含了该路由器所在链路的 MTU 值。
  4. 发送方接收 ICMPv6 消息: 发送方收到 ICMPv6“分组过大”消息后,会:

    • 更新其路径 MTU 缓存,将路径 MTU 值设置为收到的 ICMPv6 消息中提供的 MTU 值。
    • 使用新的路径 MTU 值重新发送数据包。
  5. 重复步骤 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 进行许可。
评论
目录
IPv6 的 MTU 发现