淺談ARP地址解析協(xié)議
今天跟大家聊一聊你們認為最熟悉又是最陌生的ARP地址解析協(xié)議,現(xiàn)在網(wǎng)絡(luò)都是 Ethernet,在這個環(huán)境中,我們的 PC router 三層設(shè)備都包含 MAC IP 地 址。?
一、ARP的簡單介紹
在以太網(wǎng)環(huán)境中,我們要發(fā)送幀,幀要添加SD( 源目,下面統(tǒng)一說成SD)MAC 地址信息,通信的時候,不關(guān)注 MAC 地址是什么,ping IP 地址,很多情況下 S 和 D 通信的時候 S 知道 D的 IP 地址,不知道MAC 地址是不能通信的,因為在 Ethernet 環(huán)境中將成幀(成幀 我們的數(shù)據(jù)幀能夠成功的被封裝),如果不知道 MAC 地址,那么 MAC 地址幀頭的第一個字段沒有辦法填寫,所以通信的時候,不但知道對端的 IP 地址,還要知道對端 MAC 地址。
當PC 發(fā)送一個數(shù)據(jù)包去往目的節(jié)點的時候,回做一個判斷自身的 IP 地址和目標 IP 地址是否在同一個自網(wǎng)段內(nèi),使用自身的掩碼和目的 IP 地址做一個云運算,得出網(wǎng)絡(luò)號和自身的網(wǎng)絡(luò)號對比,一致代表在同一個網(wǎng)絡(luò)內(nèi)或者廣播域內(nèi),這個時候可以使用對端 MAC 地址做數(shù)據(jù)封裝,不在同一網(wǎng)絡(luò)內(nèi),那么就檢查是否指定網(wǎng)關(guān),去查看網(wǎng)關(guān)的 MAC 地址信息,因為去往外網(wǎng)的時候目的 MAC 地址必須是網(wǎng)管的,否則出不去,因為 router 收到 MAC 地址為自己的接受接口地址的時候才會拆包,獲得 3 層查 DIP,做轉(zhuǎn)發(fā),這就是 PC 對待網(wǎng)絡(luò)內(nèi) 網(wǎng)絡(luò)間通信差異化處理。
還有一種可能,就是 PC 要訪問外網(wǎng)節(jié)點,并沒有指定網(wǎng)關(guān),那么可以嘗試解析對端的 MAC 地址,只要通過 Ethernet 接口發(fā)送數(shù)據(jù),我一定要根據(jù)下一跳 IP 地址在 ARP 表中找對應(yīng)的表項 ,情況有以下兩種:
找到:直接使用該表項的地址信息填充 MAC 字段,?
沒有找到:發(fā)送 ARP 請求來解析,?
在同一網(wǎng)絡(luò)內(nèi),我的下一跳就是目的地;不在同一網(wǎng)絡(luò)內(nèi) 下一跳就是網(wǎng)關(guān)。當兩來主機在同一網(wǎng)絡(luò)內(nèi)的時候直接針對目的 IP 做 ARP 檢查,要訪問外網(wǎng)的時候指定網(wǎng)關(guān),對網(wǎng)關(guān)做 ARP 地址檢查。ARP請求廣播,應(yīng)答為單播,那什么情況下發(fā)送ARP請求呢?就是在已知目的主機 IP,解析目的主機MAC 地址的時候,如下圖:

可以看到,ARP 封裝一定是封裝 Ethernet 幀頭。
下面我們就來說看看ARP數(shù)據(jù)包格式,如下圖所示:

Hardware type(硬件類型)表示硬件地址類型,一般為以太網(wǎng)?
Protocol type(協(xié)議字段) 三層的協(xié)議信息?
Hardware length (硬件地址長度)MAC 地址多少字節(jié),?
Protocol length(協(xié)議長度) 3 層地址長度?
Operation code (操作代碼) 1 是 request 2 是 reply
二、代理 ARP 和免費 ARP?
代理 ARP 全稱是 Proxy ARP ,在路由器、多層交換機、防火墻的網(wǎng)關(guān)接口使用,那么代理 ARP 是怎么工作的呢?如:PCA---SW1---R1---SW2---PCB,PCA 是沒有配置網(wǎng)關(guān)的老式電腦,步驟如下:
(1)判斷 PCB 和自身的 IP 地址是否屬于同一個 IP 子網(wǎng)段,然后
(2)PCA 直接針對 PCB 的 IP 地址做 ARP 解析,條件如下:
ARP 的請求者和被請求者是否屬于同一個網(wǎng)絡(luò)
R1 需要擁有去往被請求者的路由
接口開啟代理 ARP
這時 R1 會偽裝成 PCB 代替 PCB 向 A 返還 ARP 應(yīng)答、免費 ARP全稱是IP gratuitous-arps,通過 DHCP 來獲取一個 ip 地址,同時發(fā)送免費 ARP,免費?ARP?數(shù)據(jù)包是主機發(fā)送?ARP?查找自己的?IP?地址?。那么免費ARP有那么作用呢?如下:
(1)驗證 IP 是否沖突一個主機能夠通過它來確定還有一個主機是否設(shè)置了同樣的 IP 地址。發(fā)送主機并不須要一定收到此請求的回答。假設(shè)收到一個回答,表示網(wǎng)絡(luò)中存在與自身 IP 同樣的主機。假設(shè)沒有收到應(yīng)答,則表示本機所使用的 IP 與網(wǎng)絡(luò)中其他主機并不沖突 。
(2) 假設(shè)發(fā)送 ARP 的主機正好改變了物理地址(如更換物理網(wǎng)卡),能夠使用免費ARP來通知網(wǎng)絡(luò)中其他主機及時更新 ARP 緩存。
?