登錄

地址解析協(xié)議

百科 > 計(jì)算機(jī) > 地址解析協(xié)議

1.什么是地址解析協(xié)議

  地址解析協(xié)議(ARP)為IP地址到對(duì)應(yīng)的硬件地址之間提供動(dòng)態(tài)映射。ARP用于將計(jì)算機(jī)的網(wǎng)絡(luò)地址(IP地址32位)轉(zhuǎn)化為物理地址(MAC地址48位)[RFC826].ARP協(xié)議是屬于鏈路層的協(xié)議,在以太網(wǎng)中的數(shù)據(jù)幀從一個(gè)主機(jī)到達(dá)網(wǎng)內(nèi)的另一臺(tái)主機(jī)是根據(jù)48位的以太網(wǎng)地址(硬件地址)來(lái)確定接口的,而不是根據(jù)32位的IP地址。內(nèi)核(如驅(qū)動(dòng))必須知道目的端的硬件地址才能發(fā)送數(shù)據(jù)。當(dāng)然,點(diǎn)對(duì)點(diǎn)的連接是不需要ARP協(xié)議的。

2.ARP的原理[1]

  1.ARP的高速緩存技術(shù)

  ARP高效運(yùn)行的關(guān)鍵是每臺(tái)使用ARP的主機(jī)中都有一個(gè)ARP高速緩存。ARP在緩存中存放了最近被解釋的IP地址到MAC地址之間的映射記錄,以減少?gòu)V播量。由于多數(shù)網(wǎng)絡(luò)通信都要連續(xù)發(fā)送多個(gè)報(bào)文,所以高速緩存大大提高了ARP的效率。ARP緩存總是為本地子網(wǎng)保留硬件廣播地址(0xffffffffffffh)作為一個(gè)永久項(xiàng)。此項(xiàng)使主機(jī)能夠接受ARP廣播,當(dāng)查看緩存時(shí),該項(xiàng)不會(huì)顯示。另外,在ARP請(qǐng)求報(bào)文中還放人信源機(jī)的IP地址和MAC地址的映射,以防止信宿機(jī)接著為信源機(jī)的MAC地址再來(lái)一次ARP請(qǐng)求,形成死鎖。信源機(jī)在廣播自己的地址映射時(shí),網(wǎng)絡(luò)上所有主機(jī)都可以將它存人自己的緩存。在新機(jī)入網(wǎng)時(shí),主動(dòng)廣播自己的地址映射,以減少其他主機(jī)對(duì)該新主機(jī)的ARP請(qǐng)求廣播。ARP協(xié)議使用一個(gè)數(shù)據(jù)結(jié)構(gòu)atp—table的表。表中每個(gè)條目描述一個(gè)IP和物理地址的對(duì)應(yīng)。這些條目在IP地址需要轉(zhuǎn)換的時(shí)候創(chuàng)建,隨著時(shí)間推移變得陳舊的時(shí)候被刪除。

  ARP表包含一個(gè)指針(arp—tables向量表)的表,把a(bǔ)rp—table的條目鏈接在一起。這些條目被緩存,以加速對(duì)它們的訪問(wèn)。每一個(gè)條目用它的IP地址的最后兩個(gè)字節(jié)做表的索引進(jìn)行查找,然后跟蹤這個(gè)條目鏈,直到找到正確的條目。Linux也緩存從atp—table條目預(yù)先建立的硬件頭,用hhcache數(shù)據(jù)結(jié)構(gòu)的形式進(jìn)行緩存。網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)不斷變化,IP地址可能被重新分配到不同的硬件地址。例如,一些撥號(hào)服務(wù)為它建立的每一個(gè)連接分配一個(gè)IP地址。為了讓ARP表中包括最新的條目,每當(dāng)需要分配一個(gè)新的條目而ARP表到達(dá)了它的最大尺寸的時(shí)候,就查找最舊的條目并刪除它們,從而更新緩存表。每個(gè)動(dòng)態(tài)ARP高速緩存項(xiàng)的生存時(shí)間從被創(chuàng)建時(shí)開(kāi)始算起為10min。2min內(nèi)未用則刪除。緩存容量滿(mǎn)時(shí),刪除最老的記錄。

  ARP高速緩存保存有動(dòng)態(tài)項(xiàng)和靜態(tài)項(xiàng)。動(dòng)態(tài)項(xiàng)是自動(dòng)添加和刪除的,而靜態(tài)ARP項(xiàng)是永久的,可用TCP/IP工具ARP手工加載。靜態(tài)ARP高速緩存項(xiàng)用于防止向路由器和服務(wù)器IP地址發(fā)出ARP請(qǐng)求。通過(guò)添加靜態(tài)ARP項(xiàng)可減少ARP請(qǐng)求訪問(wèn)主機(jī)的次數(shù)。當(dāng)網(wǎng)絡(luò)接口配置改變時(shí),應(yīng)手工更新靜態(tài)ARP項(xiàng)。對(duì)于一個(gè)ARP請(qǐng)求來(lái)說(shuō),除目的端硬件地址外的所有其他的字段都有填充值。當(dāng)系統(tǒng)收到一份目的端為本機(jī)的ARP請(qǐng)求報(bào)文后,它就把硬件地址填進(jìn)去,然后用兩個(gè)目的端地址分別替換兩個(gè)發(fā)送端地址,并把操作字段置為2,最后把它發(fā)送回去。在ARP背后有一個(gè)基本概念,那就是網(wǎng)絡(luò)接口有一個(gè)硬件地址(一個(gè)48bir的值,以標(biāo)識(shí)不同的以太網(wǎng)或令牌環(huán)網(wǎng)絡(luò)接口),在硬件層次上進(jìn)行的數(shù)據(jù)幀交換必須使用正確的硬件地址。因此,僅僅知道主機(jī)的IP地址并不能讓內(nèi)核發(fā)送一幀數(shù)據(jù)給主機(jī)。內(nèi)核(如以太網(wǎng)驅(qū)動(dòng)程序)必須知道目的端的硬件地址才能發(fā)送數(shù)據(jù)。

  ARP的功能是在32bitlP地址和采用不同網(wǎng)絡(luò)技術(shù)的硬件地址之間提供動(dòng)態(tài)映射。點(diǎn)對(duì)點(diǎn)鏈路不使用ARP。當(dāng)設(shè)置這些鏈路時(shí)(一般在引導(dǎo)過(guò)程進(jìn)行),必須告知內(nèi)核鏈路每一端的IP地址,并不涉及像以太網(wǎng)地址這樣的硬件地址。

  2.ARP高速緩存超時(shí)設(shè)置

  在ARP高速緩存中的表項(xiàng)一般都要設(shè)置超時(shí)值。從伯克利系統(tǒng)演變而來(lái)的系統(tǒng)一般對(duì)完整的表項(xiàng)設(shè)置超時(shí)值為20min,而對(duì)不完整的表項(xiàng)(例如在以太網(wǎng)上對(duì)一個(gè)不存在的主機(jī)發(fā)出ARP請(qǐng)求)設(shè)置超時(shí)值為3min。當(dāng)這些表項(xiàng)再次使用時(shí),這些實(shí)現(xiàn)一般都把超時(shí)值重新設(shè)為20min.

  3.ARP命令

  ARP高速緩存在ARP的運(yùn)行過(guò)程中非常關(guān)鍵。高速緩存中的每一項(xiàng)內(nèi)容都有一個(gè)定時(shí)器,根據(jù)它來(lái)刪除不完整和過(guò)時(shí)的表項(xiàng)。ARP命令加上參數(shù)—a可顯示ARP高速緩存中的所有內(nèi)容。超級(jí)用戶(hù)可以用參數(shù)-d來(lái)刪除ARP高速緩存中的某一項(xiàng)內(nèi)容(可以在運(yùn)行一些例子之前使用該命令格式,以看清楚ARP的交換過(guò)程)。另外,可以通過(guò)參數(shù)—s來(lái)增加高速緩存中的內(nèi)容。這個(gè)參數(shù)需要主機(jī)名和以太網(wǎng)地址:對(duì)應(yīng)于主機(jī)名的IP地址和以太網(wǎng)地址被增加到高速緩存中。新增加的內(nèi)容是永久性的(比如,它沒(méi)有超時(shí)值),除非在命令行的末尾附上關(guān)鍵字temp。位于命令行末尾的關(guān)鍵字pub和,s參數(shù)一起,可以使系統(tǒng)起著主機(jī)ARP代理的作用。系統(tǒng)將回答與主機(jī)名對(duì)應(yīng)的IP地址的ARP請(qǐng)求,并以指定的以太網(wǎng)地址作為回答。如果廣播的地址是系統(tǒng)本身,那么系統(tǒng)就為指定的主機(jī)名起著委托ARP代理的作用。

3.ARP的使用[2]

  為了查看受害機(jī)器的ARP表,我們所使用的命令非常類(lèi)似于在Windows實(shí)時(shí)響應(yīng)中所使用的命令:

  victim#./arp—an

  從受害系統(tǒng)上返回的ARP表如下:

  ?(192.168.1.1,at00:BD:81:43:07:03[ether]on ethO

  結(jié)果顯示了IP地址為192.168.1.1的網(wǎng)絡(luò)接口具有MAC地址00:BD:81:43:07:03。其他信息將有助于在不能控制IP地址時(shí),在網(wǎng)絡(luò)上追蹤IP地址為192.168.1.1的機(jī)器??梢詸z查每一臺(tái)機(jī)器,直至發(fā)現(xiàn)MAC地址為06:BD:8l:43:07:03的機(jī)器。

  警告:在許多操作系統(tǒng)中,具有足夠特權(quán)的用戶(hù)可以修改他自己的MAC地址(和IP地址)。在Windows或Unix機(jī)器中,這一行為是可能的。

4.ARP的功能

  從邏輯Internet地址到對(duì)應(yīng)的物理硬件地址需要進(jìn)行翻譯。

5.查看ARP緩存表的方法

  ARP 緩存表是可以查看的,也可以添加和修改。在命令提示符下,輸入“arp -a”就可以查看ARP 緩存表中的內(nèi)容了。用“arp -d”命令可以刪除ARP 表中某一行的內(nèi)容;用“arp -s”可以手動(dòng)在ARP 表中指定IP 地址與MAC 地址的對(duì)應(yīng)。

評(píng)論  |   0條評(píng)論