ICMP協(xié)議的功能非常重要,在網(wǎng)絡(luò)協(xié)議的學(xué)習(xí)中,這部分知識也是我們講解的重點(diǎn)。那么對于ICMP協(xié)議的工作原理,以及工作流程具體是如何完成的呢?我們就來詳細(xì)介紹一下這方面的效驗(yàn)問題。首先我們要明確一下ICMP的定義。
ICMP簡介對于熟悉網(wǎng)絡(luò)的人來說, ICMP是再熟悉不過了。它同IP協(xié)議一樣工作在ISO模型的網(wǎng)絡(luò)層, 它的全稱是: Internet Control Message Protocal. 其在網(wǎng)絡(luò)中的主要作用是:
- 主機(jī)探測
- 路由維護(hù)
- 路由選擇
- 流量控制
對于主機(jī)探測來說有很多方法,主機(jī)某些服務(wù)的BANNER,一些使用的應(yīng)用程序,或者使用工具來檢測主機(jī),如NMAP,在WEB上有www.netcraft.com來簡單的估測主機(jī)。下面所講的是使用ICMP協(xié)議來探測主機(jī),主要也是可以了解ICMP這個協(xié)議,這里最主要的也是將這個ICMP協(xié)議。
協(xié)議分析 - ICMP協(xié)議解碼詳解
ICMP全稱Internet Control Message Protocol,中文名為因特網(wǎng)控制報文協(xié)議。它工作在OSI的網(wǎng)絡(luò)層,向數(shù)據(jù)通訊中的源主機(jī)報告錯誤。ICMP可以實(shí)現(xiàn)故障隔離和故障恢復(fù)。
網(wǎng)絡(luò)本身是不可靠的,在網(wǎng)絡(luò)傳輸過程中,可能會發(fā)生許多突發(fā)事件并導(dǎo)致數(shù)據(jù)傳輸失敗。網(wǎng)絡(luò)層的IP協(xié)議是一個無連接的協(xié)議,它不會處理網(wǎng)絡(luò)層傳輸中的故障,而位于網(wǎng)絡(luò)層的ICMP協(xié)議卻恰好彌補(bǔ)了IP的缺限,它使用IP協(xié)議進(jìn)行信息傳遞,向數(shù)據(jù)包中的源端節(jié)點(diǎn)提供發(fā)生在網(wǎng)絡(luò)層的錯誤信息反饋。
ICMP提供多種類型的消息為源端節(jié)點(diǎn)提供網(wǎng)絡(luò)層的故障信息反饋,它的報文類型可以歸納為以下5個大類:
診斷報文(類型8,代碼0;類型0,代碼0);
目的不可達(dá)報文(類型3,代碼0-15);
重定向報文(類型5,代碼0-4);
超時報文(類型11,代碼0-1);
信息報文(類型12-18)。
詳細(xì)解碼使用科來網(wǎng)絡(luò)分析系統(tǒng)捕獲數(shù)據(jù)包,我們得到ICMP回顯報文的信息,如圖1所示
ICMP協(xié)議內(nèi)容
ICMP的全稱是InternetControlMessageProtocol?從技術(shù)教度來說,ICMP就是一個“錯誤偵測與回報機(jī)制“,其目的就是讓我們能夠檢測網(wǎng)路的連線狀況﹐也能確保連線的準(zhǔn)確性﹐其功能主要有:
◆偵測遠(yuǎn)端主機(jī)是否存在?
◆建立及維護(hù)路由資料?
◆重導(dǎo)資料傳送路徑?
◆資料流量控制?
ICMP在溝通之中,主要是透過不同的類別(Type)與代碼(Code)讓機(jī)器來識別不同的連線狀況?常用的類別如下表所列﹕
ICMP是個非常有用的協(xié)定﹐尤其是當(dāng)我們要對網(wǎng)路連接狀況進(jìn)行判斷的時候?下面讓我們看看常用的ICMP實(shí)例,以更好了解ICMP的功能與作用?
ICMP協(xié)議的重要性ICMP協(xié)議對于網(wǎng)絡(luò)安全具有極其重要的意義?ICMP協(xié)議本身的特點(diǎn)決定了它非常容易被用于攻擊網(wǎng)絡(luò)上的路由器和主機(jī)?例如,在1999年8月海信集團(tuán)“懸賞“50萬元人民幣測試防火墻的過程中,其防火墻遭受到的ICMP攻擊達(dá)334050次之多,占整個攻擊總數(shù)的90%以上!可見,ICMP的重要性絕不可以忽視!
比如,可以利用操作系統(tǒng)規(guī)定的ICMP數(shù)據(jù)包最大尺寸不超過64KB這一規(guī)定,向主機(jī)發(fā)起“PingofDeath”(死亡之Ping)攻擊?“PingofDeath“攻擊的原理是:如果ICMP數(shù)據(jù)包的尺寸超過64KB上限時,主機(jī)就會出現(xiàn)內(nèi)存分配錯誤,導(dǎo)致TCP/IP堆棧崩潰,致使主機(jī)死機(jī)?
此外,向目標(biāo)主機(jī)長時間?連續(xù)?大量地發(fā)送ICMP數(shù)據(jù)包,也會最終使系統(tǒng)癱瘓?大量的ICMP數(shù)據(jù)包會形成“ICMP風(fēng)暴”,使得目標(biāo)主機(jī)耗費(fèi)大量的CPU資源處理,疲于奔命?
ICMP協(xié)議的校驗(yàn)和算法
我們在網(wǎng)絡(luò)中經(jīng)常會使用到ICMP協(xié)議,只不過我們覺察不到而已?比如我們經(jīng)常使用的用于檢查網(wǎng)絡(luò)通不通的Ping命令,這個“Ping“的過程實(shí)際上就是ICMP協(xié)議工作的過程?還有其他的網(wǎng)絡(luò)命令如跟蹤路由的Tracert命令也是基于ICMP協(xié)議的?