結束了日本大阪的旅程,筆者順利回到台灣,繼續我們的資訊鐵人挑戰!
今天,我們來到了第二階段的最後一天。在前幾天的實作中,我們學過網路層 (Layer 3) 認的是 IP 位址(像是門牌號碼),而資料結連層 (Layer 2) 認的是網卡的 MAC 位址(像是身分證字號)。
但問題來了:當你的電腦只知道目標網站的 IP 時,它是怎麼知道對方網卡的 MAC 位址,進而把實體封包送過去的呢?這就要靠今天的超級主角——ARP (位址解析協定, Address Resolution Protocol) 來當翻譯官了!
當電腦不知道某個 IP 對應的 MAC 位址時,它的做法非常直觀:直接在區域網路內「大吼一聲」,問所有人「這個 IP 是誰的?」。這個大吼的動作就稱為廣播 (Broadcast)。
【實作練習】
我們刻意去 Ping 一個區網內不存在的 IP,藉此逼迫系統發出 ARP 廣播。
arp。ping -c 3 10.0.2.99(這是一個預設不存在的區網 IP)。
畫面解析:
因為 10.0.2.99 不存在,Ping 會顯示 Destination Host Unreachable。但看看背後的 Wireshark!它抓到了由本機 (10.0.2.15) 發出的 ARP 請求:Who has 10.0.2.99? Tell 10.0.2.15。這就是電腦正在區域網路內大吼尋找目標的鐵證!
這聲「大吼」在網線裡到底長什麼樣子?我們透過 Wireshark 的詳細資訊窗格來一探究竟。
【實作練習】
停止擷取後,點擊剛剛那行 Who has... 的封包,並在中間窗格展開第二層的 Ethernet II 資訊。

畫面解析:
仔細看 Destination (目的地) 欄位,你會發現它不是某個特定的網卡,而是顯示為 Broadcast (ff:ff:ff:ff:ff:ff)。
在乙太網路的標準中,由全 F 組成的 MAC 位址就是廣播位址。當交換器 (Switch) 收到目的地是全 F 的封包時,就會無條件把它複製並發送給網域內的每一台設備。
如果每次傳送資料都要先在網路上大吼一次,網路早就癱瘓了。因此,作業系統非常聰明,它會把問到的「IP 與 MAC 對應關係」偷偷記在記憶體中,這個清單就叫做 ARP 快取表 (ARP Cache)。
【實作練習】
在 Ubuntu 終端機輸入我們 Day 8 用過的指令:
arp -a

畫面解析:
畫面上印出了 Ubuntu 目前紀錄的表格。
10.0.2.2 對應的實體 MAC 位址 52:54:00:12:35:00。10.0.2.99 也被記錄下來了,但因為根本沒有人回應,所以它的實體位址顯示為 <incomplete> (不完整)。恭喜大家完成了鐵人賽第 14 天,也宣告我們正式突破了第二階段!在過去這週,我們從 OSI 理論出發,親眼見證了 TCP 三方交握,安裝並熟悉了地表最強的 Wireshark,掌握了過濾雜訊的技巧,最後解構了底層的 ARP 廣播協定。
你現在已經具備了看懂網路世界「對話紀錄」的能力了!
從明天 [Day 15] 開始,我們將邁入本系列最刺激的第三階段:資安檢測與進階封包實戰。我們將把前面的技能全部串聯起來,第一站就是教你使用 Wireshark 的「追蹤 TCP 串流」功能,直接看穿未加密通訊中的連線內容!我們明天見。