我目前正在浏览网络幻灯片,并想知道是否有人可以帮助我解决碎片和重组的概念。

我了解它的工作原理,即数据报如何拆分成较小的块,因为网络链接具有MTU。但是,图中的示例使我感到困惑。

因此,前两个部分的长度为1500,因为这是MSU,但这是否不意味着最后一个部分应具有1000(总共4000字节)而不是1040?这些额外的40个字节是从哪里来的?我的猜测是,因为前两个片段都具有20字节的 header ,所以这额外的40字节数据需要放在某个地方,因此它将到达最后一个片段?

Fragflag本质上意味着还有另一个片段,因此所有片段的Fragflag都为1,最后一个片段为零。但是我不明白什么是偏移量或如何计算。为什么第一个偏移量为零?为什么我们将数据字段(1480)中的字节除以8,以获得第二个偏移量?这8是哪里来的?除此之外,我假设每个片段的偏移量只会增加这个值吗?

例如,第一个片段的偏移量为0,第二个片段的偏移量为185,第三个片段的偏移量为370,第四个片段的偏移量为555? (370 + 185)

谢谢你的帮助!

最佳答案

每个数据包中都有一个20字节的 header 。因此,原始数据包包含3,980字节的数据。片段包含1480、1480和1020字节的数据。 1480 + 1480 + 1020 = 3980

header 中的每一位都是宝贵的。将偏移量除以8可以使其适合13位而不是16位。这意味着除最后一个包外的每个包都必须包含多个8的数据字节,这不是问题。

07-26 09:42