(1)版本 占4位,指IP協議的版本。通信雙方使用的IP協議版本必須一致。目前廣泛使用的IP協議版本號為4(即IPv4)。關于IPv6,目前還處于草案階段。?
(2)首部長度 占4位,可表示的最大十進制數值是15。請注意,這個字段所表示數的單位是32位字長(1個32位字長是4字節),因此,當IP的首部長度為1111時(即十進制的15),首部長度就達到60字節。當IP分組的首部長度不是4字節的整數倍時,必須利用最后的填充字段加以填充。因此數據部分永遠在4字節的整數倍開始,這樣在實現IP協議時較為方便。首部長度限制為60字節的缺點是有時可能不夠用。但這樣做是希望用戶盡量減少開銷。最常用的首部長度就是20字節(即首部長度為0101),這時不使用任何選項。?
(3)區分服務 占8位,用來獲得更好的服務。這個字段在舊標準中叫做服務類型,但實際上一直沒有被使用過。1998年IETF把這個字段改名為區分服務DS(Differentiated?Services)。只有在使用區分服務時,這個字段才起作用。?
(4)總長度 總長度指首部和數據之和的長度,單位為字節。總長度字段為16位,因此數據報的最大長度為216-1=65535字節。?
在IP層下面的每一種數據鏈路層都有自己的幀格式,其中包括幀格式中的數據字段的最大長度,這稱為最大傳送單元MTU(Maximum?Transfer?Unit)。當一個數據報封裝成鏈路層的幀時,此數據報的總長度(即首部加上數據部分)一定不能超過下面的數據鏈路層的MTU值。?
(5)標識(identification) 占16位。IP軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,并將此值賦給標識字段。但這個“標識”并不是序號,因為IP是無連接服務,數據報不存在按序接收的問題。當數據報由于長度超過網絡的MTU而必須分片時,這個標識字段的值就被復制到所有的數據報的標識字段中。相同的標識字段的值使分片后的各數據報片最后能正確地重裝成為原來的數據報。?
(6)標志(flag) 占3位,但目前只有2位有意義。?
● 標志字段中的最低位記為MF(More?Fragment)。MF=1即表示后面“還有分片”的數據報。MF=0表示這已是若干數據報片中的最后一個?
● 標志字段中間的一位記為DF(Don’t?Fragment),意思是“不能分片”。只有當DF=0時才允許分片。?
(7)片偏移 占13位。片偏移指出:較長的分組在分片后,某片在原分組中的相對位置。也就是說,相對用戶數據字段的起點,該片從何處開始。片偏移以8個字節為偏移單位。這就是說,每個分片的長度一定是8字節(64位)的整數倍。?
(8)生存時間 占8位,生存時間字段常用的的英文縮寫是TTL(Time?To?Live),表明是數據報在網絡中的壽命。由發出數據報的源點設置這個字段。其目的是防止無法交付的數據報無限制地在因特網中兜圈子,因而白白消耗網絡資源。最初的設計是以秒作為TTL的單位。每經過一個路由器時,就把TTL減去數據報在路由器消耗掉的一段時間。若數據報在路由器消耗的時間小于1秒,就把TTL值減1。當TTL值為0時,就丟棄這個數據報。?
(9)協議 占8位,協議字段指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給哪個處理過程。?
(10)首部檢驗和 占16位。這個字段只檢驗數據報的首部,但不包括數據部分。這是因為數據報每經過一個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、標志、片偏移等都可能發生變化)。不檢驗數據部分可減少計算的工作量。?
(11)源IP地址 占32位。?
(12)目的IP地址 占32位。
可以看到,但數據提交到網絡層的時候,由于數據超過了最大傳輸單元,就分片了。分成多個包通過IP協議發送個對方。每個數據包最大的字節為MTU - IP頭 = 1500 - 20 = 1480。