ICMP報文


一、        簡介

ICMP(INTERNET CONTROL MESSAGE PROTOCOL)網絡控制消息協議。

協議號為1

ICMP報文在IP報文內部

 

一、        ICMP類型:

ICMP報文主要有兩個功能:查詢報文和差錯報文

 

二、        ICMP報文頭:

//定義ICMP首部
typedef struct _icmphdr{
  unsigned char i_type; //8位類型
  unsigned char i_code; //8位代碼
  unsigned short i_cksum; //16位校驗和, 從TYPE開始,直到最后一位用戶數據,如果為字節數為奇數則補充一位
  unsigned short i_id ; //識別號(一般用進程號作為識別號), 用於匹配ECHO和ECHO REPLY包
  unsigned short i_seq ; //報文序列號, 用於標記ECHO報文順序
  unsigned int timestamp; //時間戳
}ICMP_HEADER;

一、        ICMP報文的各種狀態:

目的不可達報文(Destination Unreachable Message)

找不到目的IP傳遞路徑

       code:

              0 = net unreachable

              1 = host unreachable

              2 = protocol unreachable

              3 = port unreachable

              4 = fragmentation needed and DF set

              5 = source route failed

源端口抑制報文(Source Quench Message)

路由器在處理報文時會有一個緩存隊列。如果超過了最大緩存隊列,將無法處理,從而丟棄報文,並向源發送一個ICMP源冷卻報文(Type為4),告訴對方不在接收報文了。

報文格式:

超時報文(Time Exceeded Message)

網絡傳輸IP數據報的過程中,如果IP數據報的TTL值逐漸遞減為0時,需要丟棄數據報,這時候路由器需要向源發送方發送ICMP超時報文(Type為11),code為0,表示傳輸過程中超時了。

 

參數錯誤報文(Parameter Problem Message)

當路由器或主機處理數據報文時,發現因為報文頭的參數錯誤而不得不丟棄報文時,需要向源發送方發送參數錯誤報文(Type為12).當錯誤為0時,報文中的Pointer指出錯誤的字節位置。

 

改變路由重定向(Redirect Message)

當路由收到IP數據報,發現數據報的目的地址在路由表中沒有,他就會發ICMP重定向報文(Type為5)個源發送方,告訴它發送的地址不在

 

回送請求和回答(Echo or Echo Reply Message)

Type為8是請求回顯報文(Echo);Type(0)是回顯應答報文(Echo Reply

)。請求回顯包或回顯應答報文屬於查詢報文,Ping就是用這種報文進行查詢和應答的。

 

時間戳請求和回答(Timestamp or timestamp Reply Message)

時間戳報文時用來記錄收發以及傳輸時間的報文Originate Timestamp記錄的是發送方發送報文的時刻。Receive Timestamp記錄的是接收方收到的報文的時刻;Transmit Timestamp表示回顯這最后發送報文的時刻。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM