分片和組裝

2022-09-01 18:39:08 字數 1215 閱讀 1249

網際網路協議(ip)是整個網際網路架構的基礎,可以支援不同的物理層網路,即ip層獨立於鏈路層傳輸技術。不同的鏈路層不僅在傳輸速度上有差異,還在幀結構和大小上有所不同,不同mtu引數描述了資料幀的大小。為了實現ip資料報能夠使用不同的鏈路層技術,需要將ip資料報變成適合鏈路層的資料格式,ip報文的分片即是ip資料報為了滿足鏈路層的資料大小而進行的分割。

在ipv6不要求路由器執行分片操作,而是將檢測路徑最大傳輸單元大小的任務交給了主機。

當裝置收到ip報文時,分析其目的位址並決定要在哪個鏈路上傳送它。mtu決定了資料載荷的最大長度,如ip報文長度比mtu大,則ip資料報必須進行分片。每一片的長度都小於等於mtu減去ip首部長度。接下來每一片均被放到獨立的ip報文中,並進行如下修改:

例如,對於乙個長20位元組的首部和乙個mtu為1,500的乙太網,分片偏移量將會是:0、(1480/8)=185、(2960/8)=370、(4440/8)=555、(5920/8)=740、等等。

如果報文經過路徑的mtu減小了,那麼分片可能會被再次分片。

比如,乙個4,500位元組的資料載荷被封裝進了乙個沒有選項的ip報文(即總長為4,520位元組),並在mtu為2,500位元組的鏈路上傳輸,那麼它會被破成如下兩個分片:#總長

更多分片(mf)?

df分片偏移量

首部資料

12500是0

0202480

22040否0

31020

2020

假設下一跳的mtu為1,500位元組,那麼每乙個分片都會被再次分成兩片(由於資料片段只有在目的主機才重新被組成資料報,因此再次分片是針對每個在網路中傳輸的資料幀):#總長

更多分片(mf)?

df分片偏移量

首部資料

11500是0

0201480

21020是0

18520

1000

31500是0

31020

1480

4560否0

49520

540第3和4片是從原始第2片再次分片而來,所以除了分片後的最後乙個分片外mf為都為1。

當乙個接收者發現ip報文的下列專案之一為真時:

它便知道這個報文已被分片,並隨即將資料、識別符號字段、分片偏移量和更多分片標誌一起儲存起來。

當接受者收到了更多分片標誌未被設定的分片時,它便知道原始資料載荷的總長。一旦它收齊了所有的分片,它便可以將所有片按照正確的順序(通過分片偏移量)組裝起來,並交給上層協議棧。

IP的分片與組裝

ip的三位標誌 標誌位共有三位。1 最高位必須為0,該位必須複製到所有分組中。2 不分片位 no not fragment,df位 為0,表示可以分片 為1,表示接受主機對分組不能分片。如果長度超過mtu 最大傳輸單元 而又不可以分片的話,那麼只能丟棄該組,並且用icmp差錯報文向源主機報告。3 分...

IP分片和TCP分片的區別

前段時間要做乙個關於網路嗅探的程式,裡面要重組ip分片,tcp分片.但做的時候忽視了乙個很重要的東西 ip分片與tcp分片弄混淆了.首先宣告 tcp分片應該稱為tcp分段.區別 1.ip分片產生的原因是網路層的mtu tcp分段產生原因是mss.2.ip分片由網路層完成,也在網路層進行重組 tcp分...

主分片和副本分片如何互動

為了說明目的,我們 假設有乙個集群由三個節點組成。它包含乙個叫blogs的索引,有兩個主分片,每個主分片有兩個副本分片。相同分片的副本不會放在同一節點,所以我們的集群看起來像這樣。有三個節點和乙個索引的集群 我們可以傳送請求到集群中的任一節點。每個節點都有能力處理任意請求。每個節點都知道集群中任一文...