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等處理此報文的上層協議了。
常用網際協議編號:

7)校驗和:占用16位二進制數,用於協議頭數據有效性的校驗,可以保證IP報頭區在傳輸時的正確性和完整性。頭部檢驗和字段是根據IP協議頭計算出的檢驗和,它不對頭部后面的數據進行計算。
原理:發送端首先將檢驗和字段置0,然后對頭部中每16位二進制數進行反碼求和的運算,並將結果存在校驗和字段中。 由於接收方在計算過程中包含了發送方放在頭部的校驗和,因此,如果頭部在傳輸過程中沒有發生任何差錯,那么接收方計算的結果應該是全1。
8)源地址:占用32位二進制數,表示發送端IP地址。
9)目的地址:占用32位二進制數,表述目的端IP地址。
