溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ARP協(xié)議

發(fā)布時間:2020-07-14 16:44:27 來源:網(wǎng)絡(luò) 閱讀:1961 作者:kaikaiwang 欄目:網(wǎng)絡(luò)安全

一:引入

當(dāng)網(wǎng)絡(luò)設(shè)備要發(fā)送數(shù)據(jù)給另一臺設(shè)備時,必須要知道對方的網(wǎng)絡(luò)層地址(即IP地址)。IP地址由網(wǎng)絡(luò)層來提供,但是僅有IP地址是不夠的,IP數(shù)據(jù)報文必須封裝成幀才能通過數(shù)據(jù)鏈路進(jìn)行發(fā)送。數(shù)據(jù)幀必須包含目的MAC地址,因此發(fā)送端還必須獲取到目的MAC地址。通過目的IP地址而獲取目的MAC地址的過程是由ARP協(xié)議來實現(xiàn)的。
ARP協(xié)議是TCP/IP協(xié)議簇中的重要組成部分,ARP能夠通過目的IP地址發(fā)現(xiàn)目標(biāo)設(shè)備的MAC地址,從而實現(xiàn)數(shù)據(jù)鏈路層的可達(dá)性。

二:ARP數(shù)據(jù)包的格式

ARP協(xié)議
注意:ARP報文不能穿越路由器,不能被轉(zhuǎn)發(fā)到其他廣播域。
各字段的含義:
Hardware Type表示硬件地址類型,一般為以太網(wǎng)
Protocol Type表示三層協(xié)議地址類型,一般為IP
Hardware Length和Protocol Length為MAC地址和IP地址的長度,單位是字節(jié)
OPeration Code制定了ARP報文的類型,包括ARP request 和ARP reply
Source Hardware Address 指的是發(fā)送ARP報文的設(shè)備MAC地址
Source Protocol Address 指的是發(fā)送ARP報文的設(shè)備IP地址
Destination Hardware Address指的是接收者M(jìn)AC地址,在ARPrequest報文中,該字段值為0
Destination Protocol Address指的是接受者的IP地址

三:ARP的工作過程

ARP之簡單請求應(yīng)答
當(dāng)兩臺計算機(jī)在同一個局域網(wǎng)通信,我們以ping命令為例,該命令使用的ICMP協(xié)議

ARP協(xié)議
PC1依據(jù)OSI模型①依次從上至下對數(shù)據(jù)進(jìn)行封裝,包括對ICMP Date加IP包頭的封裝,但是到了封裝MAC地址的時候,②PC1首先查詢自己的ARP緩存表,發(fā)現(xiàn)沒有IP2和他的MAC地址的映射,這個時候MAC數(shù)據(jù)幀封裝失敗。我們使用ping命令的時候,是指定PC2的IP2的,計算機(jī)是知道目的主機(jī)的IP地址,能夠完成網(wǎng)絡(luò)層的數(shù)據(jù)封裝,因為設(shè)備通信還需要對方的MAC地址,但是PC1的緩存表里沒有,所以在MAC封裝的時候填入不了目的MAC地址。

那么PC1為了獲取PC2的MAC地址,③PC1要發(fā)送詢問信息,詢問PC2的MAC地址,詢問信息包括PC1的IP和MAC地址、PC2的IP地址,這里我們想到一個問題,即使是詢問信息,也是需要進(jìn)行MAC數(shù)據(jù)幀的封裝,那這個詢問信息的目的MAC地址填什么呢,規(guī)定當(dāng)目的MAC地址為ff-ff-ff-ff-ff-ff時,就代表這是一個詢問信息,也即使后面我要說的廣播。

PC2收到這個詢問信息后,將這里面的IP1和MAC1(PC1的IP和MAC)添加到本地的ARP緩存表中,然后④PC2發(fā)送應(yīng)答信息,對數(shù)據(jù)進(jìn)行IP和MAC的封裝,發(fā)送給PC2,因為緩存表里已經(jīng)有PC1的IP和MAC的映射了呢。這個應(yīng)答信息包含PC2的IP2和MAC2。PC1收到這個應(yīng)答信息,理所應(yīng)當(dāng)?shù)木瞳@取了PC2的MAC地址,并添加到自己的緩存表中。

經(jīng)過這樣交互式的一問一答,PC1和PC2都獲得了對方的MAC地址,值得注意的是,目的主機(jī)先完成ARP緩存,然后才是源主機(jī)完成ARP緩存。之后PC1和PC2就可以真正交流了。

ARP之廣播請求單播回應(yīng)

上圖面的圖解是不完全的ARP協(xié)議,因為在局域網(wǎng)里邊不會只有兩臺主機(jī),這里就要考慮如何在局域網(wǎng)眾多主機(jī)里獲得目的主機(jī)的MAC。

ARP協(xié)議

和上面的一樣,剛開始PC1并不知道PC2的MAC地址,同樣需要發(fā)送ARP請求,但是這個局域網(wǎng)里主機(jī)很多,怎么唯獨獲取PC2的MAC呢,①我們想到和一群陌生人交流一樣,可以挨著詢問一遍,這就是我們要說的廣播,首先PC1廣播發(fā)送詢問信息(信息和上一張圖介紹的一樣),在這個普通交換機(jī)上連接的設(shè)備都會受到這個PC1發(fā)送的詢問信息。

接下來②需要做的是,所有在這個交換機(jī)上的設(shè)備需要判斷此詢問信息,如果各自的IP和要詢問的IP不一致,則丟棄,如圖PC3、Route均丟棄該詢問信息,而對于PC2判斷該詢問信息發(fā)現(xiàn)滿足一致的要求,則接受,同樣的寫入PC1的IP和MAC到自己的ARP映射表中。

最后,③PC2單播發(fā)送應(yīng)答信息給PC1,告訴PC1自己的IP和MAC地址。

四:ARP代理

ARP協(xié)議
上圖中,主機(jī)A需要與主機(jī)B通信時,目的IP地址與主機(jī)的IP地址位于不同網(wǎng)絡(luò),但由于主機(jī)A未設(shè)置網(wǎng)關(guān),所以他將會以廣播的形式發(fā)送ARP Request報文,請求B的MAC地址,但是廣播報文無法被路由器轉(zhuǎn)發(fā),所以主機(jī)B無法收到主機(jī)A的請求報文。
在路由器上啟用代理ARP功能,就可以解決這個問題。啟用代理后,路由器接收到這樣的請求,會查找路由表,如果存在主機(jī)B的路由表項,路由器會將自己的G0/0/0接口的MAC地址回應(yīng)該ARP Requestrian。主機(jī)A收到ARP Reply后,將一路有油漆的G0/0/0接口MAC地址作為目的MAC地址進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。
小結(jié):1如果兩臺主機(jī)在同一個網(wǎng)段,則直接發(fā)送ARP Request報文就好。
2 如果在不同網(wǎng)段,(1)主機(jī)A設(shè)置了網(wǎng)關(guān),ARP協(xié)議可以正常使用。
(2)主機(jī)A沒有設(shè)置網(wǎng)關(guān),這種情況下,我們要開啟ARP代理,路由器來重新封裝,轉(zhuǎn)發(fā)報文

五: 免費(fèi)ARP

ARP協(xié)議
主機(jī)A將ARP Request 廣播報文中的目的IP地址字段設(shè)置為自己的IP地址,該網(wǎng)絡(luò)中的所有主機(jī)都會接受到此報文。當(dāng)目的IP地址已經(jīng)被某一個主機(jī)或網(wǎng)管室友是,該主機(jī)或網(wǎng)關(guān)就會回應(yīng)ARP reply 報文,通過這種方式主機(jī)A就能探測到IP地址沖突了。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI