第 2 章 乙太網路與交換器運作

ARP:IP 與 MAC 之間的翻譯官

你只知道對方的 IP,卻必須寫出他的 MAC 才能送出訊框。怎麼辦?

10 分鐘


ARP(Address Resolution Protocol,位址解析協定)解決的問題很單純:已知 IP,求 MAC。它是第 2 層與第 3 層之間的黏著劑。

PC-A (192.168.1.10) 想跟 192.168.1.20 說話,但不知道它的 MAC

Step 1  ARP Request  ── 廣播 ──►  網段上所有人
        目的 MAC: FFFF.FFFF.FFFF
        內容: 「誰是 192.168.1.20?請告訴 192.168.1.10」

        所有人都收到,但只有 .20 覺得跟自己有關

Step 2  ARP Reply  ◄── 單播 ──  只回給 PC-A
        內容:「192.168.1.20 的 MAC 是 000a.2222.2222」

之後 PC-A 把這筆記進 ARP 快取,一段時間內不必再問
ARP 的兩步驟

跨網段時,ARP 問的是誰?

這是最容易搞混的地方。PC-A(192.168.1.10)要連 8.8.8.8 時,它不會去 ARP 8.8.8.8 —— 那不在同一個網段,廣播傳不過去。它會去 ARP 自己的預設閘道,然後把訊框送給路由器,讓路由器處理後面的事。

目的地ARP 要問誰訊框的目的 MAC
同網段的 192.168.1.20192.168.1.20 本人192.168.1.20 的 MAC
跨網段的 8.8.8.8預設閘道 192.168.1.1路由器的 MAC
查看與清除 ARP 快取
! 在 PC 上(Windows)
C:\> arp -a
Internet Address      Physical Address      Type
192.168.1.1           00-1a-2b-3c-4d-5e     dynamic
192.168.1.20          00-0a-22-22-22-22     dynamic

! 在 Cisco 設備上
R1# show ip arp
Protocol  Address       Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.1        -      001a.2b3c.4d5e  ARPA   Gi0/0
Internet  192.168.1.10       4      000a.1111.1111  ARPA   Gi0/0

! 清掉重學(排錯時常用)
R1# clear arp-cache

IPv6 沒有 ARP

IPv6 用 NDP(Neighbor Discovery Protocol)取代 ARP,底層是 ICMPv6 的 Neighbor Solicitation / Neighbor Advertisement,而且用多播而非廣播(IPv6 根本沒有廣播)。考題會問「IPv6 中相當於 ARP 的是什麼」,答案是 NDP 或 Neighbor Solicitation。


立即測驗這一節(2 題)