碎片和重组已在RFC 791中进行了详细说明。请通过Internet Protocol Specification RFC。 RFC有不同的部分解释了示例碎片和重新组装。你的所有疑虑和问题都充分照顾它。
回答1:关于分组的长度:原始分组包含4000字节。这个数据包是一个完整的IP数据包,因此也包含IP头。因此有效载荷长度实际上是4000-(IP报头长度,即20)。
实际的有效负载长度= 4000 - 20 = 3980
现在该分组是由于以下事实长度比MTU(1500个字节)更大的片段化。
因此第一个数据包包含1500个字节,其中包含IP头+有效载荷分数。
1500 = 20(IP报头)+ 1480(数据有效载荷)
类似地,对于其它分组。
第三分组应含有剩余的遗留数据(3980 - 1480 -1480)= 1020
因此,分组的长度是20(IP报头)+ 1020(有效载荷)= 1040
答2 :偏移量是数据从引用原始数据有效负载开始的地址或定位器。对于IP,数据有效载荷包含IP标头和选项标头之后的所有数据。因此,系统/路由器接收有效载荷并将其分成较小的部分,并参照原始数据包保持偏移的轨迹,以便重新组装。
如RFC页给出12.
“片段偏移字段告诉接收的片段的原始数据报的位置。该片段偏移和长度确定所涵盖的原始数据报 的部这个片段表示(通过复位)最后一个片段,这些字段提供足够的信息来重组数据报“
片段偏移量是以8个字节为单位测量的。它在IP头中有13位字段。如在RFC页所述17
“该字段表示其中在该片段belongs.The片段偏移中的8个字节(64位)为单位测得的数据报。第一个片段已偏移为零。”
因此,当你问这个问题来自哪里时,它的标准已经被定义为IP协议规范,其中8个八位字节被视为一个值。这也有助于我们通过这个传输大数据包。
RFC的第28页写道: *片段以8个八位组为单位计数。分片策略的设计要比未分片的数据报具有全部零分片信息(MF = 0,分片偏移= 0)。如果互联网数据报被分段,则其数据部分必须是在8个八位字节边界上分解的 。这种格式允许2 ** 13 = 8192个8位字节的碎片,每个碎片总数为65,536个八位位组。请注意,这与数据报总长度字段 一致(当然,报头总计为 ,而不是在片段中)。*
谢谢!这清楚地回答了我的问题的第一部分,但就第二部分而言,为什么我们将1480除以8以获得抵消? – JimmyK
我会更新答案。 –
非常感谢,回答一切!我只是想知道,我们总是除以8?有什么情况会导致我们除以不同的数字? – JimmyK