IP資料報格式

2021-07-09 03:13:10 字數 2553 閱讀 2981

tcp/ip協議定義了乙個在網際網路上傳輸的包,稱為ip資料報(ip datagram).這是乙個與硬體無關的虛擬包,由首部和資料兩部分組成.首部的前一部分是固定長度,共 20 位元組,是所有ip資料報必須具有的.在首部的固定部分的後面是一些可選字段,其長度是可變的.

版本:佔4位,指ip協議的版本.通訊雙方使用的ip協議版本必須一致.日前廣泛使用的 ip協議版本號為 4 (即 ipv4).ipv6 目前還處於起步階段.

首部長度:佔 4 位,可表示的最大十進位制數值是15.請注意,這個欄位所表示數的單位是32位字 (1個32位字長是4 位元組),因此,當 ip 的首部長度為 1111 時 (即十進位制的 15),首部長度就達到 60位元組.當 ip 分組的首部長度不是4位元組的整數倍時,必須利用最後的填充字段加以填充.因此資料部分永遠在 4位元組的整數倍開始,這樣在實現 ip協議時較為方便.首部長度限制為 60位元組的缺點是有時可能不夠用.這樣做的目的是希望使用者儘量減少開銷.最常用的首部長度就是 20 位元組 (即首部長度為 0101),這時不使用任何選項.

服務:佔 8 位,用來獲得更好的服務.這個欄位在舊標準中叫做服務型別,但實際上一直沒有被使用過.2023年ietf把這個字段改名為區分服務 ds(differentiated services).只有在使用區分服務時,這個欄位才起作用.

總長度:總長度指首都及資料之和的長度,單位為位元組.因為總長度欄位為 16位,所以資料報的最大長度為 216-1=65 535位元組.在ip層下面的每一種資料鏈路層都有自己的幀格式,其中包括幀格式中的資料字段的最大長度,即最大傳送單元 mtu (maximum transfer unit).當乙個資料報封裝成鏈路層的幀時,此資料報的總長度 (即首部加上資料部分)一定不能超過下面的資料鏈路層的mtu值,否則要分片.

標識 (identification):佔 16位.ip軟體在儲存器中維持乙個計數器,每產生乙個資料報,計數器就加 1,並將此值賦給標識欄位.但這個"標識"並不是序號,因為 ip是無連線的服務,資料報不存在按序接收的問題.當資料報由於長度超過網路的 mtu 而必須分片時,這個標識欄位的值就被複製到所有的資料報的標識欄位中.相同的標識欄位的值使分片後的各資料報片最後能正確地重灌成為原來的資料報.

標誌 (flag):佔3 位,但目前只有2位有意義. 標誌欄位中的最低位記為 mf(more fragment).mf=1即表示後面"還有分片"的資料報.mf=0表示這已是若干資料報片中的最後乙個.標誌字段中間的一位記為df(don't fragment),意思是"不能分片",只有當 df=0時才允許分片.

片偏移:佔 13位.較長的分組在分片後,某片在原分組中的相對位置.也就是說,相對使用者資料字段的起點,該片從何處開始.片偏移以 8個位元組為偏移單位,這就是說,每個分片的長度一定是 8位元組(64位)的整數倍.

協議:佔 8 位.協議字段指出此資料報攜帶的資料是使用何種協議,以便使目的主機的ip層知道應將資料部分上交給哪個處理過程.詳細資料請看文章最後的注釋.

首部檢驗和:佔 16位.這個欄位只檢驗資料報的首部,但不包括資料部分.這是因為資料報每經過乙個路由器,都要重新計算一下首都檢驗和 (一些字段,如生存時間,標誌,片偏移等都可能發生變化),不檢驗資料部分可減少計算的工作量.

ip首部的可變部分就是乙個可選字段.選項字段用來支援排錯,測量以及安全等措施,內容很豐富.此字段的長度可變,從1個位元組到40個位元組不等,取決於所選擇的專案.某些選項專案只需要1個位元組,它只包括1個位元組的選項**.但還有些選項需要多個位元組,這些選項乙個個拼接起來,中間不需要有分隔符,最後用全0的填充字段補齊成為4位元組的整數倍.

增加首部的可變部分是為了增加ip資料報的功能,但這同時也使得ip資料報的首部長度成為可變的.這就增加了每乙個路由器處理資料報的開銷,實際上這些選項很少被使用.新的ip版本ipv6就將ip資料報的首部長度做成固定的.

目前,這些任選項定義如下:

安全和處理限制(用於軍事領域);

記錄路徑(讓每個路由器都記下它的ip位址);

時間戳(time stamp)(讓每個路由器都記下ip資料報經過每乙個路由器的ip位址和當地時間);

寬鬆的源站路由(loose source route)(為資料報指定一系列必須經過的ip位址);

嚴格的源站路由(strict source route)(與寬鬆的源站路由類似,但是要求只能經過指定的這些位址,不能經過其他的位址).

這些選項很少被使用,並非所有主機和路由器都支援這些選項.

下面是乙個tcp的syn資料報,大家可以分析一下:

4500002c2a690000-4006b7580a616750-7cacaaad24de0e89-12de958000000000-60023908ea4d0000-020405b4

後面的資料時tcp的頭部,這裡先簡單列出來,後面會詳細分析:

注:255 保留 

from:

IP資料報格式

版本字段長度為4,用來表明建立資料報的ip版本,目前的ip版本是ipv4,ipv6正在發展中。ipv4的字段為0100 首部長度 報頭長度 指的是首部佔32 bit字的數目,包括任何選項。由於它是乙個4位元字段,因此首部最長為60個位元組。15x32 8 60位元組.ip首部始終是32 bit的整數...

IP資料報格式

ip資料報格式 tcp ip協議定義了乙個在網際網路上傳輸的包,稱為ip資料報 ip datagram 這是乙個與硬體無關的虛擬包,由首部和資料兩部分組成.首部的前一部分是固定長度,共 20 位元組,是所有ip資料報必須具有的.在首部的固定部分的後面是一些可選字段,其長度是可變的.版本 佔4位,指i...

IP資料報格式

ip協議提供不可靠無連線的資料報傳輸服務,ip層提供的服務是通過ip層對資料報的封裝與拆封來實現的。ip資料報的格式分為報頭區和資料區兩大部分,其中報頭區是為了正確傳輸高層資料而加的各種控制資訊,資料區包括高層協議需要傳輸的資料。ip資料報的格式如下 注意,上圖表示的資料,最高位在左邊,記為0位 最...