- Ping 使用 ICMP 檢查連接性、延遲和封包遺失
- 關鍵選項:-c、-i、-s、-4/-6、-D、-W/-w 用於精確測試
- Traceroute/tracert 顯示路由並定位有問題的躍點
- 診斷常見錯誤並檢查防火牆可加快解決問題的速度

掌握 Linux 系統中的 ping 指令是排查網路問題的關鍵技能之一。透過 ping 指令,您可以快速檢查網路連線、延遲和可用性,然後再進行更複雜的診斷。
此外,諸如 traceroute/tracert 之類的輔助工具以及 WinMTR 等混合實用程式可以幫助您了解資料包的傳輸路徑。您將學習如何在 Linux、Windows 和 macOS 上使用 ping 命令,解讀輸出結果,調整選項,並快速排除常見錯誤。
什麼是 ping 以及它有什麼用途?
Ping 是一種診斷工具,它會向目標位址(IP 位址、主機或網域名稱)發送 ICMP ECHO_REQUEST 封包,並等待 ECHO_REPLY 回應。它利用 TCP/IP 模型及其各層協定來確定 ICMP 協定在哪一層運作。如果收到回應,則表示主機可達,並測量往返時間 (RTT)。它還會報告資料包大小(以位元組為單位)、生存時間 (TTL) 和丟包率。
在實際應用中,ping 指令每天都會用於驗證網路連線、估算延遲、確認伺服器可用性以及排除基本的網路問題。它是偵測網路中斷、擁塞或問題路由的第一步,之後才會進行進一步的分析。
Ping 的工作原理以及它具體測量什麼
當您 ping 一個目標位址時,該工具會傳送一系列 ICMP 封包,並顯示每個封包的回應。典型的輸出欄位包括位元組數、回應主機、icmp_seq、TTL 和時間(以毫秒為單位),以及最後的統計資訊區塊。
範例回應行:來自 185.185.185.185 的 64 位元組:icmp_seq=1 ttl=64 time=0.1 ms。這裡可以看到可用大小(56 位元組 + 8 位元組 ICMP 頭 = 64 位元組)、序號、資料包生存期和往返時間 (RTT)。最終統計資訊匯總了已發送、已接收、丟包和 RTT 的最小值/平均值/最大值/標準差。
何時使用 ping
Ping 在許多日常場景中都非常有用。它可以檢查您的網站或線上商店是否有回應,VPS 是否正常運行,或者您的 Wi-Fi 裝置上的裝置是否仍然連線。它還可以幫助您識別網路緩慢的原因:高延遲或丟包表示網路擁塞或路由問題。
即使一切看起來正常,偶爾執行 ping 命令也有助於發現潛在問題。建立延遲基線可以幫助您識別網路變化或流量高峰後出現的偏差。
ping 和 traceroute/tracert 之間的區別
ping 命令回答的是經典問題“資料包是否到達以及需要多長時間?”,而 traceroute(Windows 系統下為 tracert)則回答“資料包去了哪裡?”。traceroute 會顯示每個中間躍點及其到達目的地的時間,這對於尋找丟包或瓶頸發生的位置至關重要。
將它們結合起來是理想的選擇:如果 ping 指令顯示訊號遺失,traceroute 指令可以告訴你問題的特定源頭。如果你想在 Windows 系統上使用一個工具來整合這兩個視角,WinMTR 是一個不錯的選擇。
如何在 Windows 中 ping
在 Windows 系統中,開啟命令提示字元(搜尋「cmd」),然後執行命令。基本格式為:ping 目標位址(IP 位址、主機名稱或網域名稱)。預設情況下,它會發送 4 個資料包並顯示統計資料。
ping 8.8.8.8
ping google.com
對於常見的 Windows 選項:-n 定義回顯次數,-l 定義封包大小,-w 定義逾時時間(以毫秒為單位),-i 定義 TTL(生存時間)。例如,發送 10 個 1400 位元組的資料包:
ping -n 10 -l 1400 google.com
如何在 macOS 上 ping
在 macOS 系統中,開啟「終端」(應用程式 > 實用工具 > 終端)或使用 Spotlight。輸入:ping target,然後按 CTRL + C查看摘要。
ping 8.8.4.4
ping google.com
您也可以在包含舊版網路實用工具的版本中使用它。請注意,macOS 的許多語法與 Linux 相同,許多選項也相同。
如何在 Linux 中 ping
在 Linux 系統中,開啟終端機(例如,使用 Ctrl + Alt + T),然後執行命令。 Ping指令會持續執行,直到您按下 Ctrl + C,之後您將看到統計資料區塊。
ping 1.1.1.1
ping localhost
如果您需要檢查 ping 是否已安裝或其版本,可以直接進行檢查。在 Ubuntu/Debian 系統中,常用的軟體包是 iputils-ping。
ping -V
sudo apt-get update && sudo apt-get install -y iputils-ping
通用語法和基本選項
通用格式為:ping 目標位址。目標位址可以是 IP 位址、主機名稱或網域名稱;如果使用域名,則會透過 DNS 解析。
- -c N (Linux/macOS):限制軟體包數量。有助於防止測試運行。
- -a (Linux/macOS/Windows):可聽見的 ping 聲;每次回應都會發出嗶聲,對於後台診斷非常有用。
- -i SEG (Linux/macOS):資料包間隔(以秒為單位);支援小數。所需權限少於 0.2 秒。
- -q (Linux/macOS):靜默輸出;僅顯示統計摘要。
- -4 / -6 (Linux/macOS):分別強制 IPv4 或 IPv6。 在分割二進位檔案的系統上,ping6 是 IPv6 變體。.
- -s 位元組 (Linux/macOS):ICMP 有效負載大小。預設值:56 位元組(含 IP+ICMP 標頭共 84 字節,額外 28 位元組)。
- -D (Linux/macOS):在每行開頭新增類似 UNIX 的時間戳記。
- -W SEG (Linux/macOS):每個回顯回應的最大等待時間;如果超過,則視為逾時。
- -w SEG (Linux/macOS):自動結束前的總測試時間。
鮮為人知的進階選項
對於精細診斷,ping 指令提供了一系列豐富的參數選項。這些選項可以幫助您調整路由、緩衝區、MTU、標籤和資訊可見度:
- -A:自適應 ping(根據響應調整速率)。
- -b:允許 ping 廣播位址。
- -B:不要修改探測的來源位址。
- -d:在套接字上啟用 SO_DEBUG。
- -F 流標籤(IPv6):為回顯請求分配一個 20 位元十六進位流標籤。
- -h:顯示快速幫助。
- -I 介面:設定輸出介面。 對於具有多個 NIC 的計算機非常有用.
- -l 預先載入:發送幾個初始資料包而不等待回應(高值需要特權)。
- -L:阻止多播環回。
- -m 標記:標記傳出的資料包(對於路由策略有用)。
- -M pmtudisc_opt:控制路徑 MTU 發現策略。 使用適當的 -M 和 -s 檢測有效 MTU.
- -N 節點資訊 (IPv6):節點資訊選項。
- -n:數字輸出;避免解析名稱。
- -O:報告下次提交之前的待處理回應。
- -p 模式:以一種模式(最多 16 個位元組)填滿有效載荷,以偵測與資料相關的問題。
- -什麼咳嗽:定義TOS/DSCP。
- -r:忽略正常路由表;直接從相鄰介面轉送。
- -R:記錄路線(受中級支援限制)。
- -S sndbuf:套接字發送緩衝區的大小。
- -t 生存時間 (Linux):定義 IP TTL。 在 Windows 上,TTL 使用 -i 設定.
- -T:特殊 IP 時間戳選項(tsonly、tsandaddr、tsprespec)。
- -U:顯示使用者到使用者的總延遲,而不僅僅是網路延遲。
- -v:詳細輸出; -V 顯示版本。
實踐案例:從基礎到高級
檢查網路連線和網域解析是第一步。您可以交替 ping 網域和 IP 位址來隔離DNS 問題。
ping google.com
ping 8.8.8.8
檢查本機堆疊可以節省您的時間:如果此方法失敗,則問題出在您自己的電腦上,而不是外部網路。
ping localhost
ping 127.0.0.1
ping 0
在具有多個網路卡的網路中,驗證特定介面也很常見。強制指定出站介面有助於明確路由和路由表。
ping -I enp7s0 1.1.1.1
限制用於快速測試或腳本的軟體包數量是一種經典做法。-c 參數定義軟體包數量,-q 參數則減少冗餘訊息,同時保留清晰的摘要。
ping -c 5 -q 9.9.9.9
調整採樣間隔可以在更短的時間內採集更多樣本,或降低系統負載。在 Linux 系統上,低於 0.2 秒的採樣間隔需要管理員權限。
ping -i 3 31.13.90.36
sudo ping -i 0.1 31.13.90.36
測試不同的資料包大小可以檢測出 MTU 或分片問題。請記住,IP 資料包的理論最大大小為 65.535 字節,包括資料包頭部。
ping -s 1000 8.8.4.4
ping -M do -s 1472 google.com
時間戳使峰值與事件關聯起來更加容易。-D 參數會將 UNIX 時間戳記加入到回應的每一行。
ping -D cloudflare.com
解釋輸出和統計數據
每行回應資料代表一次測量結果;最後一行匯總了所有測量結果。請特別注意丟包率、最小/平均/最大往返時間 (RTT)、平均發展時間 (MDDT) 和時間一致性,以評估穩定性。
--- destino ping statistics ---
X packets transmitted, Y received, Z% packet loss
rtt min/avg/max/mdev = A/B/C/D ms
建立基準:在正常情況下重複進行 ping 測試,並儲存平均值。如果平均延遲或平均偏差 (mdev) 之後增加,則表示您的網路發生了某些變化(負載、路由、飽和度或效能下降)。
常見錯誤及其診斷方法
如果沒有收到回應且逾時時間未到期,主機可能會丟棄 ICMP 請求。一些伺服器和 CDN 會出於策略考慮而阻止回顯請求,但這並不一定意味著服務會中斷。
「目標主機不可達」訊息可能來自您的電腦或中間路由器。如果訊息來自您的主機,則表示沒有路由;如果訊息來自遠端躍點,則表示外部網路沒有到達目標主機的路徑。
「請求逾時」表示請求已發送但未收到回應。這可能是由於中間丟包、過濾或路由不對稱造成的。在這種情況下,請使用 traceroute 指令定位問題躍點。
如果您使用防火牆,請檢查相關規則。在 Linux 系統中,針對 ICMP 的 DROP/REJECT 規則會阻止傳送或接收回顯請求,導致系統顯示所有服務都已中斷。
sudo iptables -L
# Localiza reglas sobre ICMP con DROP/REJECT
# Ajusta o elimina si procede (ejemplo genérico):
sudo iptables -D RULE_SPECIFICA
在行動裝置上 Ping
Android 和 iOS 系統本身並沒有提供可透過標準介面存取的原生 ping 功能。最簡單的方法是使用專門的應用程式進行快速、隨時隨地的測試。
在安卓系統上,「Ping & Net」之類的應用效果不錯;在iOS系統上,「Network Ping Lite」是一個可靠的選擇。無需為了使用ping功能而進行root或越獄;一款值得信賴的應用程式就足夠了。安裝前請查看應用程式的評分和權限說明。
Traceroute和tracert:查看資料包的路徑
Linux 和 macOS 上的 traceroute 以及 Windows 上的 tracert 會顯示從你的電腦到目標位址的每一跳。每一行都指示中間路由器以及每次嘗試的時間。如果在某個節點之後看到星號,則表示該路由已被截斷或過濾。
# Windows
tracert ejemplo.com
# macOS/Linux
traceroute ejemplo.com
在經典的 macOS 系統中,如果可用,您可以使用“網路實用工具”,它通常會附帶專門的路由追蹤標籤頁。在伺服器環境中,「終端」將是您的主要工具。
使用 WinMTR 進行持續監控
WinMTR 結合了 Windows 系統上的 ping 和 traceroute 功能,可以顯示路由隨時間推移的穩定性。輸入主機或 IP 位址,執行測試約 10-15 分鐘,然後複製報告以供分析或技術支援。
1) Descarga WinMTR (proyecto en SourceForge)
2) Field 'Host': escribe dominio o IP
3) Start y deja correr ~15 minutos
4) Usa 'Copy Text to clipboard' para compartir el resultado
良好做法和使用技巧
指向多個目標位置以隔離問題:您的網關、一個知名的 DNS 伺服器以及最終主機。比較結果將揭示故障是出在內部、營運商或目標主機。
除非在受控測試中,否則請避免過度使用泛洪模式。-f 參數會以最大速度發送資料包,並可能模擬流量高峰;請在獲得許可並明確使用條件後再使用。
sudo ping -f destino
它整合了多種工具,提供全面的資訊。 Traceroute可以定位問題躍點;iperf 可以測量頻寬;Wireshark 則支援深度資料包分析,方便您深入了解細節。
在啟用 IPv6 的環境中,請同時驗證兩種協定。根據需要強制使用 -4 或 -6 參數,以排除優先權或雙棧解析問題。
Windows、macOS 和 Linux 中的選項和特性
這些參數在不同系統中有所不同。在 Linux/macOS 系統中,-c 用於限制封包數量,-i 用於指定封包範圍,-s 用於指定封包大小,-t 用於指定 TTL(生存時間)。在 Windows 系統中,-n、-l、-wy 和 -i 的作用類似(但單位和作用範圍有所不同)。
以下是各系統的實用範例:Windows:ping -n 4 -l 1200 domain;Linux/macOS:ping -c 4 -s 1200 domain。如果您不確定確切的語法,請查閱本地幫助。
# Linux/macOS
ping -c 4 -s 1200 google.com
ping -4 google.com
ping -6 google.com
# Windows
ping -n 4 -l 1200 google.com
DNS 檢查和名稱解析
ping 一個網域可以驗證 DNS 解析是否正確。如果網域名稱解析成功,您會在輸出標頭中看到目標 IP 位址;如果解析失敗,請檢查您的 DNS 設定或hosts 檔案。
使用 nslookup 等輔助工具來驗證日誌。 Ping指令檢查網路連通性;nslookup 則提供 DNS 數據,解釋異常解析結果。
nslookup ejemplo.com
安全性、協定限制和 MTU
某些設備出於策略考慮或為了防止濫用,會阻止 ICMP 協議。不要因為沒有 ping 回應就斷定服務中斷;請透過 TCP/HTTP 協定或使用服務自帶的工具進行檢查。
請記住,Linux 中的預設有效載荷為 56 位元組;加上頭部,總大小增加到 84 位元組。 IP封包限制為 65.535 位元組(包括頭部),因此 -s 參數的可用大小必須考慮到開銷。
為了在不產生碎片的情況下測量路徑 MTU,請將 DF/PMTUD 與逐漸增大的路徑大小結合使用。調整 -M 和 -s 參數後,您將看到由於 MTU 不足而導致測量失敗的臨界點。
ping -M do -s 1472 ejemplo.com
快速常見問題解答
ping 究竟檢查什麼?它檢查IP 連接性和通過 ICMP 協定的往返時間,並報告丟包和延遲。
為什麼有些網域有時不回應 ping 請求?因為很多伺服器會過濾 ICMP 封包。但 Web 服務本身可能仍在正常運作。
如何在 Linux 和 macOS 上縮短 ping 指令的執行時間?使用 CTRL + C;此時會列印出統計摘要。
可以使用 ping 指令存取 IPv6 位址嗎?可以,在 IPv6 位址和 IPv6 位址分離的系統上使用 ping6 指令即可。您將看到 IPv6 位址和路由資訊。
Ping 功能可以在行動裝置上使用嗎?可以,使用專用應用程式即可。避免不必要的 root/越獄操作,並選擇信譽良好的應用程式。
有了這份詳盡的指南,您可以從基礎入門到精通 ping 命令:您可以驗證本地和遠端連接,調整測試間隔和資料包大小,診斷丟包,使用 traceroute 查看路由信息,並使用 WinMTR 記錄測試結果。有系統地使用這些工具可以節省您大量的盲測時間,並使您能夠在面對任何網路問題時精準應對。