IP資料報格式
IP協議提供不可靠無連線的資料報傳輸服務,IP層提供的服務是通過IP層對資料報的封裝與拆封來實現的。IP資料報的格式分為報頭區和資料區兩大部分,其中報頭區是為了正確傳輸高層資料而加的各種控制資訊,資料區包括高層協議需要傳輸的資料。
IP資料報的格式如下:
注意,上圖表示的資料,最高位在左邊,記為0位;最低位在右邊,記為31位。在網路中傳輸資料時,先傳輸0~7位,其次是8~15位,然後傳輸16~23位,最後傳輸24~31位。由於TCP/IP協議頭部中所有的二進位制數在網路中傳輸時都要求以這種順序進行,因此把它稱為網路位元組順序。在實際程式設計中,以其他形式儲存的二進位制數必須在傳輸資料前使用網路程式設計API相應的函式把頭部轉換成網路位元組順序。
IP資料報各欄位功能如下:
1)版本號:佔用4位二進位制數,表示該IP資料報使用的IP協議版本。目前Internet中使用的主要是TCP/IP協議族中版本號為4的IP協議。
2)頭長度:佔用4位二進位制位,此域指出整個報頭的長度(包括選項),該長度是以32位二進位制數為一個計數單位的,接收端通過此域可以計算出報頭在何處結束及從何處開始讀資料。普通IP資料報(沒有任何選項)該欄位的值是5(即20個位元組的長度)。
3)服務型別(TOS、type of service):佔用8位二進位制位,用於規定本資料報的處理方式。服務型別欄位的8位分成了5個子域:
(1)—優先權(0-7)數越大,表示該資料報優先權越高。網路中路由器可以使用優先權進行擁塞控制,如當網路發生擁塞時可以根據資料報的優先權來決定資料報的取捨。
(2)—短延遲位D(Delay):該位置1時,資料報請求以短延遲通道傳輸,0表示正常延時。
(3)—高吞吐量位T(Throughput):該位置1時,資料報請求以高吞吐量通道傳輸,0表示普通。
(4)—高可靠位R(Reliability):該位置1時,資料報請求以高可靠性通道傳輸,0表示普通。
(5)—保留位。
目前在Internet中使用的TCP/IP協議大多數情況下網路並未對TOS進行處理,但在實際程式設計時,有專門的函式來設定該欄位的各域。一些重要的網際應用協議中都設定了建議使用的TOS值:
從上表可以看出,對於與使用者直接互動的應用,一般使用短延時;對於有大量資料需要進行傳輸的應用,一般選用高吞吐量;對於資料報要傳輸控制資訊的應用,一般選用高可靠性。在資料報的生存期內不支援TOS的,TOS欄位就設定為0x00。
4)總長度:佔用16位二進位制位,總長度欄位是指整個IP資料報的長度(報頭區+資料區),以位元組為單位。利用頭部長度欄位和總長度欄位就可以計算出IP資料報中資料內容的起始位置和長度。由於該欄位長度為16位二進位制數,因此理論上IP資料報最長可達65536個位元組(事實上受物理網路的限制,要比這個數值小很多)。
5)生存時間(TTL,time to live):佔用8位二進位制位,它指定了資料報可以在網路中傳輸的最長時間。實際應用中把生存時間欄位設定成了資料報可以經過的最大路由器數。TTL的初始值由源主機設定(通常為32、64、128或256),一旦經過一個處理它的路由器,它的值就減1。當該欄位為0時,資料報就丟棄,併發送ICMP報文通知源主機,因此可以防止進入一個迴圈迴路時,資料報無休止地傳輸下去。
6)上層協議標識:佔用8位二進位制位,IP協議可以承載各種上層協議,目標端根據協議標識就可以把收到的IP資料報送到TCP或UDP等處理此報文的上層協議了。ICMP,IGMP
常用網際協議編號:
7)校驗和:佔用16位二進位制數,用於協議頭資料有效性的校驗,可以保證IP報頭區在傳輸時的正確性和完整性。頭部檢驗和欄位是根據IP協議頭計算出的檢驗和,它不對頭部後面的資料進行計算。
原理:傳送端首先將檢驗和欄位置0,然後對頭部中每16位二進位制數進行反碼求和的運算,並將結果存在校驗和欄位中。 由於接收方在計算過程中包含了傳送方放在頭部的校驗和,因此,如果頭部在傳輸過程中沒有發生任何差錯,那麼接收方計算的結果應該是全1。
8)源地址:佔用32位二進位制數,表示傳送端IP地址。
9)目的地址:佔用32位二進位制數,表述目的端IP地址。