ARP 協定深度解析

Address Resolution Protocol

我是 ExtremeXOS 網路架構大師。在網路的世界裡,如果 IP 是門牌號碼,MAC Address 就是接收者的身分證。今天我們來解構這兩者之間的橋樑——ARP。

01 核心概念 (Concept)

一句話定義

ARP (RFC 826) 是一個運作在 OSI 模型第 2.5 層的協定,其唯一任務是將已知的 IP 位址 (L3) 解析為實體 MAC 位址 (L2),讓封包能在區域網路(LAN)中正確傳遞。

生活化比喻

想像你在一個吵雜的會議室(LAN)裡,你想把一份文件交給「財務經理」(IP Address)。

你不知道誰是財務經理,所以你站起來大喊:「誰是財務經理?」(ARP Request - 廣播)。
某個人舉手回答:「我是,我的座位在 C 排 5 號。」(ARP Reply - 單播)。
於是你走過去把文件放到 C 排 5 號(MAC Address)。

02 運作原理 (Mechanism)

封包流向與技術細節

  • Step 1: 檢查 ARP Cache
    當主機 A 要傳送資料給主機 B (同網段) 時,會先檢查自己的 ARP Table (快取)。若有紀錄,直接封裝 Frame 傳送;若無 (Cache Miss),則啟動 ARP 程序。
  • Step 2: 發送 ARP Request (廣播)
    主機 A 發送廣播封包。
    Dst MAC: FF:FF:FF:FF:FF:FF (Broadcast)
    Opcode: 1 (Request)
    Switch 收到後,會將此封包 Flood 到該 VLAN 的所有 Port (除了來源 Port)。
  • Step 3: 回傳 ARP Reply (單播)
    只有主機 B 發現 "Target IP" 是自己,才會回應。
    Dst MAC: Host A MAC (Unicast)
    Opcode: 2 (Reply)

廠商視角:ExtremeXOS vs Cisco IOS

功能 ExtremeXOS Cisco IOS
查看 ARP 表 show iparp show arp
清除 ARP clear iparp [all | vlan <name>] clear arp-cache
Timeout 設定 configure iparp timeout <sec> arp timeout <sec>

* 備註:在 ExtremeXOS 中,ARP 屬於 Layer 3 轉發的重要依據,常結合 "FDB (Layer 2)" 一起除錯。

03 架構視覺化 (Visuals)

標準 ARP 請求與回應流程 (Sequence Diagram)

sequenceDiagram participant A as Host A (192.168.1.10) participant S as L2 Switch participant B as Host B (192.168.1.20) participant C as Host C (Other) Note over A: 準備發送資料給 .20
查 ARP Table: MISS rect rgb(255, 240, 240) Note right of A: ARP Request (Broadcast) A->>S: Who has 192.168.1.20? Tell 192.168.1.10 S-->>C: Flood (Broadcast) S-->>B: Flood (Broadcast) end Note over C: IP 不符,丟棄 Note over B: IP 符合! 紀錄 A 的 MAC rect rgb(240, 255, 240) Note left of B: ARP Reply (Unicast) B->>S: 192.168.1.20 is at BB:BB:BB:BB:BB:BB S->>A: Forward to Port A end Note over A: 更新 ARP Table
開始傳送 Data Frame

ARP 解析決策流程 (Flowchart)

flowchart LR Start([封包傳送請求]) --> CheckCache{查詢 ARP Cache} CheckCache -- Hit (有紀錄) --> Encap[封裝 Frame
Dest MAC = Cache Entry] Encap --> Send[傳送至 L2 層] CheckCache -- Miss (無紀錄) --> Buffer[緩衝原始封包] Buffer --> GenReq[生成 ARP Request
Opcode=1, Dst=FF:FF...] GenReq --> Broad[廣播發送] Broad --> Wait{等待 Reply} Wait -- Timeout --> Drop[丟棄封包] Wait -- Receive Reply --> Learn[學習 MAC
更新 ARP Cache] Learn --> Unbuffer[取出緩衝封包] Unbuffer --> Encap

04 實務應用場景 (Use Case)

場景:預設閘道 (Default Gateway) 的 ARP 解析

企業網路中,當員工要連線到 Internet (例如 Google 8.8.8.8) 時,因為目的 IP 不在同一個網段,電腦必須將封包交給路由器 (Gateway)。

關鍵點: 電腦會發送 ARP Request 詢問 "Who has [Gateway IP]?" 而不是 "Who has 8.8.8.8?"。這是一個初學者常犯的觀念錯誤。得到的 MAC Address 將是 Router 介面的 MAC。

優點

  • 即插即用: 使用者無需手動設定 MAC 與 IP 的對應,完全自動化。
  • 靈活性: 更換網卡 (MAC 改變) 後,Gratuitous ARP (GARP) 可快速更新鄰居的 Cache。
  • 低成本: 協定簡單,對設備 CPU 負擔通常較小。

缺點與風險

  • 廣播風暴 (Broadcast Storm): 若 L2 Loop 未被 STP 阻擋,ARP 廣播會癱瘓網路。
  • ARP Spoofing (欺騙): 駭客發送偽造的 ARP Reply,將 Gateway 的 IP 對應到駭客自己的 MAC,導致中間人攻擊 (MITM)。
  • 不穩定性: 若 ARP Cache Timeout 設定過短,會增加廣播流量。
ExtremeXOS 安全提示: 為了防止 ARP Spoofing,我們通常會在 Switch 上設定 Dynamic ARP Inspection (DAI) 或將重要設備的 ARP 設為 Static entry。

05 隨堂測驗 (Quiz)

Q1. 當主機 A (10.1.1.5) 想要 Ping 主機 B (10.1.1.6),發出 ARP Request 時,該 Ethernet Frame 的 Destination MAC 是什麼?

Q2. 在 ExtremeXOS Switch 中,若要查看目前的 ARP 對應表,應使用哪個指令?

Q3. 什麼是 "Gratuitous ARP" (GARP)?