IPv6擴展頭部 (四) 分片頭部 Fragment Header for IPv6

上一篇博客介紹了IPv6擴展頭部的路由頭部類型,這篇博客介紹一下更常見的擴展頭部分片頭部。

分片頭部用於IPv6源節點向目的節點發送一個大於路徑MTU的數據報。對於路徑MTU以及如何確定它,以後有機會在提,1280字節是整個網絡中針對IPv6定義的鏈路層最小MTU(見[RFC2460]的第五節)。在IPv4中,這個值可能是576。在IPv4中,如果數據報大小超過下一跳MTU,任何主機或路由器可將該數據報分片,IPv4頭部中第二個32位字段標識分片信息。如下圖

標識、標誌和片偏移三個字段用於處理IPv4分片報文。

在IPv6中,僅數據報的發送者可以執行分片操作。這就是說,中間路由器或着主機不再需要處理分片報文,這樣會提高分片報文處理效率,因爲分片報文的重組和分片都是耗cpu的。在這種情況下需要添加一個分片頭部。

分片頭部包括的信息與IPv4頭部中的相同,只不過標識符字段變成32位,而不是IPv4採用的16位。這個更大的字段提供了在網絡中容納更多分片的能力。下圖顯示了分片頭部採用的格式,(書上拍的圖):

IPv6分片頭部包含一個32位的標識符字段(是IPv4中標識符字段的兩倍).M位字段表明該分片是否爲原始數據報的最後一個分片。與IPv4一樣,分片偏移字段給出了有效載荷在原始數據報中以8字節爲單位的偏移量。

上圖中,保留字段和2位的Res字段都爲0,並且都會被接收方所忽略。分片偏移字段表明數據以8字節爲單位的偏移量放置在分片頭部之後(相對於原始IPv6數據報的“可分片部分”),如果M字段設置爲1,表示在數據報中包含更多分片。如果該值爲0,表示該分片是原始數據報的最後一個分片。

       在分片過程中,輸入的數據報稱爲"原始數據報",它由兩部分組成:"不可分片部分"和"可分片部分"。不可分片部分包括IPv6頭部和任何到達目的地之前需要由中間節點處理的擴展頭部(即包括路由頭部之前的所有頭部,如果有逐跳選項擴展頭部,則是該頭部之前的所有頭部)。可分片部分包括數據報的其餘部分(即目的選項頭部,上層頭部和有效載荷數據)。簡單說,就是有些擴展頭部是不允許分片的,需要每個分片報文都攜帶不允許分片的部分。

      當原始數據報被分片後,將會產生多個分片,其中每個分片都包含一個原始數據報綜合那個不可分片部分的副本,但是需要修改每個IPv6頭部的負載長度字段,以反映它所描述的分片報文大小。在不可分片部分之後,每個新的分片都包含一個分片頭部,其中包含一個分片相應的分片偏移字段(例如第一個分片的偏移量爲0),以及一個原始分組的標識符字段的副本,最後一個分片的M(更多分片)位字段設置爲0。

      下面結合一個栗子演示一下IPv6源節點對數據報的分片過程。在該栗子中,一個3960字節的有效載荷被分片,其中分片的大小都沒有超過1500字節(一個典型的以太網MTU),分片數據的大小仍爲8字節的倍數。

IPv6分片報文栗子,一個3960字節的有效載荷被分爲3個1448字節或更小的分片。每個分片包含一個帶相同的標識符字段的分片頭部。除了最後一個分片,所有分片的更多分片(M)字段設置爲1。偏移量以8字節爲單位。例如最後一個分片包含的數據是從原始數據開始出偏移(362*8)=2896字節。這個方案與IPv4中分片相似。

在上圖中,可以看到較大的原始數據報被分爲3個較小的分片。每個分片都包含一個分片頭部。IPv6頭部的負載長度字段被修改,以反映數據和新生成的分片頭部的大小。每個分片中的分片頭部包含一個公共標識符字段,以確保網絡中不同的原始數據報在其生存期內不會被分配相同的標識符字段。接收端會將標識符相同的報文重組起來。

       分片頭部中的偏移量字段以8字節爲單位。因此分片需要在8字節的邊界處進行,這就是第一個和第二個分片包含1448字節,而不是1452字節的原因。因此,除了最後一個分片之外的所有分片都是8字節的倍數(最後一個分片也可能是)。接收方在對分片進行重組之前,必須確保已接收原始數據報的所有分片。重組過程中需要聚合所有分片以形成原始數據報。與IPv4分片一樣,分片可能不按順序到達接收方,但需要按順序重組爲一個數據報,以便交給高層的其它協議處理。

      在win10系統使用如下命令構造一個分片報文:

      ping -l 3952 (IPv6網關)

IPv6擴展首部分片首部就介紹到這,有問題歡迎提出哈

IPv6擴展頭部(一)擴展頭部格式、類型和擴展選項https://blog.csdn.net/fuyuande/article/details/81146615

IPv6擴展頭部(三)路由擴展頭部https://blog.csdn.net/fuyuande/article/details/81122628

 

參考資料:

 1. 《TCP/IP詳解-卷一:協議》W.Richard Stevens。原書第二版。5.3.3節。

2.   RFC2460 : https://tools.ietf.org/html/rfc2460

3.   IPv6技術課件 https://wenku.baidu.com/view/17627f53581b6bd97f19eae6

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章