顧成武 陳中舉 孟祥國 劉恒
摘要:ICMP協(xié)議是一種面向無連接的網(wǎng)絡(luò)層協(xié)議。該文通過對ICMP協(xié)議的基本概念、主要功能和數(shù)據(jù)包結(jié)構(gòu)的分析,用ICMP來實現(xiàn)對網(wǎng)絡(luò)設(shè)備在線狀態(tài)的感知,實現(xiàn)對空閑IP地址提前回收技術(shù)的研究。
關(guān)鍵詞:ICMP;IP;地址復(fù)用
中圖分類號:TP393 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)29-0054-02
1 引言
DHCP(Dynamic Host Configuration Protocol)攻擊是一種通過不斷偽造MAC地址來耗盡正常的DHCP服務(wù)器的IP地址池,然后攻擊者通過架設(shè)一個對應(yīng)的DHCP服務(wù)器,來替代正常的DHCP服務(wù)器提供IP地址分配功能,從而偽裝成內(nèi)網(wǎng)的網(wǎng)關(guān),借此來控制內(nèi)網(wǎng)中的主機網(wǎng)絡(luò)流量的攻擊方法。
在現(xiàn)有的IP地址動態(tài)分配算法中,往往服務(wù)器只會通過設(shè)定一個租約時間,在租約時間到達一半時,客戶端會向服務(wù)器發(fā)出續(xù)約請求;在租約時間結(jié)束時,如果客戶端沒有響應(yīng)請求,服務(wù)器才會回收對應(yīng)的IP地址。這種分配算法存在一定的局限性,服務(wù)器在整個服務(wù)過程中,都處于被動的響應(yīng)狀態(tài),不能判斷當(dāng)前的客戶端的在線狀態(tài)。故而,IP地址在整個租約時間結(jié)束前,都會與其被分配給的客戶端所綁定,不會再分配給其他客戶端所使用。
由于DHCP分配算法的局限性,并沒有身份驗證機制,也沒有客戶端狀態(tài)判定機制。攻擊者可以通過批量的偽造MAC地址去請求IP地址,即可輕而易舉地耗盡IP地址池資源。
ICMP(Internet Control Message Protocol)全稱為因特網(wǎng)控制報文協(xié)議,它是IPv4協(xié)議簇中的一個用于路由器和IP主機之間傳遞控制信息的網(wǎng)絡(luò)協(xié)議。可以通過ICMP來實現(xiàn)類心跳包機制,判斷當(dāng)前客戶端的狀態(tài),及時回收空閑的IP地址,避免IP地址池耗盡,防護DHCP攻擊[4]。
2 ICMP協(xié)議的基本概念
ICMP協(xié)議本身是一個被設(shè)計用于差錯傳輸?shù)膮f(xié)議,用于向數(shù)據(jù)通訊中的源主機報告錯誤。ICMP是TCP/IP協(xié)議簇中用于主機與路由之間傳遞控制信息的一個子協(xié)議,可以用于報告錯誤、交換受限控制和控制信息等。一個ICMP報文包括IP報頭、ICMP報頭和ICMP報文信息。當(dāng)IP報頭中的協(xié)議字段標(biāo)識為1時,就代表該報文為ICMP報文[3]。ICMP報頭數(shù)據(jù)結(jié)構(gòu)如下圖示。
ICMP協(xié)議主要用于確保TCP/IP協(xié)議的可靠運行,只能檢查IP傳輸中的差錯,而不能糾錯。ICMP依賴于IP協(xié)議,屬于網(wǎng)絡(luò)層的協(xié)議,并不需要指定端口號。ICMP的功能可以分為兩種:ICMP差錯報告與ICMP查詢。ICMP的差錯報告可以分為:目的站不可達、源站抑制、超時、參數(shù)出錯、路由重定向五種。ICMP的查詢可以分為:回送請求、時間戳請求、地址掩碼請求、路由器查詢四種[1]。
3 ICMP數(shù)據(jù)包的結(jié)構(gòu)
ICMP數(shù)據(jù)包結(jié)構(gòu)包括ICMP頭部和數(shù)據(jù)兩部分。其中,ICMP頭部長度為4個字節(jié),數(shù)據(jù)部分的長度可變,其內(nèi)容由ICMP包的類型來決定[2]。ICMP的數(shù)據(jù)包頭部包括下面幾種信息:
(1)類型:表示ICMP包的基本類型,其長度為8位。采用不同的數(shù)值代表相應(yīng)的類型,如:3代表目的站不可達,4代表源站抑制,11代表超時等,都是ICMP差錯報告數(shù)據(jù)包;0和8代表發(fā)送請求與響應(yīng),9和10代表路由器查詢與通告等,都是ICMP的查詢數(shù)據(jù)包。
(2)代碼:表示ICMP包的子類型,字段長度為8位。采用不同值表示相應(yīng)的目的不可達類型,如:0代表網(wǎng)絡(luò)不可達,1代表主機不可達,2代表協(xié)議不可達等。
(3)頭部校驗和:可以用于校驗ICMP報頭在傳輸過程中是否出錯。
4 網(wǎng)絡(luò)設(shè)備在線狀態(tài)的判定
4.1 類心跳包機制
心跳包是一種在客戶端和服務(wù)器之間定時通知對方自己當(dāng)前在線狀態(tài)的一個自定義的命令字,按照一定的間隔發(fā)送,類似于動物的心跳。主要用于長時間的?;钆c斷線處理。
但是由于心跳包整個過程的實現(xiàn)需要雙方都使用對應(yīng)的命令字,不適用于在整個DHCP過程中的設(shè)備狀態(tài)的判定,故而引入一個類心跳包機制:由服務(wù)器按照一定的頻率,單方面的發(fā)出ICMP探測報文,當(dāng)服務(wù)器無法收到相對應(yīng)的設(shè)備的ICMP回應(yīng)請求時,回收對應(yīng)的IP地址[5]。
4.2 設(shè)備在線時的ICMP探測結(jié)果
4.3判定機制的優(yōu)化
結(jié)合ICMP數(shù)據(jù)包對整個網(wǎng)絡(luò)性能的影響,可以設(shè)定一個峰值x,當(dāng)整個IP地址的使用數(shù)量為x時,才會使用ICMP報文去判定當(dāng)前設(shè)備的在線狀態(tài),避免整個IP地址回收機制對網(wǎng)絡(luò)資源的過度消耗。
按照網(wǎng)絡(luò)利用率一般控制為50%計算,設(shè)x為整個DHCP地址池的一半,得出優(yōu)化之后的判定機制流程圖。
5 結(jié)束語
本文從ICMP協(xié)議的基本概念、主要功能和協(xié)議的原理出發(fā),根據(jù)實際的實驗結(jié)果對利用ICMP對空閑的IP地址進行了研究。對于實現(xiàn)網(wǎng)絡(luò)資源的優(yōu)化利用,應(yīng)對DHCP協(xié)議攻擊和加強網(wǎng)絡(luò)安全有著良好的促進作用以及較好的應(yīng)用價值。
參考文獻:
[1] 謝希仁. 計算機網(wǎng)絡(luò)[M].7版. 北京:電子工業(yè)出版社,2017.
[2] Stevens W R. TCP/IP Illustrated Volume 1: The Protocols[M]. 范建華,譯. 北京:機械工業(yè)出版社,2000.
[3] Douglas E Comer. Computer Networks and Internets[M].5th ed.Prentice Hall,2009.
[4] 杜樹杰. 基于ICMP協(xié)議的Ping主機探測 [J]. 計算機系統(tǒng)應(yīng)用. 2009(12)
[5] 黃勤. 基于ICMP的網(wǎng)絡(luò)主機狀態(tài)判斷研究[J]. 科技廣場.2012(08)
【通聯(lián)編輯:代影】