原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

一、什麼是ICMP?

ICMP,互聯網報文控制協議,屬於IP的附屬協議,IP協議號為1,很多人瞭解ICMP可能僅限於ping和tracert功能,然而ping和tracert功能僅是ICMP協議的一小部分應用。

最牛X的一點是所有網絡設備都會配合ICMP的執行。


二、ICMP的報文頭部格式及報文類型

ICMP報文格式


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


ICMP報文頭部根據報文類型和代碼不同長度也不盡相同,但前4個字節是固定的,後面4個字節報文類型不同內容也不相同。


ICMP報文類型

ICMP協議的報文分為兩大類查詢報文和差錯報文。

下圖中為ICMP所有的報文類型及代碼類型:


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


查詢報文相對較少,基本上常用的就是ping功能。

差錯報文,是數據報文不能正常發送或接收時向發送方通告錯誤信息的一種報文,差錯報文除正常ICMP報文頭部以外,還會加入產生差錯的報文的IP地址首部和IP報文內容的前8字節數據。為什麼要加入IP報文內容的前8字節數據,是因為IP報文內容的前8字節數據包含TCP或UDP的端口號等內容,這樣發送端接收到差錯報文後通過這8個字節就能知道是哪個端口號的具體應用出現了報文發送中的錯誤。


知識擴展:並不是所有應用都會關注ICMP發送的差錯報文,不同應用開發者開發的應用對收到ICMP差錯報文後的處理都不相同,例如:思科路由器和windows作為telnet客戶端向服務端發起telnet請求後如果收到ip地址不可達的ICMP差錯報文後,思科路由器的處理方式是直接斷掉telnet進程,而windows則是忽略掉收到的ICMP差錯報文並保持telnet進程直到telnet的TCP連接超時。

3、 ICMP報文分析


以下實驗數據包分析均通過發送ping數據包進行測試。

1、目標可達ICMP報文分析

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:實驗ICMP報文一覽


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:路由器1向路由器3發送一個類型為8,代碼為0的echo請求查詢報文。

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:路由器2向路由器1響應一個類型為0,代碼為0的echo響應查詢報文。


2、無可達目標網絡ICMP不可達報文分析

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:實驗ICMP報文一覽


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:路由器1發送查詢報文


路由器1向路由器3發送一個類型為8,代碼為0的echo請求查詢報文。


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:路由器2回覆差錯報文


路由器2發現沒有前往192.168.25.X段的路由,所以向路由器1回覆一條ICMP類型為3,代碼為1的差錯報文,提示主機不可達。詳見下圖:

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上文說過,ICMP差錯報文會包含產生差錯的報文的IP地址首部和IP報文內容的前8字節數據。報文中可見產生差錯的報文是由192.168.12.1發往192.168.25.2的ICMP為類型8,代碼為0的這個報文,也就是路由器1發給路由器2的查詢報文在傳輸過程中產生了錯誤信息。詳見下圖:(下文的報文分析中不會再提及此內容。)

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


3、網絡限制ICMP不可達報文分析

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:實驗ICMP報文一覽


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:路由器1發送ICMP查詢報文


路由器1向路由器3發送一個類型為8,代碼為0的echo請求查詢報文。


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:路由器2回覆差錯報文


路由器2有訪問控制策略限制了此數據包的發送,將數據包丟棄的同時,向路由器1回覆一條ICMP類型為3,代碼為13的差錯報文,提示被管理限制通信。詳見下圖:

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


4、MTU限制ICMP不可達報文分析

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:實驗ICMP報文一覽


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:路由器1發送大小為1100字節不可分片的ICMP查詢報文


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:路由器2回覆差錯報文


路由器2限制了出接口的MTU值,而ICMP請求報文大於此MTU值且不允許分片,所示將數據包丟棄的同時,向路由器1回覆一條ICMP類型為3,代碼為4的差錯報文,提示超出接口MTU大小需要分片處理,並在報文內容中回覆了允許通過的MTU值為1000字節。詳見下圖:

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


知識擴展:可以通過此功能探測路徑中的最小MTU是多少,可主動設置發送數據包的MTU值減少分包產生的網絡延遲。


5、 重定向報文,ICMP redirects功能分析


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:實驗ICMP報文一覽


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:交換機1發送訪問互聯網地址114.114.114.114的ICMP查詢報文。


原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

上圖:路由器2(192.168.1.254)發送ICMP類型為5代碼為0的重定向報文告知最優網關為路由器1(192.168.1.1)


下圖為交換機未收到ICMP重定向報文的網關為192.168.1.254

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

下圖為交換機收到訪問互聯網地址114.114.114.114後,由路由器2發送的ICMP重定向報文後自動添加的路由,即訪問114.114.114.114這臺主機的網關修改為192.168.1.1。

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

四、相關ICMP差錯報文帶來的安全隱患處理

1、黑客對網段的探索

黑客如果能夠進入到網絡內部,可以通過ping隨機網絡讓網關響應各種不可達報文類型,通過分析報文就能知道網絡內部不可達的網絡段是沒有可達路由(網絡中沒有這個網段),還是被訪問控制列表給限制,這個ICMP的響應的不可達報文就會給黑客提供了一種探索網絡的手段,給網絡帶來安全隱患。

解決辦法:通過在網關設備上關閉ICMP不可達報文的響應。

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

首先思科設備默認情況下是回覆ICMP不可達報文的,可以通過在端口視圖下輸入no ip unreachables關閉ICMP不可達報文的回覆以解決上述問題。

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解

2、ICMP響應泛洪攻擊

網絡設備如果每次收到ICMP報文,發現目標地址不可達就回復不可達報文,黑客就可以通過控制肉雞不斷訪問一個不存在的網段,讓網絡設備不斷回覆ICMP不可達報文,導致網絡設備處理正常數據能力下降。

解決辦法:限制ICMP不可達報文的數量,超出數量不進行回覆。

思科設備通在配置視圖下輸入ip icmp rate-limit unreachable XXX,XXX為限制多少毫秒發送一次不可達報文。

原創:計算機網絡-協議-互聯網控制報文協議ICMP詳解


以上內容均為本人對所掌握知識的總結歸納所創作的原創文章,希望能給大家的學習過程帶來幫助,如有技術理解錯誤希望能夠及時得到大家的指正,大家共同學習,共同進步。



分享到:


相關文章: