大家好,今天詳細(xì)介紹icmp。icmp是 控制報(bào)文協(xié)議。它是tcp/ip協(xié)議族的一個(gè)子協(xié)議,用于在ip主機(jī)、路由器之間傳遞控制消息。控制消息是指網(wǎng)絡(luò)通不通、主機(jī)是否可達(dá)、路由是否可用等網(wǎng)絡(luò)本身的消息。這些控制消息雖然并不傳輸用戶數(shù)據(jù),但是對(duì)于用戶數(shù)據(jù)的傳遞起著重要的作用。
icmp協(xié)議是一種面向無(wú)連接的協(xié)議,用于傳輸出錯(cuò)報(bào)告控制信息。它是一個(gè)非常重要的協(xié)議,它對(duì)于網(wǎng)絡(luò)安全具有極其重要的意義。icmp協(xié)議是tcp/ip協(xié)議族的一個(gè)子協(xié)議,屬于網(wǎng)絡(luò)層協(xié)議,主要用于在主機(jī)與路由器之間傳遞控制信息,包括報(bào)告錯(cuò)誤、交換受限控制和狀態(tài)信息等。當(dāng)遇到ip數(shù)據(jù)無(wú)法訪問(wèn)目標(biāo)、ip路由器無(wú)法按當(dāng)前的傳輸速率轉(zhuǎn)發(fā)數(shù)據(jù)包等情況時(shí),會(huì)自動(dòng)發(fā)送icmp消息。
icmp包有一個(gè)8字節(jié)長(zhǎng)的包頭,其中前4個(gè)字節(jié)是固定的格式,包含8位類型字段,8位代碼字段和16位的校驗(yàn)和;后4個(gè)字節(jié)根據(jù)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ù)包。但是icmp唯一的功能是報(bào)告問(wèn)題而不是糾正錯(cuò)誤,糾正錯(cuò)誤的任務(wù)由發(fā)送方完成。
我們?cè)诰W(wǎng)絡(luò)中經(jīng)常會(huì)使用到icmp協(xié)議,比如我們經(jīng)常使用的 用于檢查網(wǎng)絡(luò)通不通的ping命令,這個(gè)“ping”的過(guò)程實(shí)際上就是icmp協(xié)議工作的過(guò)程。還有其他的網(wǎng)絡(luò)命令如跟蹤路由的tracert命令也是基于icmp協(xié)議的。
從技術(shù)角度來(lái)說(shuō),icmp就是一個(gè)“錯(cuò)誤偵測(cè)與回報(bào)機(jī)制”,其目的就是讓我們能夠檢測(cè)網(wǎng)路的連線狀況﹐也能確保連線的準(zhǔn)確性﹐其功能主要有:
· 偵測(cè)遠(yuǎn)端主機(jī)是否存在。
· 建立及維護(hù)路由資料。
· 重導(dǎo)資料傳送路徑(icmp重定向)。
· 資料流量控制。icmp在溝通之中,主要是透過(guò)不同的類別(type)與代碼(code) 讓機(jī)器來(lái)識(shí)別不同的連線狀況。
icmp協(xié)議對(duì)于網(wǎng)絡(luò)安全具有極其重要的意義。icmp協(xié)議本身的特點(diǎn)決定了它非常容易被用于攻擊網(wǎng)絡(luò)上的路由器和主機(jī)。例如,可以利用操作系統(tǒng)規(guī)定的icmp數(shù)據(jù)包最大尺寸不超過(guò)64kb這一規(guī)定,向主機(jī)發(fā)起“死亡之ping”攻擊。攻擊的原理是:如果icmp數(shù)據(jù)包的尺寸超過(guò)64kb上限時(shí),主機(jī)就會(huì)出現(xiàn)內(nèi)存分配錯(cuò)誤,導(dǎo)致tcp/ip堆棧崩潰,致使主機(jī)死機(jī)。
此外,向目標(biāo)主機(jī)長(zhǎng)時(shí)間、連續(xù)、大量地發(fā)送icmp數(shù)據(jù)包,也會(huì)最終使系統(tǒng)癱瘓。大量的icmp數(shù)據(jù)包會(huì)形成“icmp風(fēng)暴”,使得目標(biāo)主機(jī)耗費(fèi)大量的cpu資源處理,耗費(fèi)系統(tǒng)資源 。
雖然icmp協(xié)議給黑客以可乘之機(jī),但是icmp攻擊也并非無(wú)藥可醫(yī)。只要在日常網(wǎng)絡(luò)管理中未雨綢繆,提前做好準(zhǔn)備,就可以有效地避免icmp攻擊造成的損失。
對(duì)于“ping ofdeath”攻擊,可以采取兩種方法進(jìn)行防范:第一種方法是在路由器上對(duì)icmp數(shù)據(jù)包進(jìn)行帶寬限制,將icmp占用的帶寬控制在一定的范圍內(nèi),這樣即使有icmp攻擊,它所占用的帶寬也是非常有限的,對(duì)整個(gè)網(wǎng)絡(luò)的影響非常少;第二種方法就是在主機(jī)上設(shè)置icmp數(shù)據(jù)包的處理規(guī)則,最好是設(shè)定拒絕所有的icmp數(shù)據(jù)包。
綜上, icmp協(xié)議,icmp消息雖然不傳輸用戶數(shù)據(jù),但是對(duì)于用戶數(shù)據(jù)的傳遞起著重要的作用,是tcp/ip協(xié)議族的一個(gè)子協(xié)議,用于在ip主機(jī)、路由器之間傳遞控制消息。