什么是ARP協(xié)議

在學(xué)習(xí)IP協(xié)議之前,必須要弄懂IP地址與硬件地址的區(qū)別。

下圖說明了這兩種地址的區(qū)別,從層次的角度講,物理地址是數(shù)據(jù)鏈路層和物理層使用的地址,而IP地址是網(wǎng)絡(luò)層和以上各層使用的地址,是一種邏輯地址。(IP地址是用軟件實(shí)現(xiàn)的)

在發(fā)送數(shù)據(jù)的時(shí),數(shù)據(jù)從高層下到低層,然后才到通信鏈路上傳輸。使用IP地址的IP數(shù)據(jù)報(bào)一旦交給數(shù)據(jù)鏈路層,就被封裝成MAC幀了,MAC幀在傳輸時(shí)使用的源地址和目的地址都是硬件地址,這兩個(gè)硬件地址都被寫在MAC幀的首部了。也就是說,數(shù)據(jù)鏈路層只會(huì)用硬件地址來定位主機(jī),它看不見IP地址了。

各種電子設(shè)置都會(huì)有個(gè)mac地址,它就是硬件地址,比如

設(shè)備中在網(wǎng)卡在出廠的時(shí)候就會(huì)被設(shè)定mac地址,它長48位,也就是6個(gè)字節(jié),如上圖中的3c:22:fb:86:0a:12,一般來說,mac地址分成兩個(gè)部分,前24位表示廠商的編號(hào),后面24位則是廠商給網(wǎng)卡的編號(hào)


我們上網(wǎng)時(shí),只會(huì)記住域名,比如我們在瀏覽器上輸入http://www.baidu.com,網(wǎng)絡(luò)層只識(shí)別IP地址,DNS幫我們將域名轉(zhuǎn)換為IP地址,數(shù)據(jù)鏈路層只識(shí)別MAC地址,那么怎么把IP地址轉(zhuǎn)換為MAC地址呢?這就需要使用到ARP協(xié)議了。

當(dāng)主機(jī)A要向本局域網(wǎng)上的主機(jī)B發(fā)送IP數(shù)據(jù)報(bào)時(shí),如果A在緩存中查找不到B的mac地址:

1、A在本局域網(wǎng)上廣播發(fā)送ARP請求,大致就是我的IP地址是XXXX,mac地址是XXXX,我想知道IP地址為XXXX的主機(jī)的mac地址

2、本局域網(wǎng)上的所有主機(jī)都會(huì)收到這個(gè)ARP請求

3、主機(jī)B的IP地址與ARP請求中要查詢的IP地址一致,就收下這個(gè)ARP請求,然后向主機(jī)A發(fā)送ARP響應(yīng),并且在響應(yīng)中寫下自己的mac地址。其余的主機(jī)IP地址不一致,因此就不會(huì)理會(huì)這個(gè)ARP請求

4、主機(jī)A收到主機(jī)B的響應(yīng)后,就知道主機(jī)B的mac地址了。主機(jī)A也會(huì)將主機(jī)B的mac地址寫入其ARP緩存中,這樣下一次查緩存就能直接知道B的mac地址了,不需要通過ARP協(xié)議來獲取,加快速度

每個(gè)主機(jī)上都會(huì)有ARP高速緩存,這樣能加快mac地址的查詢。

注意:ARP只是解決了同一個(gè)局域網(wǎng)上的主機(jī)或路由器的IP地址與mac地址的映射問題。如果要找的主機(jī)和源主機(jī)不在同一個(gè)局域網(wǎng)上,是無法直接查到另一個(gè)主機(jī)的mac地址的。

如上圖,假設(shè)主機(jī)A和路由器組成一個(gè)局域網(wǎng)A,主機(jī)B和路由器組成另一個(gè)局域網(wǎng)B,主機(jī)A和主機(jī)B分別在不同的局域網(wǎng)內(nèi)。主機(jī)A要向主機(jī)B發(fā)送一條IP數(shù)據(jù)報(bào),但A不知道B的mac地址,但A和B也不在同一局域網(wǎng)內(nèi)。

A先要將數(shù)據(jù)發(fā)給路由器,所以A先要查詢路由器的MAC地址,查到后,發(fā)送MAC幀給路由器,路由器再發(fā)送數(shù)據(jù)給B,由于路由器和B是在同一個(gè)局域網(wǎng)內(nèi),所以路由器能查到B的mac地址,最終B成功地收到了A的發(fā)送數(shù)據(jù)。

回顧最上面的一張圖,我們知道了,mac幀的首部中保存的目的mac地址是會(huì)經(jīng)常變化的,因?yàn)橐话愕臄?shù)據(jù)傳輸都不會(huì)只是在本局域網(wǎng)內(nèi)。IP數(shù)據(jù)報(bào)中的目的IP是一定不會(huì)變的。

還有一個(gè)小疑問,主機(jī)A通過路由器向另一個(gè)局域網(wǎng)中的主機(jī)B發(fā)送消息,連接兩個(gè)不同局域網(wǎng)用的是同一個(gè)路由器,路由器有不同的端口,每個(gè)端口會(huì)有不同的IP地址和mac地址,所以才能一個(gè)路由連接在不同的局域網(wǎng)中

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容