Author:Phoenix
Homepage:http://www.safechina.net
E-mail:Phoenix@safechina.net
Time:24/06/2002
ARP協(xié)議的概念和工作原理對(duì)學(xué)習(xí)網(wǎng)絡(luò)安全知識(shí)的初學(xué)者來說是首先遇到的幾個(gè)重要的知識(shí)點(diǎn)之一,其中ARP欺騙技術(shù)和及其對(duì)策更是學(xué)習(xí)網(wǎng)絡(luò)安全中的重點(diǎn)與難點(diǎn),往往難以一下子掌握這些抽象復(fù)雜的機(jī)理。因此很有必要用詳細(xì)介始一下網(wǎng)絡(luò)安全中的ARP協(xié)議和欺騙技術(shù)相應(yīng)的對(duì)策。
一,TCP/IP協(xié)議之ARP協(xié)議的定義
ARP協(xié)議即地址解析協(xié)議Address Resolution Protocol,ARP協(xié)議是將IP地址與網(wǎng)絡(luò)物理地址一一對(duì)應(yīng)的協(xié)議。負(fù)責(zé)IP地址和網(wǎng)卡實(shí)體地址(MAC)之間的轉(zhuǎn)換。也就是將網(wǎng)絡(luò)層(IP層,也就是相當(dāng)于ISO OSI 的第三層)地址解析為數(shù)據(jù)連接層(MAC層,也就是相當(dāng)于ISO OSI的第二層)的MAC地址。如果您對(duì)網(wǎng)路七層協(xié)定有比較清晰的理解的話應(yīng)該知道各個(gè)層級(jí)之間都使用其各自的協(xié)定。一張ARP的表,用來支持在MAC地址和IP地址之間的一一對(duì)應(yīng)關(guān)系。它提供兩者的相互轉(zhuǎn)換。
二,ARP協(xié)議的工作原理
在以太網(wǎng)(Ethernet)中,一個(gè)網(wǎng)絡(luò)設(shè)備要和另一個(gè)網(wǎng)絡(luò)設(shè)備進(jìn)行直接通信,除了知道目標(biāo)設(shè)備的網(wǎng)絡(luò)層邏輯地址(如IP地址)外,還要知道目標(biāo)設(shè)備的第二層物理地址(MAC地址)。ARP協(xié)議的基本功能就是通過目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證通信的順利進(jìn)行。
當(dāng)一個(gè)網(wǎng)絡(luò)設(shè)備需要和另一個(gè)網(wǎng)絡(luò)設(shè)備通信時(shí),它首先把目標(biāo)設(shè)備的IP地址與自己的子網(wǎng)掩碼進(jìn)行"與"操作,以判斷目標(biāo)設(shè)備與自己是否位于同一網(wǎng)段內(nèi)。如果目標(biāo)設(shè)備在同一網(wǎng)段內(nèi),并且源設(shè)備沒有獲得與目標(biāo)IP地址相對(duì)應(yīng)的MAC地址信息,則源設(shè)備以第二層廣播的形式(目標(biāo)MAC地址為全1)發(fā)送ARP請求報(bào)文,在ARP請求報(bào)文中包含了源設(shè)備與目標(biāo)設(shè)備的IP地址。同一網(wǎng)段中的所有其他設(shè)備都可以收到并分析這個(gè)ARP請求報(bào)文,如果某設(shè)備發(fā)現(xiàn)報(bào)文中的目標(biāo)IP地址與自己的IP地址相同,則它向源設(shè)備發(fā)回ARP響應(yīng)報(bào)文,通過該報(bào)文使源設(shè)備獲得目標(biāo)設(shè)備的MAC地址信息。
如果目標(biāo)設(shè)備與源設(shè)備不在同一網(wǎng)段,則源設(shè)備首先把IP分組發(fā)向自己的缺省網(wǎng)關(guān)(Default Gateway),由缺省網(wǎng)關(guān)對(duì)該分組進(jìn)行轉(zhuǎn)發(fā)。如果源設(shè)備沒有關(guān)于缺省網(wǎng)關(guān)的MAC信息,則它同樣通過ARP協(xié)議獲取缺省網(wǎng)關(guān)的MAC地址信息。為了減少廣播量,網(wǎng)絡(luò)設(shè)備通過ARP表在緩存中保存IP與MAC地址的映射信息。在一次ARP的請求與響應(yīng)過程中,通信雙方都把對(duì)方的MAC地址與IP地址的對(duì)應(yīng)關(guān)系保存在各自的ARP表中,以在后續(xù)的通信中使用。ARP表使用老化機(jī)制,刪除在一段時(shí)間內(nèi)沒有使用過的IP與MAC地址的映射關(guān)系。
還有當(dāng)傳送過來的包要傳向一個(gè)LAN的主機(jī)時(shí),當(dāng)它到達(dá)網(wǎng)關(guān)時(shí),網(wǎng)關(guān)要求ARP程序找到物理主機(jī)或與IP地址相對(duì)應(yīng)的MAC地址。ARP程序在緩存中尋找,如果找到地址,就提供此地址,以便讓此包轉(zhuǎn)換成相應(yīng)的長度和格式,以傳送到此主機(jī)。如果未找到,ARP程序就在網(wǎng)上廣播一個(gè)特殊格式的消息,看哪個(gè)機(jī)器知道與這個(gè)IP地址相關(guān)的MAC地址。如果一臺(tái)機(jī)器發(fā)現(xiàn)那是自己的IP地址,它就發(fā)送回應(yīng),這樣就指出了相應(yīng)的地址。ARP程序就更新自己的緩存然后發(fā)送此包到回應(yīng)的MAC地址。因?yàn)椴煌瑓f(xié)議的相應(yīng)處理方法不同,所以有不同網(wǎng)絡(luò)的地址解析請求。也有反向地址解析協(xié)議(RARP)供不知道IP地址的主機(jī)從ARP緩存中獲得IP地址。
我們還是來通過實(shí)驗(yàn)更加深入直觀地了解ARP協(xié)議的工作原理吧。我們假設(shè)有兩臺(tái)主機(jī):A機(jī)的IP地址是192.168.0.1,MAC地址是52-54-ab-27-82-83 。
B機(jī)的IP地址是192.168.0.2,MAC地址是52-54-ab-27-82-84 ?! ‘?dāng)主機(jī)A想與主機(jī)B進(jìn)行通訊時(shí),A機(jī)只知道B機(jī)的IP地址是192.168.0.2,當(dāng)數(shù)據(jù)包封裝到MAC層時(shí)他如何知道B的MAC地址呢,一般的OS中是這樣做的,在OS的內(nèi)核中保存一分MAC地址表,就是我們一中介始到的。用arp -a就可以看見這個(gè)表的內(nèi)容了,例如:
C:/>arp -a
Interface: 192.168.0.X on Interface 0x1000002
Internet Address Physical Address Type
192.168.0.1 52-54-ab-27-82-83 dynamic
其中表內(nèi)有IP和MAC地址的對(duì)應(yīng)關(guān)系,當(dāng)要過進(jìn)行通訊時(shí),系統(tǒng)先查看這個(gè)表中是否有相關(guān)的表項(xiàng),如果有就直接使用,如果沒有系統(tǒng)就會(huì)發(fā)出一個(gè)ARP請求包,這個(gè)包的目的地址為ffffffffffff的廣播地址,他的作用就是詢問局域網(wǎng)內(nèi)IP地址為192.168.0.2的主機(jī)的MAC地址,就像是A在局域網(wǎng)中發(fā)信息找一個(gè)IP地址為192.168 .0.2的主機(jī)MAC地址,同樣A機(jī)把自已的MAC地址告訴出去是52-54-ab-27-82-83 ,隨后所有主機(jī)都會(huì)接收到這個(gè)包,但只有IP為192.168.0.2的B才會(huì)響應(yīng)一個(gè)ARP應(yīng)答包給主機(jī)A,B機(jī)會(huì)回信息給A機(jī)說他的MAC地址是52-54-ab-27-82-84 ,好這下主機(jī)A就知道B的MAC地址了,于時(shí)他就可以封包發(fā)送了,同時(shí)主機(jī)A將B的MAC地址放入ARP緩沖中,隔一定時(shí)間就將其刪除,確保不斷更新。
注意,在這個(gè)過程中,如果主機(jī)A在發(fā)送ARP請求時(shí),假如該局域網(wǎng)內(nèi)有一臺(tái)主機(jī)C的IP和A相同,C就會(huì)得知有一臺(tái)主機(jī)的IP地址同自已的IP地址相同,于時(shí)就蹦出一個(gè)IP沖突的對(duì)話筐。與ARP相對(duì)應(yīng)的還有一個(gè)協(xié)議RARP:Reverse
Address Resolution Protocol,
反向地址解析協(xié)議,該協(xié)議主要用于工作站模型動(dòng)態(tài)獲取IP的過程中,作用是由MAC地址向服務(wù)器取回IP地址。
Homepage:http://www.safechina.net
E-mail:Phoenix@safechina.net
Time:24/06/2002
ARP協(xié)議的概念和工作原理對(duì)學(xué)習(xí)網(wǎng)絡(luò)安全知識(shí)的初學(xué)者來說是首先遇到的幾個(gè)重要的知識(shí)點(diǎn)之一,其中ARP欺騙技術(shù)和及其對(duì)策更是學(xué)習(xí)網(wǎng)絡(luò)安全中的重點(diǎn)與難點(diǎn),往往難以一下子掌握這些抽象復(fù)雜的機(jī)理。因此很有必要用詳細(xì)介始一下網(wǎng)絡(luò)安全中的ARP協(xié)議和欺騙技術(shù)相應(yīng)的對(duì)策。
一,TCP/IP協(xié)議之ARP協(xié)議的定義
ARP協(xié)議即地址解析協(xié)議Address Resolution Protocol,ARP協(xié)議是將IP地址與網(wǎng)絡(luò)物理地址一一對(duì)應(yīng)的協(xié)議。負(fù)責(zé)IP地址和網(wǎng)卡實(shí)體地址(MAC)之間的轉(zhuǎn)換。也就是將網(wǎng)絡(luò)層(IP層,也就是相當(dāng)于ISO OSI 的第三層)地址解析為數(shù)據(jù)連接層(MAC層,也就是相當(dāng)于ISO OSI的第二層)的MAC地址。如果您對(duì)網(wǎng)路七層協(xié)定有比較清晰的理解的話應(yīng)該知道各個(gè)層級(jí)之間都使用其各自的協(xié)定。一張ARP的表,用來支持在MAC地址和IP地址之間的一一對(duì)應(yīng)關(guān)系。它提供兩者的相互轉(zhuǎn)換。
二,ARP協(xié)議的工作原理
在以太網(wǎng)(Ethernet)中,一個(gè)網(wǎng)絡(luò)設(shè)備要和另一個(gè)網(wǎng)絡(luò)設(shè)備進(jìn)行直接通信,除了知道目標(biāo)設(shè)備的網(wǎng)絡(luò)層邏輯地址(如IP地址)外,還要知道目標(biāo)設(shè)備的第二層物理地址(MAC地址)。ARP協(xié)議的基本功能就是通過目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證通信的順利進(jìn)行。
當(dāng)一個(gè)網(wǎng)絡(luò)設(shè)備需要和另一個(gè)網(wǎng)絡(luò)設(shè)備通信時(shí),它首先把目標(biāo)設(shè)備的IP地址與自己的子網(wǎng)掩碼進(jìn)行"與"操作,以判斷目標(biāo)設(shè)備與自己是否位于同一網(wǎng)段內(nèi)。如果目標(biāo)設(shè)備在同一網(wǎng)段內(nèi),并且源設(shè)備沒有獲得與目標(biāo)IP地址相對(duì)應(yīng)的MAC地址信息,則源設(shè)備以第二層廣播的形式(目標(biāo)MAC地址為全1)發(fā)送ARP請求報(bào)文,在ARP請求報(bào)文中包含了源設(shè)備與目標(biāo)設(shè)備的IP地址。同一網(wǎng)段中的所有其他設(shè)備都可以收到并分析這個(gè)ARP請求報(bào)文,如果某設(shè)備發(fā)現(xiàn)報(bào)文中的目標(biāo)IP地址與自己的IP地址相同,則它向源設(shè)備發(fā)回ARP響應(yīng)報(bào)文,通過該報(bào)文使源設(shè)備獲得目標(biāo)設(shè)備的MAC地址信息。
如果目標(biāo)設(shè)備與源設(shè)備不在同一網(wǎng)段,則源設(shè)備首先把IP分組發(fā)向自己的缺省網(wǎng)關(guān)(Default Gateway),由缺省網(wǎng)關(guān)對(duì)該分組進(jìn)行轉(zhuǎn)發(fā)。如果源設(shè)備沒有關(guān)于缺省網(wǎng)關(guān)的MAC信息,則它同樣通過ARP協(xié)議獲取缺省網(wǎng)關(guān)的MAC地址信息。為了減少廣播量,網(wǎng)絡(luò)設(shè)備通過ARP表在緩存中保存IP與MAC地址的映射信息。在一次ARP的請求與響應(yīng)過程中,通信雙方都把對(duì)方的MAC地址與IP地址的對(duì)應(yīng)關(guān)系保存在各自的ARP表中,以在后續(xù)的通信中使用。ARP表使用老化機(jī)制,刪除在一段時(shí)間內(nèi)沒有使用過的IP與MAC地址的映射關(guān)系。
還有當(dāng)傳送過來的包要傳向一個(gè)LAN的主機(jī)時(shí),當(dāng)它到達(dá)網(wǎng)關(guān)時(shí),網(wǎng)關(guān)要求ARP程序找到物理主機(jī)或與IP地址相對(duì)應(yīng)的MAC地址。ARP程序在緩存中尋找,如果找到地址,就提供此地址,以便讓此包轉(zhuǎn)換成相應(yīng)的長度和格式,以傳送到此主機(jī)。如果未找到,ARP程序就在網(wǎng)上廣播一個(gè)特殊格式的消息,看哪個(gè)機(jī)器知道與這個(gè)IP地址相關(guān)的MAC地址。如果一臺(tái)機(jī)器發(fā)現(xiàn)那是自己的IP地址,它就發(fā)送回應(yīng),這樣就指出了相應(yīng)的地址。ARP程序就更新自己的緩存然后發(fā)送此包到回應(yīng)的MAC地址。因?yàn)椴煌瑓f(xié)議的相應(yīng)處理方法不同,所以有不同網(wǎng)絡(luò)的地址解析請求。也有反向地址解析協(xié)議(RARP)供不知道IP地址的主機(jī)從ARP緩存中獲得IP地址。
我們還是來通過實(shí)驗(yàn)更加深入直觀地了解ARP協(xié)議的工作原理吧。我們假設(shè)有兩臺(tái)主機(jī):A機(jī)的IP地址是192.168.0.1,MAC地址是52-54-ab-27-82-83 。
B機(jī)的IP地址是192.168.0.2,MAC地址是52-54-ab-27-82-84 ?! ‘?dāng)主機(jī)A想與主機(jī)B進(jìn)行通訊時(shí),A機(jī)只知道B機(jī)的IP地址是192.168.0.2,當(dāng)數(shù)據(jù)包封裝到MAC層時(shí)他如何知道B的MAC地址呢,一般的OS中是這樣做的,在OS的內(nèi)核中保存一分MAC地址表,就是我們一中介始到的。用arp -a就可以看見這個(gè)表的內(nèi)容了,例如:
C:/>arp -a
Interface: 192.168.0.X on Interface 0x1000002
Internet Address Physical Address Type
192.168.0.1 52-54-ab-27-82-83 dynamic
其中表內(nèi)有IP和MAC地址的對(duì)應(yīng)關(guān)系,當(dāng)要過進(jìn)行通訊時(shí),系統(tǒng)先查看這個(gè)表中是否有相關(guān)的表項(xiàng),如果有就直接使用,如果沒有系統(tǒng)就會(huì)發(fā)出一個(gè)ARP請求包,這個(gè)包的目的地址為ffffffffffff的廣播地址,他的作用就是詢問局域網(wǎng)內(nèi)IP地址為192.168.0.2的主機(jī)的MAC地址,就像是A在局域網(wǎng)中發(fā)信息找一個(gè)IP地址為192.168 .0.2的主機(jī)MAC地址,同樣A機(jī)把自已的MAC地址告訴出去是52-54-ab-27-82-83 ,隨后所有主機(jī)都會(huì)接收到這個(gè)包,但只有IP為192.168.0.2的B才會(huì)響應(yīng)一個(gè)ARP應(yīng)答包給主機(jī)A,B機(jī)會(huì)回信息給A機(jī)說他的MAC地址是52-54-ab-27-82-84 ,好這下主機(jī)A就知道B的MAC地址了,于時(shí)他就可以封包發(fā)送了,同時(shí)主機(jī)A將B的MAC地址放入ARP緩沖中,隔一定時(shí)間就將其刪除,確保不斷更新。
注意,在這個(gè)過程中,如果主機(jī)A在發(fā)送ARP請求時(shí),假如該局域網(wǎng)內(nèi)有一臺(tái)主機(jī)C的IP和A相同,C就會(huì)得知有一臺(tái)主機(jī)的IP地址同自已的IP地址相同,于時(shí)就蹦出一個(gè)IP沖突的對(duì)話筐。與ARP相對(duì)應(yīng)的還有一個(gè)協(xié)議RARP:Reverse
Address Resolution Protocol,
反向地址解析協(xié)議,該協(xié)議主要用于工作站模型動(dòng)態(tài)獲取IP的過程中,作用是由MAC地址向服務(wù)器取回IP地址。