IP數據報分片和重組

最大傳輸單元:網絡

IP數據報在互聯網上傳輸時,可能要通過多個物理網絡才能從源端傳輸到目的端。不一樣的網絡因爲鏈路層和介質的物理特性不一樣,所以在進行數據傳輸時,對數據幀的最大長度都有一個限制,這個限制值即最大傳輸單元MTU(Maximum Transmission Unit).測試

同一個網絡上的兩臺主機之間通訊時,該網絡的MTU值是肯定的,不存在分片問題。分片問題通常只存在於具備不一樣MTU值的互聯網中。因爲如今互聯網主要使用路由器進行網絡鏈接,所以分片工做一般由路由器負責。指針

當兩臺主機之間的通訊要經過多個具備不一樣MTU值的網絡時,MTU的瓶頸是通訊路徑上最小的MTU值,它被稱爲路徑MTU。因爲路由選擇不必定是對稱的(從A到B的路由可能與從B到A的路由不一樣),所以,路徑MTU在兩個方向上不必定是一致的,下表是幾種經常使用網絡的MTU值:圖片

 

分片:路由

把一個數據報爲了適合網絡傳輸而分紅多個數據報的過程稱爲分片,被分片後的各個IP數據報可能通過不一樣的路徑到達目標主機。it

一個IP數據報在傳輸過程當中可能被分片,也可能不被分片。若是被分片,分片後的IP數據報和原來沒有分片的IP數據報結構是相同的,即也是由IP頭部和IP數據區兩個部分組成:io

分片後的IP數據報,數據區是原IP數據報數據區的一個連續部分,頭部是原IP數據報頭部的複製,但與原來未分片的IP數據報頭部有兩點主要不一樣:標誌和片偏移:原理

(1)—標誌:在IP數據報頭部有一個叫「標誌」的字段,用3位二進制數表示:路由器

不分片DF(Do not Fragment)標誌若是被置1,則數據報在傳輸過程當中不能被分片,如網絡連通性測試命令ping就能夠用-F參數設置爲在數據傳輸時不分片,但這樣當數據不能經過MTU較小的網絡時,將產生數據不可達的錯誤。互聯網

片未完MF(More Fragment)標誌若是被置1,說明該數據報不是分片後的最後一個數據報,最後一個數據報的該位被置0。

 

(2)—片偏移:IP數據報被分片後,各片數據區在原來IP數據區中的位置用13位片偏移來表示。上圖中分片1的偏移爲0;分片2的偏移爲600;分片3的偏移爲1200實際在IP地址中,因爲偏移是以8個字節爲單位進行計算的,於是在IP數據報中分片1的偏移是0;分片2的偏移是75;分片3的偏移是150。

 

重組:

當分了片的IP數據報到達最終目標主機時,目標主機對各分片進行組裝,恢復成源主機發送時的IP數據報,這個過程叫作IP數據報的重組。

在IP數據報頭部中,標識用16位二進制數表示,它惟一地標識主機發送的每一份數據報。在一個數據報被分片時,每一個分片僅把數據報「標識」字段的值原樣複製一份,因此一個數據報的全部分片具備相同的標識。

目標端主機重組數據報的原理是:

(1)—根據「標識」字段能夠肯定收到的分片屬於原來哪一個IP數據報;

(2)—根據「標誌」字段的「片未完MF」子字段能夠肯定分片是否是最後一個分片;

(3)—根據「偏移量」字段能夠肯定分片在原數據報中的位置。

 

 

========================IP數據報選項========================

IP數據報「選項」主要有兩大功能:

1)用來實現對數據報傳輸過程當中的控制,如規定數據報要通過的路由;

2)進行網絡測試,如一個數據報傳輸過程當中通過了哪些路由器。

 

IP「選項「域共分爲四大類,每類分爲若干個選項,每一個選項有肯定的編號:

IP數據報「選項」由三個部分組成:選項碼、選項長度和選項數據。選項碼和選項長度各佔一個字節,中,選項長度用於肯定整個選項部分的長度;選項碼又分爲複製、選項類和選項號:

複製:佔一位,用來控制一個帶有選項的IP數據報被分片後對選項的處理方式。該位置1時將選項複製到全部分片中;置0時將選項僅複製到第一個分片中。

選項類和選項號用於肯定該選項是哪類選項中的哪一個選項,其實就是肯定該選項的功能。

 

1)源路由選擇:是指IP數據報在互聯網中傳輸時,所通過的路由是由發出IP數據報的源主機指定的,以區別於數據報在互聯網中傳輸時由路由器的IP層自動尋徑所獲得的路由。

經過設置源路由選擇選項,能夠測試網絡中指定路由的連通性,以使數據報繞開出錯的網絡,也可用於測試特定網絡的吞吐量。源路由選擇可分爲兩類:嚴格源路由選擇和寬鬆源路由選擇。

 

(1)—嚴格源路由選擇有發送端規定IP數據報必須通過的路徑上的每個路由器,相鄰路由器之間不得有中間路由器,而且所通過的路由器的順序不可更改。若是一個路由器發送源路由所指定的下一個路由器不在其直接鏈接的網絡上,那麼它就返回一個「源路由失敗」的ICMP差錯報文。嚴格源路由選擇選項格式以下:

選項碼字段爲100 01001(0x89),即爲0類9號選項。選項長度最大爲39,可存放9個IP地址。由於IP頭部長度字段只有4位二進制數,因此整個IP頭部最長只能包括15(<24)個32位長的字(即60個字節)。因爲IP頭部固定長度爲20字節,選項碼、選項長度和指針共用去3個字節,所以剩下60-20-3=37個字節來存放IP地址清單,於是只能存放9個IP地址。

(2)—寬鬆源路由選擇:由發送方指明一個數據報通過的IP地址清單,可是在數據報傳輸的路徑上,在選項中指定的兩個IP地址之間能夠有其餘IP地址的路由器。格式與嚴格的相同,只是選項碼字段值爲0x83。

 

2)記錄路由:經過設置記錄路由選項,IP數據報就能夠記錄數據報從源主機傳輸到目標主機時,所通過路徑上的各個路由器的IP地址。記錄路由選項的數據格式和嚴格源路由選擇格式相同,但選項碼字段值爲0x87,指針初值爲4,指向存放第一個IP地址的位置。每一個路由器的IP地址存入選項的數據區中,指針字段的值也隨着增長(從4開始到8,12,16,最大到36),它始終指向下一個存放IP地址的位置。當記錄了9個IP地址後,指針字段的值爲40,表示數據區已滿。

 

3)記錄時間戳:就是IP數據報每通過一個路由器都記下它的IP地址和時間。時間戳中的時間以ms爲單位,時間戳取值通常爲格林威治時間(UT,Universal Time)自午夜開始計時的毫秒數時間戳選項格式以下:

時間戳選項的選項碼是0x44。選項長度表示選項的總長度(通常爲36或40),指針指向下一個可用空間的指針(值爲五、九、13等)。

「溢出OF」字段表示因時間戳選項數據區空間不夠而未能記錄下來的時間戳個數;

「標誌FL」字段用於控制時間戳選項的格式,取值以下:

相關文章
相關標籤/搜索