天天看點

ICMP詳解

ICMP簡介

ICMP的全稱是Internet Control Message Protocol。也就是網絡控制封包協定。

ICMP是一個網絡層協定。用來檢測IP封包是否能夠正常發送,以及出錯原因,以及查詢主機的資訊。

也就是差錯查詢和資訊查詢。

我們經常使用的ping工具就是利用ICMP實作的。

ICMP詳解

ICMP詳解

ICMP封包

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封包類别

ICMP詳解

PING

ping就是利用 ICMP發送請求封包 來探測主機之間是否網絡是否通暢

tracert

tracert用來擷取主機之間的路由資訊。依次發送ttl = 1,2,3…n的ICMP請求包。通過對應的路由器發送逾時ICMP包來擷取對應的路由資訊。

繼續閱讀