2011-10-21 67 views
7

在教科書計算機網絡詹姆斯F.Kurose第五版倍數,CH4提到爲什麼IP分段必須在8個字節

IP分段必須在8個字節的倍數,而且由於標誌IP頭需要比特。我不明白爲什麼ip碎片必須是8個字節的倍數。

回答

11

除最後一個片段之外的每個片段都必須包含8個字節數據的倍數。

片段偏移量可以容納8192(2^13)個單元,但數據報不能有8192 * 8 = 65536個字節的數據,因爲IP頭的「總長度」字段記錄包括頭和數據的總大小。

一個IP報頭至少是20個字節長,所以爲最大值「碎片偏移」被限制爲8189,其餘地中最後一個片段的3個字節。

希望這會有所幫助。

+2

謝謝回答@Wayne剪板機,正如你所說的:片偏移量可容納8192(2^13)爲單位,但該數據報不能擁有8192 * 8 **什麼是平均單位沒有ü意味着字節**?] = 65536字節的數據[**爲什麼?**],因爲IP報頭的「總長度」字段記錄包括報頭和數據的總大小[**我所知道的是totallength =報頭大小+有效載荷。總和爲16,所以這個值會上升到2^16,這就是65536,我認爲是錯誤的嗎?**]。 – user991482

2

注意,分段偏移字段中的8字節單位表示,而不是在字節。 這就是爲什麼除了最後一個片段之外,每個片段內的有效載荷大小必須是8個字節的倍數的原因。

作爲偏移是編碼13位上的片段,它導致它的範圍是單位8個字節8191之間0和。但是,由於總長也考慮了IP報頭,所以片段偏移最大限制實際上是8189個單元,而不是8191個單元,參見下面:

總長度被編碼在16個位上,這意味着它被限制爲65535字節。 然後,由於IP報頭至少有20個字節,因此Payload限制爲最大65535字節 - 20字節= 65515字節。 將這些65515字節以8字節爲單位進行劃分,結果可能會出現最大8189個單位,因此碎片偏移限制爲最大8189個單位。

一個IP片段具有設置爲8189該最大值的片段偏移值,可以具有的最大3個字節的有效載荷:

最大65535個字節 - 最小20個字節 - (8189個單位每單位* 8個字節) =最大3個字節

Rurre

0

韋恩說加上偏移實際上是在終端主機使用,使得它們能夠有效地高效率地將片段存儲在存儲器中,即,在一排的事實什麼。偏移顯示片段相對於整個數據報的相對位置。這就是爲什麼偏移量必須是IP片段必須是8個字節的倍數,因爲你實際上做的是右移3位(因此是13位)。

相關問題