文章出處

 

摘自:http://blog.163.com/hlz_2599/blog/static/1423784742011112195857956/</>

IP數據包格式詳解 - 儍苽-℡藸 - BabyUnion

IP數據包格式詳解 - 儍苽-℡藸 - BabyUnion

TCP/IP協議定義了一個在因特網上傳輸的包,< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

稱為IP數據報 (IP Datagram)。這是一個與硬件無關的虛擬包,

由首部和數據兩部分組成。首部的前一部分是固定長度,共 20 字節,

是所有IP數據報必須具有的。在首部的固定部分的后面是一些可選字段,

其長度是可變的。首都中的源地址和目的地址都是 IP 協議地址。

那么IP數據報格式又是怎樣要求的呢?

    1. IP數據報首部的固定部分中的各字段

    ①版本:占4位,指IP協議的版本。通信雙方使用的

IP協議版本必須一致。日前廣泛使用的 IP協議版本號為 4 ( IPv4)

IPv6 目前還處于起步階段。

    ②首部長度:占 4 位,可表示的最大十進制數值是 15。請注意,

這個字段所表示數的單位是32位字 ( 1 32位字長是字節)

因此,當 IP 的首部長度為 1111  (即十進制的 15)

首部長度就達到 60字節。當 IP 分組的首部長度不是4字節的整數倍時,

必須利用最后的填充字段加以填充。

因此數據部分永遠在 4字節的整數倍開始,

這樣在實現 IP協議時較為方便。

首部長度限制為 60字節的缺點是有時可能不夠用。

這樣做的目的是希望用戶盡量減少開銷。

最常用的首部長度就是 20 字節 (即首部長度為 0101)

這時不使用任何選項。

    ③服務:占 8 位,用來獲得更好的服務。

這個字段在舊標準中叫做服務類型,但實際上一直沒有被使用過。

1998IETF把這個字段改名為區分服務 DS (DifferentiatedServices)

只有在使用區分服務時,這個字段才起作用。

    ④總長度:總長度指首都及數據之和的長度,單位為字節。

因為總長度字段為 16位,所以數據報的最大長度為 216-1=65 535字節。    IP層下面的每一種數據鏈路層都有自己的幀格式,其中包括幀格式中的數據字段的最大長度,即最大傳送單元 MTU (Maximum Transfer Unit)。當一個數據報封裝成鏈路層的幀時,此數據報的總長度 (即首部加上數據部分)一定不能超過下面的數據鏈路層的MTU值。

    ⑤標識 (Identification):占 16位。

IP軟件在存儲器中維持一個計數器,每產生一個數據報,

計數器就加 1,并將此值賦給標識字段。但這個“標識”并不是序號,

因為 IP是無連接的服務,數據報不存在按序接收的問題。

當數據報由于長度超過網絡的 MTU 而必須分片時,

這個標識字段的值就被復制到所有的數據報的標識字段中。

相同的標識字段的值使分片后的各數據報片最后能正確地重裝成為

原來的數據報。

    ⑥標志 (Flag):占位,但目前只有2位有意義。   

標志字段中的最低位記為 MF (More Fragment)

MF=1即表示后面“還有分片”的數據報。MF=0表示這已是若干數據報片

中的最后一個。

標志字段中間的一位記為 DF(Don't Fragment)

意思是“不能分片”。只有當 DF=0時才允許分片。(指示原數據報能不能分片)

    ⑦片偏移:占 13位。較長的分組在分片后,

某片在原分組中的相對位置。也就是說,相對用戶數據字段的起點,

該片從何處開始。片偏移以 8個字節為偏移單位。

這就是說,每個分片的長度一定是 8字節 (64)的整數倍。

    ⑧生存時間:占 8位,生存時間字段常用的英文縮寫是

TTL (Time To Live),其表明數據報在網絡中的壽命。

由發出數據報的源點設置這個字段。

其目的是防止無法交付的數據報無限制地在因特網中兜圍子,

因而白白消耗網絡資源。最初的設計是以秒作為 TTL的單位。

每經過一個路由器時,就把TTL減去數據報在路由器消耗掉的一段時間。

若數據報在路由器消耗的時間小于 1 秒,就把TTL值減 1

 TTL值為 0時,就丟棄這個數據報。

    ⑨協議:占 8 位,協議字段指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給哪個處理過程。

    ⑩首部檢驗和:占 16位。這個字段只檢驗數據報的首部,

但不包括數據部分。這是因為數據報每經過一個路由器,都要重新計算一下首都檢驗和 (一些字段,如生存時間、標志、片偏移等都可能發生變化)。不檢驗數據部分可減少計算的工作量。

    ⑾源地址:32位。

    ⑿目的地址: 32位。

    2. IP數據報首部的可變部分

    IP首都的可變部分就是一個可選字段。選項字段用來支持排錯、測量以及安全等措施,內容很豐富。此字段的長度可變,從 1 個字節到40個字節不等,取決于所選擇的項目。某些選項只需要 1 個字節,它只包括 1 個字節的選項代碼。但還有些選項需要多個字節,這些選項一個個拼接起來,中間不需要有分隔符,最后用全的填充字段補齊成為 4字節的整數倍。    增加首都的可變部分是為了增加 IP數據報的功能,但這同時也使得 IP 數據報的首部長度成為可變的。這就增加了每一個路由器處理數據報的開銷。實際上這些選項很少被使用。新的 IPv6就將 IP數據報的首部長度做成固定的。

 

 

IP數據包指的是第三層的PDU

IP首部只是其中的一部分,是在第三層網絡層上加上去的,是給路由器看的。

 

IP數據包的總長度過大,超過鏈路的最大MTU時,數據包就會被分成多片,

而在如今的IPv4的網絡中,數據傳輸時不可靠的,是盡力而為的,

所以這些分片的數據單元到達對端的鏈路和時間都是不同的,

 

對端根據IP首部中的標示符(Identification)、標志(Flag)、段偏置值字段

重組數據包。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()