IP 数据报分片总长度和有效载荷计算

网络工程 路由 IPv4 mtu 数据 碎片化
2022-02-13 22:14:02

我不明白如何对 IP 数据报进行分段。

假设原始数据报的总大小为 302(20 字节标头和 282 字节有效负载)。我的数据报需要分段,因为它通过 128MTU 的网络。我必须对其进行分段并为每个新片段添加 20 个标头。

  • 片段 1 124 总长度(104 字节有效负载)

  • 片段 2 124 总长度(104 字节有效负载)

  • 片段 3 94 总长度(74 字节有效负载)

如果我补充说它确实给了我原始的有效载荷。我不明白如何找到这些数字......

为什么不能

  • 片段 1 114 总长度(94 字节有效负载)
  • 片段 2 114 总长度(94 字节有效负载)
  • 片段 3 114 总长度(94 字节有效负载)

(282/128(MTU)) > 2 所以我需要 3 个片段。3Fragments = 60 字节头添加 60 +282 = 342 342/3 = 每个片段的总长度为 114。

我的问题是...

我应该如何以及为什么要获得 124 124 和 94?

1个回答

IP 分段和重组由 RFC 描述。您必须在 64 位边界上进行分段。有 RFC 处理此问题,其他站点将深入描述分段和重组过程;您可以进行搜索以找到它们

从RFC 791开始,互联网协议

为了对长互联网数据报进行分段,互联网协议模块
(例如,在网关中)创建两个新的互联网数据报,
并将互联网报头字段的内容从长数据报复制
到两个新的互联网报头中。
数据报的数据在 8 个八位字节(64 位)边界上分为两部分
(第二部分可能不是 8 个八位字节的整数倍,
但第一部分必须是)。在第一部分 NFB 中调用 8 个八位字节块的
数量(对于 Fragment Blocks 的数量)。数据的第一
部分放置在第一个新的互联网数据报中,
总长度字段设置为第一个的长度