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 問的是誰?
這是最容易搞混的地方。PC-A(192.168.1.10)要連 8.8.8.8 時,它不會去 ARP 8.8.8.8 —— 那不在同一個網段,廣播傳不過去。它會去 ARP 自己的預設閘道,然後把訊框送給路由器,讓路由器處理後面的事。
| 目的地 | ARP 要問誰 | 訊框的目的 MAC |
|---|---|---|
| 同網段的 192.168.1.20 | 192.168.1.20 本人 | 192.168.1.20 的 MAC |
| 跨網段的 8.8.8.8 | 預設閘道 192.168.1.1 | 路由器的 MAC |
! 在 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-cacheIPv6 沒有 ARP
IPv6 用 NDP(Neighbor Discovery Protocol)取代 ARP,底層是 ICMPv6 的 Neighbor Solicitation / Neighbor Advertisement,而且用多播而非廣播(IPv6 根本沒有廣播)。考題會問「IPv6 中相當於 ARP 的是什麼」,答案是 NDP 或 Neighbor Solicitation。
立即測驗這一節(2 題)