1、ARP作用
??ARP( Address Resolution Protocol,地址解析協議)是將 IP 地址解析為以太網 MAC 地址(或稱物理地址)的協議。在局域網中,當主機或其它網絡設備有數據要發送給另一個主機或設備時,它必須知道對方的網絡層地址(即 IP 地址)。但是僅僅有 IP 地址是不夠的,因為 IP 數據報文必須封裝成幀才能通過物理網絡發送,因此發送站還必須有接收站的物理地址,所以需要一個從 IP 地址到物理地址的映射。ARP 就是實現這個功能的協議。
2、ARP報文結構
??ARP報文分為ARP請求和ARP應答報文,報文格式如下圖所示:
- 硬件類型:表示硬件地址的類型。它的值為 1 表示以太網地址;
- 協議類型:表示要映射的協議地址類型。它的值為 0x0800 即表示 IP 地址;
- 硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節為單位。對于以太網上 IP 地址的 ARP 請求或應答來說,它們的值分別為 6 和 4;
- 操作類型( OP): 1 表示 ARP 請求, 2 表示 ARP 應答;
- 發送端 MAC 地址:發送方設備的硬件地址;
- 發送端 IP 地址:發送方設備的 IP 地址;
- 目標 MAC 地址:接收方設備的硬件地址。
- 目標 IP 地址:接收方設備的 IP 地址。
3、 ARP地址解析過程
??假設主機A和B在同一個網段,主機A要向主機B發送信息。如下圖所示,具體的地址解析過程如下:
- 主機 A 首先查看自己的 ARP 表,確定其中是否包含有主機 B 對應的 ARP 表項。如果找到了對應的 MAC 地址,則主機 A 直接利用 ARP 表中的 MAC 地址,對 IP 數據包進行幀封裝,并將數據包發送給主機 B。
- 如果主機 A 在 ARP 表中找不到對應的 MAC 地址,則將緩存該數據報文,然后以廣播方式發送一個 ARP 請求報文。 ARP 請求報文中的發送端 IP 地址和發送端 MAC 地址為主機 A 的 IP地址和 MAC 地址,目標 IP 地址和目標 MAC 地址為主機 B 的 IP 地址和全 0 的 MAC 地址。由于 ARP 請求報文以廣播方式發送,該網段上的所有主機都可以接收到該請求,但只有被請求的主機(即主機 B)會對該請求進行處理。
- 主機 B 比較自己的 IP 地址和 ARP 請求報文中的目標 IP 地址,當兩者相同時進行如下處理:將 ARP 請求報文中的發送端(即主機 A)的 IP 地址和 MAC 地址存入自己的 ARP 表中。之后以單播方式發送 ARP 響應報文給主機 A,其中包含了自己的 MAC 地址。
- 主機 A 收到 ARP 響應報文后,將主機 B 的 MAC 地址加入到自己的 ARP 表中以用于后續報文的轉發,同時將 IP 數據包進行封裝后發送出去。
- 當主機 A 和主機 B 不在同一網段時,主機 A 就會先向網關發出 ARP 請求, ARP 請求報文中的目標IP 地址為網關的 IP 地址。當主機 A 從收到的響應報文中獲得網關的 MAC 地址后,將報文封裝并發給網關。如果網關沒有主機 B 的 ARP 表項,網關會廣播 ARP 請求,目標 IP 地址為主機 B 的 IP 地址,當網關從收到的響應報文中獲得主機 B 的 MAC 地址后,就可以將報文發給主機 B;如果網關已經有主機 B 的 ARP 表項,網關直接把報文發給主機 B。
4、ARP表
??設備通過 ARP 解析到目的 MAC 地址后,將會在自己的 ARP 表中增加 IP 地址到 MAC 地址的映射表項,以用于后續到同一目的地報文的轉發。ARP 表項分為動態 ARP 表項和靜態 ARP 表項。
- 動態ARP表項
動態 ARP 表項由 ARP 協議通過 ARP 報文自動生成和維護,可以被老化,可以被新的 ARP 報文更新,可以被靜態 ARP 表項覆蓋。當到達老化時間、接口 down 時會刪除相應的動態 ARP 表項。 - 靜態ARP表項
靜態 ARP 表項通過手工配置和維護,不會被老化,不會被動態 ARP 表項覆蓋。配置靜態 ARP 表項可以增加通信的安全性。靜態 ARP 表項可以限制和指定 IP 地址的設備通信時只使用指定的 MAC 地址,此時攻擊報文無法修改此表項的 IP 地址和 MAC 地址的映射關系,從而保護了本設備和指定設備間的正常通信。
靜態 ARP 表項分為長靜態 ARP 表項和短靜態 ARP 表項。
? 在配置長靜態 ARP 表項時,除了配置 IP 地址和 MAC 地址項外,還必須配置該 ARP 表項所在 VLAN 和出接口。長靜態 ARP 表項可以直接用于報文轉發。
? 在配置短靜態 ARP 表項時,只需要配置 IP 地址和 MAC 地址項。如果出接口是三層以太網接口,短靜態 ARP 表項可以直接用于報文轉發;如果出接口是 VLAN 接口,短靜態 ARP 表項不能直接用于報文轉發,當要發送 IP 數據包時,先發送 ARP 請求報文,如果收到的響應報文中的源 IP 地址和源 MAC 地址與所配置的 IP 地址和 MAC 地址相同,則將接收 ARP 響應報文的接口加入該靜態 ARP 表項中,之后就可以用于 IP 數據包的轉發。
5、 免費ARP簡介
免費 ARP 報文是一種特殊的 ARP 報文,該報文中攜帶的發送端 IP 地址和目標 IP 地址都是本機 IP地址,報文源 MAC 地址是本機 MAC 地址,報文的目的 MAC 地址是廣播地址。設備通過對外發送免費 ARP 報文來實現以下功能:
- 確定其它設備的 IP 地址是否與本機的 IP 地址沖突。當其它設備收到免費 ARP 報文后,如果發現報文中的 IP 地址和自己的 IP 地址相同,則給發送免費 ARP 報文的設備返回一個 ARP 應答,告知該設備 IP 地址沖突。
- 設備改變了硬件地址,通過發送免費 ARP 報文通知其它設備更新 ARP 表項。使能了免費 ARP 報文學習功能后,設備會根據收到的免費 ARP 報文中攜帶的信息(源 IP 地址、源 MAC 地址)對自身維護的 ARP 表進行修改。設備先判斷 ARP 表中是否存在與此免費 ARP 報文源 IP 地址對應的 ARP 表項:
- 如果沒有對應的 ARP 表項,設備會根據該免費 ARP 報文中攜帶的信息新建 ARP 表項;
- 如果存在對應的 ARP表項, 設備會根據該免費 ARP報文中攜帶的信息更新對應的 ARP表項。
關閉免費 ARP 報文學習功能后,設備不會根據收到的免費 ARP 報文來新建 ARP 表項,但是會更新已存在的對應 ARP 表項。如果用戶不希望通過免費 ARP 報文來新建 ARP 表項,可以關閉免費ARP 報文學習功能,以節省 ARP 表項資源。
參考資料:H3C設備ARP配置