ICMP是“Internet Control Message Protocol”的縮寫�,中文稱“互�(lián)�(wǎng)控制消息�(xié)議”,是用于在 TCP/IP �(wǎng)�(luò)中發(fā)送控制消�,提供可能發(fā)生在通信�(huán)境中的各種問題反饋,通過這些信息,令管理者可以對所�(fā)生的問題作出診斷,然后采取適�(dāng)?shù)拇胧┤ソ鉀Q��ICMP 依靠IP來完成它的任�(wù),它是IP的主要部��
ICMP�(xié)議是一種面向連接的協(xié)�,用于傳輸出�(cuò)�(bào)告控制信息。它是一�(gè)非常重要的協(xié)�,它對于�(wǎng)�(luò)安全具有極其重要的意��
它是TCP/IP�(xié)議族的一�(gè)子協(xié)�,屬于�(wǎng)�(luò)層協(xié)�,主要用于在主�(jī)與路由器之間傳遞控制信息,包括�(bào)告錯(cuò)�、交換受限控制和狀�(tài)信息等。當(dāng)遇到IP�(shù)�(jù)無法訪問目標(biāo)、IP路由器無法按�(dāng)前的傳輸速率�(zhuǎn)�(fā)�(shù)�(jù)包等情況�(shí),會自動�(fā)送ICMP消息ICMP提供一致易懂的出錯(cuò)�(bào)告信�。發(fā)送的出錯(cuò)�(bào)文返回到�(fā)送原�(shù)�(jù)的設(shè)�,因?yàn)橹挥邪l(fā)送設(shè)備才是出�(cuò)�(bào)文的邏輯接受�。發(fā)送設(shè)備隨后可根據(jù)ICMP�(bào)文確定發(fā)生錯(cuò)誤的類型,并確定如何才能更好地重�(fā)失敗的數(shù)�(jù)�(bào)。但是ICMP的功能是�(bào)告問題而不是糾正錯(cuò)�,糾正錯(cuò)誤的任務(wù)由發(fā)送方完成�
每�(gè)ICMP消息都是直接封裝在一�(gè)IP�(shù)�(jù)�(bào)中的,因此,和UDP一�,ICMP是不可靠的。雖然ICMP是包含在IP�(shù)�(jù)�(bào)中的,但是對ICMP消息通常會特殊處�,會和一般IP�(shù)�(jù)�(bào)的處理不�,而不是作為IP的一�(gè)子協(xié)議來處理。在很多�(shí)�,需要去查看ICMP消息的內(nèi)�,然后發(fā)送適�(dāng)?shù)腻e(cuò)誤消息到那�(gè)原來�(chǎn)生IP�(shù)�(jù)包的程序,即那�(gè)�(dǎo)致ICMP訊息被傳送的IP�(shù)�(jù)��
我們在�(wǎng)�(luò)中經(jīng)常會使用到ICMP�(xié)議,比如我們經(jīng)常使用的用于檢查�(wǎng)�(luò)通不通的Ping命令(Linux和Windows中均有),這�(gè)“Ping”的過程�(shí)際上就是ICMP�(xié)議工作的過程。還有其他的�(wǎng)�(luò)命令如跟蹤路由的Tracert命令也是基于ICMP�(xié)議的�
ICMP�(xié)議對于網(wǎng)�(luò)安全具有極其重要的意�。ICMP�(xié)議本身的特點(diǎn)決定了它非常容易被用于攻擊網(wǎng)�(luò)上的路由器和主機(jī)。例�,在1999�8月海信集�(tuán)“懸賞�50萬元人民幣測試防火墻的過程中,其防火墻遭受到的ICMP攻擊�(dá)334050次之多,占整�(gè)攻擊總數(shù)�90%以上!可見,ICMP的重要性絕不可以忽��
比如,可以利用操作系�(tǒng)�(guī)定的ICMP�(shù)�(jù)包尺寸不超過64KB這一�(guī)�,向主機(jī)�(fā)起“Ping of Death”(死亡之Ping)攻�?!癙ing of Death� 攻擊的原理是:如果ICMP�(shù)�(jù)包的尺寸超過64KB上限�(shí),主�(jī)就會出現(xiàn)�(nèi)存分配錯(cuò)�,導(dǎo)致TCP/IP堆棧崩潰,致使主�(jī)死機(jī)�
此外,向目標(biāo)主機(jī)長時(shí)�、連續(xù)、大量地�(fā)送ICMP�(shù)�(jù)�,也會最終使系統(tǒng)癱瘓。大量的ICMP�(shù)�(jù)包會形成“ICMP�(fēng)暴�,使得目�(biāo)主機(jī)耗費(fèi)大量的CPU資源處理,疲于奔��
從技�(shù)角度來說,ICMP就是一�(gè)“錯(cuò)誤偵測與回報(bào)�(jī)制�,其目的就是讓我們能夠檢測網(wǎng)路的連線狀況﹐也能確保連線的準(zhǔn)確性﹐其功能主要有�
· 偵測�(yuǎn)端主�(jī)是否存在�
· 建立及維�(hù)路由資料�
· 重導(dǎo)資料傳送路��
·資料流量控制�
Type � �(cuò)誤消息或信息消息。錯(cuò)誤消息可能是不可獲得目標(biāo)文件,數(shù)�(jù)包太�,超�(shí),參�(shù)問題�??赡艿男畔⑾⒂校篍cho Request、Echo Reply、Group Membership Query、Group Membership Report、Group Membership Reduction�
Code � 每種消息類型具有多種不同代碼。不可獲得目�(biāo)文件正式這樣一�(gè)例子,即其中可能的消息是:目�(biāo)文件沒有路由,禁止與目標(biāo)文件的通信,非鄰居,不可獲得地址,不可獲得端口。具體細(xì)節(jié)請參照相�(guān)�(biāo)�(zhǔn)�
Checksum � �(jì)算校�(yàn)和時(shí),Checksum 字段�(shè)置為0�
Identifier � 幫助匹配 Requests/Replies 的標(biāo)識符,值可能為0�
Sequence Number � 幫助匹配 Requests/Replies 的序列號,值可能為0�
Address Mask � 32位掩碼地址�
unsignedshortchksum(addr,len) unsignedshort*addr;/*校驗(yàn)�(shù)�(jù)開始地址(注意是�2字節(jié)為單位)*/ intlen;/*校驗(yàn)�(shù)�(jù)的長度大�,以字節(jié)為單�*/ { intsum=0;/*校驗(yàn)�*/ intnleft=len;/*未累加的�(shù)�(jù)長度*/ unsignedshort*p;/*走動的臨�(shí)指針,2字節(jié)為單�*/ unsignedshorttmp=0;/*奇數(shù)字節(jié)長度�(shí)用到*/ while(nleft>1) { sum+=*p++;/*累加*/ nleft-=2; } if(nleft==1)/*奇數(shù)字節(jié)長度*/ { *(unsignedchar*)&tmp=*(&(unsignedchar*)p);/*將字節(jié)壓如2字節(jié)的高�*/ sum+=tmp; } sum+=(sum>>16)+(sum&0xffff);/*高位低位相加*/ sum+=sum>>16;/*上一步溢出時(shí),將溢出位也加到sum�*/ tmp=~sum;/*注意類型�(zhuǎn)�,現(xiàn)在的校驗(yàn)和為16�*/ returntmp; }
維庫電子�,電子知�,一查百��
已收錄詞�154201�(gè)