ICMP協(xié)議原理
IP協(xié)議提供盡力而為的服務(wù),它定義如何將數(shù)據(jù)從源端傳輸?shù)侥康亩耍谶@過程中,不負(fù)責(zé)對網(wǎng)絡(luò)層數(shù)據(jù)傳輸?shù)牟铄e(cuò)提供檢測和報(bào)告,為了保證網(wǎng)絡(luò)信息的正常交互,就誕生了ICMP,由它來承擔(dān)網(wǎng)絡(luò)層數(shù)據(jù)傳輸?shù)牟铄e(cuò)提供檢測和報(bào)告的作用!
ICMP:Internet Control Message Protocol(互聯(lián)網(wǎng)控制消息協(xié)議?。?/p>
功能:(故障診斷和錯(cuò)誤報(bào)告)
- 確認(rèn)IP包是否成功到達(dá)目標(biāo)地址
ping工具(使用ICMP協(xié)議)
- 通知在發(fā)送過程中IP包被丟棄的原因
比如當(dāng)一個(gè)數(shù)據(jù)包到達(dá)路由器時(shí),如果發(fā)現(xiàn)數(shù)據(jù)包的IP頭部的TTL字段已經(jīng)過期,它就會(huì)丟棄這個(gè)數(shù)據(jù)包,然后封裝一個(gè)ICMP TTL過期消息發(fā)送給數(shù)據(jù)包的發(fā)送端,告知它數(shù)據(jù)丟棄的原因是TTL已經(jīng)過期!
ICMP報(bào)文格式
類型:占用1字節(jié),標(biāo)識ICMP報(bào)文的類型,從類型值來看ICMP報(bào)文可以分為兩大類。第一類是取值為1~127的差錯(cuò)報(bào)文,第2類是取值128以上的信息報(bào)文!
代碼(編碼):占用1字節(jié),標(biāo)識對應(yīng)ICMP報(bào)文的代碼!
注意:類型和代碼界定了這個(gè)ICMP消息的類型!
常見ICMP消息對應(yīng)的類型和編碼:
校驗(yàn)和:
從數(shù)據(jù)包計(jì)算出來的值來檢查其完整性。
通過完整性,我們可以檢查收到的數(shù)據(jù)是否沒有錯(cuò)誤。
ICMP應(yīng)用
ping
ping是檢測網(wǎng)絡(luò)連通性的常用工具,同時(shí)也能夠收集其他相關(guān)信息。
用戶可以在ping命令中指定不同參數(shù),如ICMP報(bào)文長度、發(fā)送的ICMP報(bào)文個(gè)數(shù)、等待回復(fù)響應(yīng)的超時(shí)時(shí)間等,設(shè)備根據(jù)配置的參數(shù)來構(gòu)造并發(fā)送ICMP報(bào)文,進(jìn)行ping測試。
常用參數(shù):
ping命令的輸出信息中包括目的地址、ICMP報(bào)文長度、序號、TTL值、以及往返時(shí)間!
tracert
顯示數(shù)據(jù)包在網(wǎng)絡(luò)傳輸過程中經(jīng)過的每一跳!
(tracert基于報(bào)文頭中的TTL值來逐跳跟蹤報(bào)文的轉(zhuǎn)發(fā)路徑)
tracert是檢測網(wǎng)絡(luò)丟包及時(shí)延的有效手段,同時(shí)可以幫助管理員發(fā)現(xiàn)網(wǎng)絡(luò)中的路由環(huán)路!
常用參數(shù):
追蹤過程:
補(bǔ)充:
ICMP差錯(cuò)報(bào)文:
ICMP控制報(bào)文:
ICMP路由和重定向報(bào)文:
ICMP請求與應(yīng)答報(bào)文:
ICMP協(xié)議的安全性
協(xié)議的特點(diǎn),決定了它非常容易被用于攻擊主機(jī)和路由器!
- ping of death(死亡之ping)
應(yīng)對措施:
- 洪水攻擊
應(yīng)對措施:
注意:為了不占用篇幅,以上攻擊實(shí)驗(yàn),會(huì)在<<Wireshark詳解>>系列中復(fù)現(xiàn)!
ping使用的兩個(gè)ICMP消息:
ICMP Echo-Request請求消息(類型:8):檢測目的的可達(dá)性
ICMP Echo-Reply回復(fù)消息(類型:0):目的收到ICMP Echo-Request請求消息后,根據(jù)IP報(bào)文中的源IP地址,向其發(fā)送ICMP Echo-Reply回復(fù)消息!






