網絡層的ARP協議
通過ARP協議知道對方的mac地址,已經知道對方ip地址的情況下,不知道mac地址。定義了一個ARP協議來解決這個問題。
因為在數據鏈路層的時候需要知道一個mac地址,然后才能進行數據鏈路層的封裝。所以需要通過網絡層的ARP協議來獲取mac地址。
打開控制面板-網絡連接-連接詳細信息
物理地址:是這臺電腦的mac地址。
IPv4地址:是這臺電腦的ip地址。
通過ip對應成域名。mac地址不方便記憶,所以最先記住的是ip地址或域名。
要進行數據鏈路層的封裝又必須要知道它的mac地址。所以用ARP協議,通過ip地址獲取對方的mac地址。
1.ARP協議的目的
ARP-地址解析協議,實現通過對方的ip地址(域名)尋找對方的mac地址。
2.ARP協議通訊過程
舉個例子:
圖片來自網絡
目的:老師想給班級里一個學生a發消息催作業,用微信。
「老師」 :
1.先去微信通訊錄查找有沒有同學a的微信,如果有,直接給同學a發消息,讓她交作業。
2.沒有同學a的微信。去班級群發消息:“同學a的微信,給我一下,我是某某老師?!?/p>
同學a看到群里消息,她把微信單獨發給老師。老師收到同學a回復的微信消息。
3.老師加好友,可以在微信通訊錄找到同學a,可以直接發消息了。
給同學a單獨發了一條消息:"同學a,我們要交作業了。"
同學a單獨回復:"我馬上交作業。""
「同學a」 :
1.添加老師的微信到微信通訊錄。
2.私聊發消息。
這個過程就是ARP協議實現的過程。
同上:
圖片來自網絡
主機a給主機b發消息進行通信。
1.主機a找主機b的mac地址。
知道主機b的ip地址:192.168.1.2
主機a的ip地址:192.168.1.1
現在主機a要發消息,找主機b的mac地址。ARP表和微信通訊錄很相似(ip地址和mac地址的對應表)。
如果找到了mac地址,去數據鏈路層封裝mac地址,進行數據包的發送。如果在arp表里沒有找到ip地址對應的mac地址,主機a發消息給主機b所在的主機群組。
主機a發廣播消息:“誰有主機b(192.168.1.2)的mac地址,我是主機a(192.169.1.1)。”
主機b回復主機a一條單播消息:“我就是192.168.1.2,我的mac地址是xxxxx?!?/p>
2.主機b收到主機a的廣播消息后,在回復消息之前。主機b保存主機a的mac地址和ip地址到自己的ARP表里面。
再找主機a通信的時候,就直接在ARP表里面找到主機a的ip地址和mac地址的對應關系,直接發送單播消息。
3.主機a收到主機b的單播消息,同樣把主機b的ip地址和mac地址保存到ARP表里。
3.總結
1.主機a首先查看自己的ARP表,如果找到了主機b的mac地址,則直接對ip數據包進行幀封裝,發送給主機b。
2.如果主機a在ARP表中找不到主機b的mac地址,則將緩存該數據報文,然后以 「廣播方式」 發送一個arp請求報文。
ARP請求報文中帶上 「源ip地址和源mac地址(主機a)」 ,目標ip地址和目標mac地址為主機b的ip地址和 「全0的mac地址」 。
廣播,該網段上的所有主機都可以接收到該請求。但只有被請求的主機(即主機b)會對該請求進行處理。
3.主機b比較自己的ip地址和ARP請求報文中的目標ip地址,當兩者相同時進行如下處理:將arp請求報文中的發送端(即主機a)的ip地址和mac地址存入自己的ARP表中。
之后以 「單播方式」 發送arp響應報文給主機a,其中包含了自己的 「mac地址」 。
4.主機a收到ARP響應報文后,將主機b的mac地址加入到自己的ARP表中以用于后續報文的轉發,同時將ip數據包進行封裝后發送出去。
-
ARP協議
+關注
關注
0文章
10瀏覽量
6888
發布評論請先 登錄
相關推薦
評論