我目前正在经历我的网络幻灯片,并想知道如果有人可以帮助我,分段和重组的概念。
我理解它是如何工作的,数据报即如何分割成小块,因为网络链路具有MTU。 但是在画面的例子是混淆了我。
所以前两节表现出的1500的长度,因为这是MSU,但不应该这意味着最后一个应该有1000个(总共4000个字节),而不是1040? 这些额外的40个字节从哪儿来的? 我的猜测是因为前两个片段都具有20个字节的头部,这需要额外的40个字节的数据去的地方,所以它会在最后一个片段到达?
Fragflag实际上意味着还有另外一个片段,让所有的人都会有一个1 Fragflag除了这将是在零的最后一个片段。 不过,我不明白是什么偏移或者它是如何计算的。 为什么首先在零点偏移? 为什么我们划分字节数据字段(1480)8,以获得第二偏移? 这8从何而来? 除此之外,我假设每个片段偏移将只是这个值会增加吗?
例如,第一片段将具有偏移量为0,第二185,第三370和第四555? (370 + 185)
谢谢你的帮助!
有在每个分组中有20字节的标头。 因此,原始数据包包含3980个字节的数据。 该片段含有1480,1480,和1020字节的数据。 1480 + 1480 + 1020 = 3980
在头的每一位都是宝贵的。 除以8的偏移允许它适合在13位而不是16这意味着每一个数据包,但在过去必须包含一个数字数据中的字节是8的倍数,这是没有问题的。
分片和重组已在RFC 791中被专门解释不要去通过互联网协议规范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位)为单位进行测量的偏移量。第一个片段已偏移零”。
因此,当你在做这个8来自这个问题问,它的标准这就是被用于IP协议规范,其中8个字节被作为一个值来定义。 这也有助于我们通过这个传输大数据包。
第28页RFC的写道:*的片段以8个字节为单位计数。 碎片策略被设计成比未分段的数据包的所有(偏移MF = 0,片段= 0)零碎片信息。 如果一个internet数据报被分段,它的数据部分必须在8间八位组的边界被打破。 这个格式允许的各8个八位字节2 ** 13 = 8192片段,总共65536个八位字节。 注意,这是与该数据报总长度字段一致(当然,头部被计数的总长度,而不是在片段)。*
的偏移大小是在IP报头13位,但是我们需要16位如在最坏的情况。 所以我们使用的8即(2 ^ 16/2 ^ 13)的比例因子。
这些都不是多余的位,但最后一个片段的总长度。 1500是MTU这意味着可以在一个片段包括头是数据的1500字节。 报头被附加有每片段。 这意味着在片段我们能够发送数据的1500年至1520年= 1480字节组成。 它被赋予有4000B数据报.datagram是什么,但在网络数据包封装layer.so送我们到总的数据是4000-20 = 3980。 然后将其分别裂成3parts(小区(一千四百八十零分之三千九百八十〇)),每个长度1480,1480,1020的。 因此,当图20B报头被附加到最后一个片段其长度变为1020 + 20 = 1040。