ICMP簡介
ICMP的全稱是Internet Control Message Protocol。也就是網絡控制封包協定。
ICMP是一個網絡層協定。用來檢測IP封包是否能夠正常發送,以及出錯原因,以及查詢主機的資訊。
也就是差錯查詢和資訊查詢。
我們經常使用的ping工具就是利用ICMP實作的。
ICMP詳解
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI2EzX4xSZz91ZsAzNfRHLGZkRGZkRfJ3bs92YsAjMfVmepNHL90TUlhGcygFcXJXNmJTY1cWeiVTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLmNmM0MDZyYjMxIWYiN2N4YmMmRzY2IWYwMzN3E2MmN2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
ICMP封包
在IP Header中有一個字段代表是否為ICMP包。
ICMP資料中 主要包括 以下字段:
1、Type
ICMP資料包的類别
2、Code
對Type的進一步說明
3、辨別符
唯一表示一個會話
4、選項資料
用來攜帶查詢的資訊。
差錯控制
1、主機可達
發送一個type = 8,code = 0的ICMP Request包,表示這是一個請求包,如果順利的到達對應的主機,主機會發送一個type = 0,code = 0的ICMP Reply包。
如果發送方收到Reply包,就說明主機可達。
2、主機不可達
發送一個type = 8,code = 0的ICMP Request包,如果路由器中不存在到達目的IP的路由的時候,會傳回一個type = 3,code = 1的ICMP包,表示主機不可達。
當發送方收到包後,發現type = 3, code = 1,說明主機不可達。
3、逾時
當一個ICMP包中TTL等于0的時候,路由器會将其抛棄,然後給發送端發送一個ICMP包,對應的type = 11,code = 0。
資訊查詢
比如ICMP可以查詢對應主機的時間戳
發送方發送一個type = 13,code = 0的ICMP請求包,當主機收到後,傳回一個type = 14,code = 0的ICMP應答包,将時間戳儲存在之前說的選項字段中。
ICMP封包類别
PING
ping就是利用 ICMP發送請求封包 來探測主機之間是否網絡是否通暢
tracert
tracert用來擷取主機之間的路由資訊。依次發送ttl = 1,2,3…n的ICMP請求包。通過對應的路由器發送逾時ICMP包來擷取對應的路由資訊。