起序:文字篇幅略長,請讀者耐心讀下去。
原理:發送 ARP 廣播報文,接收 ARP 單播應答。
一、概述
地址解析協議 ARP(Address Resolution Protocol),在實際應用中,它是爲了解決 已經知道了一個機器(主機或路由器)的IP地址,需要找出其相應的硬件地址
這樣的問題。
網絡層使用的是 IP地址
,但在實際網絡的鏈路上傳送數據幀時,最終還是必須使用該網絡的 硬件地址
。但 IP地址
和下面的網絡的 硬件地址
之間由於格式不同而不存在簡單的映射關係,因爲
- IP 地址:32 位
- 硬件地址(MAC 地址):48 位
地址解析協議 ARP
解決這個問題的方法是在主機 ARP 高速緩存
中存放一個從 IP地址
到 硬件地址
的映射表,並且這個映射表還經常動態更新(新增或超時刪除)。
二、工作流程
每一臺主機都設有一個
ARP高速緩存(ARP cache)
,裏面有本局域網上的各主機和路由器的IP地址
到硬件地址
的映射表,這些都是該主機目前知道的一些地址。
1、網絡拓撲圖
假設
主機 PC1
向主機 PC3
發送HTTP 請求
,會有兩種 “心裏活動”。
主機 PC1
的ARP 高速緩存
中存在主機 PC3
的IP 地址
和硬件地址
的映射關係。主機 PC1
的ARP 高速緩存
中不存在主機 PC3
的IP 地址
和硬件地址
的映射關係。
2、存在
如果
主機 PC1
存在主機 PC3
的IP 地址
和硬件地址
的映射關係。在發送HTTP 請求
的時候,就會把這個硬件地址
寫入MAC 幀
,然後通過局域網把該MAC 幀
發往此硬件地址
。
3、不存在
主機 PC1
的ARP 高速緩存
中不存在主機 PC3
的IP 地址
和硬件地址
的映射關係。
1)、發送 HTTP 請求
下面圖片顯示的就是
PC1
發送HTTP請求
給PC3
在 MAC 層的MAC 幀
格式,爲了清晰瞭解MAC 幀
格式,圖片有對應關係。點贊謝謝。
注:此時的 PC1
的 ARP 高速緩存
中還沒有 PC3
的 IP 地址
和 MAC 地址
的映射關係,也就是說,這個 幀
封裝不成功,是無法發送到 PC3
的。
2)、發送 ARP 請求
這個時候就該
ARP
大顯神威了,此時ARP
的 “心裏活動” 是:“你在一邊等着,我把MAC 地址
給你帶回來”。
- 在
ARP
中的目的 MAC 地址
是未知的,所以是以00:00:00:00:00:00
暫時填補空缺位置。 - 在
幀頭
中的目的 MAC 地址
也是未知的,但是以FF:FF:FF:FF:FF:FF
這個廣播地址
作爲目標 MAC 地址
。 - ARP 請求分組的主要內容是:“我的
IP 地址
是192.168.1.1
,MAC 地址
是AA
,我想知道IP 地址
爲192.168.1.3
的MAC 地址
是什麼”。
注:從上方可分析得 ARP 是廣播報文。
3)、交換機廣播轉發
交換機的主要工作是
轉發
,因爲交換機是二層設備
,只會檢查幀頭
和幀尾
,當交換機知道ARP 請求協議幀
的目的 MAC 地址
是12FF
時,就可以知道,這個報文是廣播報文
。
注:這裏不細說 交換機的工作原理。
4)、機器收到 ARP 請求
這裏的
機器
有多種,這裏只介紹兩種,主機
或路由器
。
Ⅰ、主機
主機
收到ARP 請求報文
後,不是立即丟棄這個報文,而是先送到主機
的網卡- 網卡檢查出
幀
的目標 MAC 地址
是12FF
,說明是給所有人的,自己也是所有人之一 - 解封裝
幀頭
和幀尾
後,發現幀頭
中的類型
字段的值是0806
,就會把ARP 包頭和 ARP 數據
交給主機
的網絡層的ARP 協議
來處理這個數據 ARP 協議
把ARP 數據
中的目的 IP 地址(192.168.1.3)
和自己的IP 地址
匹配
匹配成功
5)、發送 ARP 響應
匹配失敗
就會由 主機 PC2
的網絡層的 ARP 協議
丟棄,而不是網卡進行丟棄。
Ⅱ、路由器
路由器
收到 ARP 請求報文
後,檢查出 幀
的 目標 MAC 地址
是 12FF
,路由器
是 三層設備
,解封裝 幀頭
和 幀尾
後,發現 幀頭
中的 類型
字段的值是 0806
,就會把 ARP 包頭和 ARP 數據
交給 主機
的網絡層的 ARP 協議
來處理這個數據。
問:路由器會不會轉發(路由) ARP 報文
?
答:不會
- 路由器要路由的話,是需要檢查
IP包頭
裏面的目標IP地址
,再匹配路由表。而ARP 報文
裏是沒有IP 包頭
的。 - ARP 是廣播報文,路由器是不允許廣播報文通過的
注:ARP
是出不了 網關
的,所以是內網協議(局域網協議)。
5)、發送 ARP 響應
ARP 響應分組的主要內容是:"我的 IP 地址
是 192.168.1.3
,MAC 地址
是 CC
"。
6)、交換機單播轉發
這時的
ARP 響應報文
有明確的MAC 地址(AA)
,就會轉發到主機 PC1
。
7)、主機收到 ARP 響應
這一步和第五步(機器收到 ARP 請求)不一樣,因爲
交換機
在轉發ARP 響應
時,是以單播
的通信方式。
主機 PC1
收到 ARP 響應後
,先到達 主機 PC1
的網卡,解封裝 幀頭
和 幀尾
,把 ARP 包頭和 ARP 數據
交給 主機 PC1
的網絡層的 ARP 協議
來處理這個數據,就可以得到 目的 MAC 地址(CC)
。
同時
主機 PC1
會創建一個ARP 高速緩存表
:
Internet 地址 | 物理地址 | 類型 |
---|---|---|
192.168.1.3 | CC | 動態 |
可以在命令行窗口查看
# 查看 ARP 緩存
arp -a
8)、完善 HTTP 請求報文
這個時候就把
目的 MAC 地址(CC)
填寫在HTTP 請求報文幀
的目的 MAC 地址
的位置。
如果對您有幫助,點個贊再走吧。