【发布时间】:2017-06-02 20:34:21
【问题描述】:
我目前正在浏览我的网络幻灯片,想知道是否有人可以帮助我解决碎片化的概念
所以我理解第一部分直到“108 Bytes”,但我不明白的是“8 Bytes = 13.5 => 13 * 8 字节 = 104 字节"
这些额外的字节是什么?
其余的很清楚。
【问题讨论】:
标签: networking tcp ip ip-fragmentation
我目前正在浏览我的网络幻灯片,想知道是否有人可以帮助我解决碎片化的概念
所以我理解第一部分直到“108 Bytes”,但我不明白的是“8 Bytes = 13.5 => 13 * 8 字节 = 104 字节"
这些额外的字节是什么?
其余的很清楚。
【问题讨论】:
标签: networking tcp ip ip-fragmentation
您必须在八字节边界上对数据包有效负载进行分段。对于 128 字节的 MTU,您可以拥有的最大有效负载片段为 104 字节,这比简单地从 MTU 中减去 IP 标头(108 字节)要小。文本告诉您,从 MTU 中减去数据包头大小(20 字节),下一个可被 8 整除的较小片段大小为 104 字节。
RFC 791, Internet Protocol 完整描述了 IP 分片的工作原理:
碎片化
互联网数据报在产生时需要分段 在允许大数据包大小的本地网络中,并且必须遍历 本地网络,将数据包限制为较小的大小以到达其 目的地。
可以将 Internet 数据报标记为“不分段”。任何互联网 如此标记的数据报不会在任何 情况。如果 Internet 数据报标记为不分段,则不能 在不将其分割的情况下交付到目的地,它将被 而是丢弃。
跨本地网络的分段、传输和重组 对 Internet 协议模块不可见的称为 Intranet 碎片化,可以使用[6]。
互联网碎片和重组程序需要能够 将一个数据报分成几乎任意数量的片段,这些片段可以 稍后重新组装。片段的接收者使用 标识字段,确保不同数据报的分片 不混合。片段偏移字段告诉接收器 片段在原始数据报中的位置。片段偏移 和长度确定原始数据报覆盖的部分 这个片段。 more-fragments 标志指示(通过被重置) 最后一个片段。这些字段提供了足够的信息 重组数据报。
标识字段是用来区分一个片段的 来自另一个人的数据报。始发协议模块 互联网数据报将标识字段设置为必须 对于该源-目标对和协议来说是唯一的 数据报将在互联网系统中处于活动状态。原产地 完整数据报的协议模块将 more-fragments 标志设置为 零和片段偏移量为零。
为了分割一个长的互联网数据报,一个互联网协议模块(对于 例如,在网关中),创建两个新的互联网数据报和副本 将长数据报中的 Internet 标头字段的内容放入 两个新的互联网标题。长数据报的数据被划分 分成 8 个八位字节(64 位)边界上的两个部分(第二部分 可能不是 8 个八位字节的整数倍,但第一个必须是)。 在第一部分 NFB 中调用 8 个八位字节块的数量(对于 Number 片段块)。数据的第一部分放在 第一个新的互联网数据报,总长度字段设置为 第一个数据报的长度。 more-fragments 标志设置为 1。 第二部分数据放在第二个新互联网 数据报,总长度字段设置为 第二个数据报。 more-fragments 标志的值与 长数据报。第二个新的片段偏移量字段 互联网数据报设置为该字段的值在长 数据报加NFB。
这个过程可以推广到 n 路拆分,而不是 描述了双向拆分。
为了组装互联网数据报的片段,互联网 协议模块(例如在目标主机上)结合了互联网 四个字段都具有相同值的数据报: 标识、来源、目的地和协议。组合是 通过将每个片段的数据部分放在相对 由该片段互联网中的片段偏移量指示的位置 标题。第一个片段的片段偏移量为零,并且 最后一个片段的更多片段标志将重置为零。
【讨论】:
根据 IP 头中 Fragment offset 字段的定义:
片段偏移量(13 位):对于分段的 IP 数据报,该字段包含从 IP 数据报开始的偏移量(以 8 字节为单位)。同样,该字段用于重组分片的 IP 数据报。
因此,即使有效负载大小可以是任意大小,偏移值也只能是 IP 标头上 8 个字节的倍数,因此有效负载大小是 8 个字节的倍数。该计算将 IP 有效负载大小四舍五入。
【讨论】: