第一次執行 ping 時,有時會比後續封包慢,甚至出現 Timeout。常見原因不是 ICMP 本身,而是主機可能還不知道下一跳設備的 MAC Address。
當 ARP Cache 沒有可用紀錄時,主機必須先完成 ARP Resolution,才能送出 ICMP Echo Request。
先講結論
- ARP Cache Miss 時,Ping 前會先出現 ARP Request 與 Reply。
- 第一次 Ping 不一定會 Timeout,只可能因 ARP Resolution 稍微變慢。
- 目的地在外部網路時,ARP 查詢的是 Default Gateway,而不是最終目的 IP。
實驗環境
- 作業系統:Windows 11
- 連線方式:Laptop → USB tethering → Phone
- Laptop IP:
10.112.189.151 - Default Gateway:
10.112.189.148
Wireshark 使用 Display Filter arp or icmp,Windows 則透過 arp -a 查看目前的 ARP Cache。
ARP Cache 有紀錄時
測試開始前,Laptop 已經保存 Default Gateway 的 IP-to-MAC 對應。因此執行 Ping 時,可以直接將 ICMP 封裝成 Ethernet Frame,不必重新發送 ARP Request。
Wireshark 此時只會看到 ICMP Echo Request 與 Echo Reply。這不代表 ARP 不重要,而是所需的 MAC Address 已經存在 Cache 裡。
清除 ARP Cache 後發生什麼?
為了製造 ARP Cache Miss,我先刪除 Gateway 的 ARP Entry,再執行一次 Ping:
arp -d 10.112.189.148
ping -n 1 10.112.189.148
Wireshark 擷取到以下完整流程:
- Laptop 向 Broadcast 發送 ARP Request,詢問誰擁有
10.112.189.148。 - Gateway 使用 ARP Reply 告知自己的 MAC Address。
- Laptop 取得 Gateway MAC 後,送出 ICMP Echo Request。
- Gateway 回覆 ICMP Echo Reply。

因為 Laptop 一開始不知道 Gateway 的 MAC Address,ARP Request 必須送往 Ethernet Broadcast Address ff:ff:ff:ff:ff:ff。
Gateway 收到 Request 後,可以從 Sender IP 與 Sender MAC 得知 Laptop 的資訊,因此直接以 Unicast ARP Reply 回覆。
補充觀察:實驗中,Gateway 後續也曾直接向 Laptop MAC 發送 Unicast ARP Request,用來確認既有的 IP-to-MAC 對應。因此 ARP Request 並非永遠都是 Broadcast。
為什麼第一個 Ping 沒有 Timeout?
本次實驗中,ARP Request 到 ARP Reply 約花費 1.8 ms,ICMP Echo Request 到 Echo Reply 約花費 1.2 ms。
ARP Resolution 遠低於 Ping 的逾時門檻,因此 Windows 可以先取得 Gateway MAC,再送出等待中的 ICMP 封包。第一個 Ping 仍然成功。
第一次 Ping 不一定會 Timeout。ARP Cache Miss 只表示主機必須先完成 ARP Resolution;是否逾時仍取決於實際的回覆速度與網路狀況。
Ping 外部 IP 時,ARP 查詢的是誰?
接著執行 ping -n 1 1.1.1.1。清除 Cache 後,Laptop 並沒有詢問誰擁有 1.1.1.1,而是再次查詢 Default Gateway 10.112.189.148 的 MAC Address。
原因是 1.1.1.1 不在本地網段。Laptop 必須先把 Ethernet Frame 交給 Default Gateway,再由 Router 繼續轉送。
| Header | Destination |
|---|---|
| Ethernet Header | Default Gateway MAC |
| IPv4 Header | 1.1.1.1 |
也就是說,Layer 2 的目的地是目前這一跳要交付的設備;Layer 3 的目的地才是封包最終要抵達的位置。
結論
- ARP Cache Miss 時,第一次 Ping 可能因為需要先完成 ARP Resolution 而稍慢。
- 如果 ARP Cache 已有紀錄,就能直接送出 ICMP,不會產生新的 ARP 封包。
- 跨網段傳送時,ARP 解析的是 Default Gateway,也就是本地鏈路上的 Next Hop。
IP Address 決定封包最終要去哪裡;MAC Address 則決定目前這一段本地鏈路要先交給誰。

發佈留言