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

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