2015-09-27 100 views
1

當我們從一個路由器發送數據包到網絡層上的另一個路由器,並且數據包大小大於路由器的MTU(最大可傳輸單元)時,我們必須對數據包進行分段。我的問題是:假設我們需要在最後一個片段中添加填充位,那麼我們在哪裏添加填充位(在LSB或MSB中)以及目標路由器如何區分包位或填充位?網絡層局域網

+1

這些位應該不相關,因爲每個包都指定了特定的幀大小。因此,對於網絡層以上的任何實際上有意義的東西,附加位都是可見的。 – arkascha

+0

如果最後一幀不是8的倍數比我們增加填充位和其他側面路由器的數據是8的倍數,並且它如何計算最後一幀的實際大小 – PDP

+0

如上所述:它明確指定在包內。採取網絡嗅探器,幾個包裹,並自己看看。 – arkascha

回答

0

您不需要添加任何填充位。所有比特將沿着路線推進,直到完整幀被髮送。

2

我要你之前要考慮以下幾點:在由數據鏈路協議強加IP數據克的最大尺寸

  • 限制。
  • IP是在路由器和主機上實現的最高層協議。
  • 重新組裝原始數據塊只能在目標主機上完成。這需要網絡核心中存在的路由器需要完成的額外工作。

我將使用下面的圖像的信息,以幫助您用一個例子答案。
enter image description here

這裏數據包的初始長度是2400字節,需要按照1000字節的MTU限制進行分片。
只有13位可用於片段偏移量,偏移量爲8個字節的倍數。這就是爲什麼第一個和第二個片段中的數據字段的大小爲976字節(它是可以被8整除的最大數字,小於1000 - 20字節)。這使得總大小爲996字節的第一和第二片段。最後一個片段包含剩餘的428個字節的有效負載(總共有448個字節)。

偏移量可以計算爲0; 976/8 = 122和1952/8 = 244。
當這些片段到達目標主機時,需要重新組裝。主機爲此任務使用標識,標誌和碎片偏移量。爲了確定哪些片段屬於哪個數據塊,主機使用源地址,目標地址和標識來唯一標識它們。 偏移值和更多片段位用於確定是否所有片段都已到達。

對您的問題的回答
只有非最後一個片段需要將有效負載劃分爲8的倍數。使用偏移量除以8的原因有助於主機識別下一個片段的起始地址。如果遇到最後一個片段,主機不需要下一個片段的地址。因此,在最後一個片段的情況下,不需要擔心有效載荷是8的倍數。主機檢查更多片段標誌以標識最後一個片段。
有點附加信息:網絡層不負責保證數據庫的交付。如果遇到一個或多個碎片尚未到達,那麼它只是丟棄整個數據塊。在網絡層以上工作的傳輸層將負責處理這個事情,如果它使用TCP,請求源重新傳輸數據。
參考文獻:Computer Networking-A Top Down Approach,James F. Kurose,Keith W.Ross(第五版)