10 ICMP資料報文格式

2021-08-19 05:55:56 字數 2316 閱讀 6812

icmp資料報文的格式如圖1所示:

圖1-icmp資料報文格式

型別(type):占用了8 bit位,前面我們說,是icmp報文型別,用於標識錯誤型別的差錯報文或者查詢型別的報告報文。

**(code):占用了8 bit位,根據icmp差錯報文的型別,進一步分析錯誤的原因,**值不同對應的錯誤也不同,例如:型別為11且**為0,表示資料傳輸過程中超時了,超時的具體原因是ttl值為0,資料報被丟棄。

校驗和(checksum):占用了16 bit位,資料傳送到目的地後需要對icmp資料報文做乙個校驗,用於檢查資料報文是否有錯誤。

識別符號(identifier):占用了16 bit位,對於每乙個傳送的資料報進行標識

序列號(sequence number):占用了16 bit位,對於傳送的每乙個資料報文進行編號,比如:傳送的第乙個資料報序列號為1,第二個序列號為2。

資料(data):要傳送的icmp資料。

以icmp請求報文為例,我們來看一下icmp請求報文的封裝格式:

圖2-icmp請求報文的封裝格式

internet control message protocol

type: 8 (echo (ping) request) // icmp型別為8,說明這是乙個icmp請求查詢報文

code: 0

//表示是請求

checksum: 0xf7e9 [correct] //校驗和

[checksum status: good] //校驗和狀態,good表示校驗和正確,bad表示資料報被修改或者發生錯誤

identifier (be): 1 (0x0001) //標識,用於區分在linux下抓包,基本上抓的每乙個icmp包都是1

identifier (le): 256 (0x0100) //標識,用於區分在windows下抓包,基本上抓的每乙個icmp包都是256

sequence number (be): 21 (0x0015) //序列號,用於區分在linux下抓包,每乙個icmp包的序列號都不一樣

sequence number (le): 5376 (0x1500) //序列號,用於區分在windows下抓包,每乙個icmp包的序列號都不一樣

[no response seen]

data (64

bytes) //資料部分

這是我們剛才通過ping命令抓的icmp協議包,其中request是icmp請求資料報,reply是icmp回答資料報,另外request和reply是一組icmp請求回答資料報

我們再針對一組icmp請求回答資料報分析兩個icmp資料報是否為一組。

圖3-icmp的request和reply

在圖3中,左側是icmp請求,右側是icmp回答,我們在分析的時候發現,這兩個icmp資料報的序列號都是一樣的,說明了這兩個icmp資料報就是一組的。而不同組的icmp資料報的序列號也是不同的,由此可知,通過判斷兩個icmp報文的序列號就可以知道是否為一組。

下面我們來看一下,我們在用ping命令傳送的ping包攜帶的是什麼資料。

圖4-icmp資料部分

其中data就是剛才ping命令所傳送的icmp資料報文裡的資料部分,這些資料是ping命令傳送的測試內容,左側部分是以十六進製制表示,右側部分就是我們所傳送的資料部分,這些資料長度正好是32位元組,乙個字母代表乙個位元組。

圖5-icmp報文通用格式

前面我們說過icmp資料報文種類有icmp差錯報文和icmp查詢報文,這些報文的格式除了型別,**,校驗和這些欄位是一樣的,但是不同的icmp資料報文的型別,**等字段也是不一樣的,而上面的圖5是icmp資料報文的通用格式。

網路協議 ICMP協議(1) 報文格式

網際網路控制訊息協議 英文 internet control message protocol,icmp 是網際網路協議族的核心協議之一。定義在rfc 792文件中。icmp的訊息大致可以分為兩類 一類是差錯報文,即通知出錯原因的錯誤訊息 如traceroute 另一類是查詢報文,即用於診斷的查詢訊...

DNS那點事之DNS報文格式及資料報分析

上一講到dns中網域名稱解析的原理和過程,這篇文章講一下dns的報文格式,並通過wireshark捉包分析一下。關於dns的報文格式可以看google,這裡不再多說,接下來用我的站點mydoodle.com.cn 來捉包分析。展開domain name system reposen 首部區域 識別符...

HTTP協議資料報格式(報文段)

先看一張簡圖,如下 get 請求獲取request url所標識的資源 post 在request url所標識的資源後附加資源 head 請求獲取由request url所標識的資源的響應訊息報頭 put 請求伺服器儲存乙個資源,由request url作為其標識 delete 請求伺服器刪除由r...