幫助文檔
什么是ARP協(xié)議?ARP協(xié)議詳解
當(dāng)我們需要給其他設(shè)備發(fā)送數(shù)據(jù)的時候,我們必須要知道另一臺設(shè)備的IP地址,但是我們僅僅只知道IP地址是遠(yuǎn)遠(yuǎn)不夠的,我們還要將IP數(shù)據(jù)報文封裝成幀才可以通過數(shù)據(jù)鏈路進(jìn)行數(shù)據(jù)的發(fā)送。而這里面,數(shù)據(jù)幀又必須要有MAC地址,所以我們還要獲取另一臺設(shè)備的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的工作過程
ARP之簡單請求應(yīng)答
PC1依據(jù)OSI模型
1、依次從上至下對數(shù)據(jù)進(jìn)行封裝,包括對ICMP Date加IP包頭的封裝,但是到了封裝MAC地址的時候;
2、PC1首先查詢自己的ARP緩存表,發(fā)現(xiàn)沒有IP2和他的MAC地址的映射,這個時候MAC數(shù)據(jù)幀封裝失敗。我們使用ping命令的時候,是指定PC2的IP2的,計算機是知道目的主機的IP地址,能夠完成網(wǎng)絡(luò)層的數(shù)據(jù)封裝,因為設(shè)備通信還需要對方的MAC地址,但是PC1的緩存表里沒有,所以在MAC封裝的時候填入不了目的MAC地址。
3、那么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緩存表中;
4、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地址,值得注意的是,目的主機先完成ARP緩存,然后才是源主機完成ARP緩存。之后PC1和PC2就可以真正交流了。
ARP之廣播請求單播回應(yīng)
上圖面的圖解是不完全的ARP協(xié)議,因為在局域網(wǎng)里邊不會只有兩臺主機,這里就要考慮如何在局域網(wǎng)眾多主機里獲得目的主機的MAC。
和上面的一樣,剛開始PC1并不知道PC2的MAC地址,同樣需要發(fā)送ARP請求,但是這個局域網(wǎng)里主機很多的時候,PC1是這么做的:
1、首先PC1廣播發(fā)送詢問信息(信息和上一張圖介紹的一樣),在這個普通交換機上連接的設(shè)備都會受到這個PC1發(fā)送的詢問信息。
2、所有在這個交換機上的設(shè)備需要判斷此詢問信息,如果各自的IP和要詢問的IP不一致,則丟棄,如圖PC3、Route均丟棄該詢問信息,而對于PC2判斷該詢問信息發(fā)現(xiàn)滿足一致的要求,則接受,同樣的寫入PC1的IP和MAC到自己的ARP映射表中。
3、PC2單播發(fā)送應(yīng)答信息給PC1,告訴PC1自己的IP和MAC地址。
ARP代理
1、如果兩臺主機在同一個網(wǎng)段,則直接發(fā)送ARP Request報文就好。
2、如果在不同網(wǎng)段,(1)主機A設(shè)置了網(wǎng)關(guān),ARP協(xié)議可以正常使用。
(2)主機A沒有設(shè)置網(wǎng)關(guān),這種情況下,我們要開啟ARP代理,路由器來重新封裝,轉(zhuǎn)發(fā)報文
免費ARP
主機A將ARP Request 廣播報文中的目的IP地址字段設(shè)置為自己的IP地址,該網(wǎng)絡(luò)中的所有主機都會接受到此報文。當(dāng)目的IP地址已經(jīng)被某一個主機或網(wǎng)關(guān)私有時,該主機或網(wǎng)關(guān)就會回應(yīng)ARP reply 報文,通過這種方式主機A就能探測到IP地址沖突了。
ARP協(xié)議總結(jié):
1.網(wǎng)絡(luò)設(shè)備在什么情況下會發(fā)送ARP request?
發(fā)送設(shè)備在進(jìn)行數(shù)據(jù)發(fā)送之前,會首先查看自身的ARP緩存,查找自身的ARP緩存里是否存在目的設(shè)備的IP地址和MAC地址的映射。如果存在則直接使用,如果不存在則會發(fā)送ARP request。
2.網(wǎng)絡(luò)設(shè)備什么時候會產(chǎn)生免費ARP?
當(dāng)網(wǎng)絡(luò)上的一個設(shè)備被分配了IP地址或者IP地址發(fā)生變化后,可以通過免費ARP來檢查IP地址是否沖突。

閩公網(wǎng)安備 35021102001331號