❶ 什麼是報文IP報文的結構
網路之間互連的協議也就是為計算機網路相互連接進行通信而設計的協議。在網際網路中,它是能使連接到網上的所有計算機網路實現相互通信的一套規則,規定了計算機在網際網路上進行通信時應當遵守的規則。
什麼是報文?
報文(message)是網路中交換與傳輸的數據單元,即站點一次性要發送的數據塊。報文包含了將要發送的完整的數據信息,其長短很不一致,長度不限且可變。
一、IP數據報文結構如下:
各欄位解釋如下:
1,version:版本號,4bits,指IP協議的版本。
2,header length:首部長度,4bits,單位為4位元組,故最大長度為4*(2^4-1)=60位元組,首部固定部分長度為20位元組,可變部分為0~40位元組。
3,differentiated services:服務類型,8bits,組成如下:
過程欄位:3位,設置了數據包的重要性,取值越大數據越重要,取值范圍為:0(正常)~ 7(網路控制)
延遲欄位:1位,取值:0(正常)、1(期特低的延遲)
流量欄位:1位,取值:0(正常)、1(期特高的流量)
可靠性欄位:1位,取值:0(正常)、1(期特高的可靠性)
成本欄位:1位,取值:0(正常)、1(期特最小成本)
保留欄位:1位 ,未使用
4,total length:總長度,16bits,首部加上數據的長度總和,單位為位元組,故數據報最大長度為2^16-1=65525位元組。另外總長度必須不超過最大傳送單元MTU。
5,identification:標識,16bits,計數器,作為數據報標識。當數據報需要分片時,該標識用來表示同屬一個數據報的分片。需要分片時結合以下flags、fragment offset一起使用。
6,flags:標志,3bits,記為D0-D1-D2,各自意義如下:
D0:1表示有後續分片,0表示該數據報為最後一片。
D1:1表示不分片,0表示分片。
D2:保留位,未使用。
7,fragment offset:片偏移,13bits,單位為8位元組,表示分片後的某分片在原分組中的相對位置。
8,time to live:生存時間,8bits,表示數據報在網路中的壽命,單位為跳,經過一個路由表示一跳,該值減 一,到零則丟棄。
9,protocal:協議,8bits,指出使用該包裹的上層協議,如TCP=6,ICMP=1,UDP=17等。
10,header checksum:首部(不包括數據部分)檢驗和,16bits。這里不採用 CRC 檢驗碼而採用簡單的「反碼算術求和」計算方法。
11,source address:源地址,32bits,即源IP地址。
12,destination address:目的地址,32bits,即目的IP地址。
13,options:可選欄位,長度可變,1~40位元組。用於增加IP數據報的控制功能。
14,另外還有個填充欄位,上圖中未顯示,該欄位用來保證首部的長度為4位元組的整數倍。
15,Data:用戶數據。
二、用抓包工具抓IP數據報,截圖如下:
由圖可知,該IP首部只有20個位元組,各欄位值分別為:
version(4):4。
header length(4):5 * 4 = 20 bytes。
differentiated services(8):ox00。
total length(16):ox0034,3*16 + 4 = 52 bytes,由上圖可知,IP報文長度為66 -14 = 52,前面14位元組為乙太網幀中的部分數據,其實就是兩個mac(6byte)地址再加一個2位元組的type。
identification(16):ox4c46,19526。
flags(3):二進制010,可知該數據報不分片且為最後片。
fragment offset(13):二進制0 0000 0000 0000。
time to live(8):0x40,即64跳。
protocal(8):0x06,即上層協議為TCP。
header checksum(16):0xd7e8。
source address(32):0xc0a80569,即192.168.5.105。
destination address(32):ox774bd938,即119.75.217.56。
options(1~40):無
以上就是IP報文的結構的詳細介紹,希望大家看了本片文章以後可以對IP報文有多了解,謝謝閱讀。