IP數據報的格式:
IP 數據報的首部長度和數據長度都是可變長的,但總是4字節的整數倍。
對於IPv4 ,4位版本字段是4。
(1)版本 占4位,指IP協議的版本。通信雙方使用的IP協議版本必須一致。目前廣泛使用的IP協議版本
(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位,因此數據報的最大長度
為
2^16-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時,
就丟棄這個數據報
。后來把TTL字段的功能改為“跳數限制”(但名稱不變)。路由器在轉發數據報之前就
把TTL值減1.若TTL值減
少到零,就丟棄這個數據報,不再轉發。因此,現在TTL的單位不再是秒,而是跳
數。TTL的意義是指明數據報
在網絡中至多可經過多少個路由器。顯然,數據報在網絡上經過的路由器的
最大數值是255.若把TTL的初始值
設為1,就表示這個數據報只能在本局域網中傳送。
(9)協議 占8位,協議字段指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數
據部
分上交給哪個處理過程。
(10)首部檢驗和 占16位。這個字段只檢驗數據報的首部,但不包括數據部分。這是因為數據報每經過一
個路
由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、標志、片偏移等都可能發生變化)。
不檢
驗數據部分可減少計算的工作量。
(11)源地址 占32位。
(12)目的地址 占32位。