網際網路協議(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的索引,有兩個主分片,每個主分片有兩個副本分片。相同分片的副本不會放在同一節點,所以我們的集群看起來像這樣。有三個節點和乙個索引的集群 我們可以傳送請求到集群中的任一節點。每個節點都有能力處理任意請求。每個節點都知道集群中任一文...