ARP(Address Resolution Protocol,地址解析協議)是網絡層與數據鏈路層之間的橋樑,負責在同一網段內把已知的 IP 地址轉換為對應設備的 MAC 地址。沒有 ARP,設備即使知道對方的 IP 地址,也無法在乙太網絡上把幀正確送達目的地。本頁講解 ARP 的運作流程、ARP 表的作用、Gratuitous ARP 的用途,以及在商用網絡工程中與 ARP 相關的實務考量。
為什麼需要 ARP
網絡層(第三層)以 IP 地址辨識設備,但數據鏈路層(第二層)的乙太網絡幀轉發卻只認 MAC 地址;交換機正是依靠 MAC 表把幀轉發到正確的端口。當一部設備要與同網段另一部設備通訊,例如電腦要向同一 VLAN 內的網絡打印機發送數據,發送方只知道對方的 IP 地址,必須先透過 ARP 把 IP 地址解析為 MAC 地址,才能封裝成正確的乙太網絡幀送出。這正是 ARP 名稱中「地址解析」的含義——把一種尋址方式解析為另一種尋址方式。
需要留意,ARP 只在同一個廣播域(同一網段)內運作。若目的地位於不同網段,發送方會改為查詢預設閘道的 MAC 地址,把數據幀送交路由器或三層交換機處理,再由對方負責跨網段轉發,這部分可參考 預設閘道 的相關講解。
ARP 請求與回應的運作流程
發起查詢——設備需要與同網段某個 IP 地址通訊,但本機的 ARP 表沒有對應的 MAC 地址記錄。
廣播 ARP 請求——設備以廣播形式(目的 MAC 地址為全 F)發出 ARP 請求,訊息大意是「哪部設備擁有這個 IP 地址,請回覆你的 MAC 地址」,同網段所有設備都會收到這個廣播。
目標設備回應——只有 IP 地址相符的設備會處理這個請求,並以單播方式回送 ARP 回應,內容包含自己的 MAC 地址;其餘設備會忽略請求。
記錄至 ARP 表——發起查詢的設備收到回應後,把 IP 與 MAC 的對應關係存入本機 ARP 表,並開始正式傳送數據。
後續重用——同一目的地在 ARP 表逾時前,發送方毋須再次廣播查詢,直接使用已記錄的 MAC 地址封裝幀。
ARP(Address Resolution Protocol,地址解析協議)用來在同一個網段(同一廣播域)內,把已知的 IP 地址轉換為對應設備的 MAC 地址。因為數據鏈路層(第二層)轉發幀時只認 MAC 地址,設備要與同網段的另一部設備通訊,必須先知道對方的 MAC 地址,ARP 正是負責完成這個轉換的協定。
ARP 請求與回應如何運作?
當設備需要與同網段某個 IP 地址通訊但未知其 MAC 地址時,會發出一個 ARP 請求(ARP Request),以廣播形式送到整個網段,內容大意是「哪部設備擁有這個 IP 地址,請回覆你的 MAC 地址」。擁有該 IP 地址的設備收到後,會以單播方式回送一個 ARP 回應(ARP Reply),把自己的 MAC 地址告知請求方。請求方收到回應後,把 IP 與 MAC 的對應關係存入本機的 ARP 表,往後同一目的地便毋須再次廣播查詢。
什麼是 ARP 表?
ARP 表(ARP Cache)是每部設備在本機記憶體中維護的一份 IP 地址與 MAC 地址對應清單。設備每次成功完成 ARP 查詢,便會把結果暫存於 ARP 表,並設有逾時時間,逾時後條目會被清除,需要時重新查詢。維護 ARP 表的好處是減少重複廣播,加快同網段內的通訊效率;工程師亦可透過檢視 ARP 表確認網絡上哪些設備正在活躍。
什麼是 Gratuitous ARP?
Gratuitous ARP 是設備在沒有收到任何請求的情況下,主動廣播一個關於自己 IP 與 MAC 對應關係的 ARP 訊息。常見用途包括:設備開機或更改 IP 後,向網段內所有設備宣告最新的 MAC 對應,讓其他設備及時更新各自的 ARP 表;亦用於偵測網段內是否已有相同 IP 地址的設備(IP 地址衝突偵測);在雙機備援(Failover)架構中,備用設備接手後也會發出 Gratuitous ARP 通知網絡流量改向新的 MAC 地址。