Ping 是 Windows/Linux/macOS 內建的網路達標工具,基於 ICMP Echo Request/Reply (Type 8/0),是網管排查連通性的第一道防線。本文系統整理原理、標準排錯序列、TTL 應用、參數表與進階用法。
預設發送 4 次 (Windows) / 無限 (Linux ping 預設);成功率 100% 且 RTT 穩定 = 連通正常。
ping 127.0.0.1 (或 ping ::1) → 本機 TCP/IP 協定堆疊正常?失敗 = 協定損壞/防火牆封鎖回環/驅動異常。ping 本機 IP (如 192.168.1.50) → 介面卡 IP 配置、網卡驅動、區域網路介面運作?失敗 = IP 衝突/介面停用/驅動問題。ping 同網段其他主機 → 區域網路 L2 連通性 (交換器、纜線、VLAN、STP)?失敗 = 子網掩碼錯、VLAN 不通、交換器埠關閉/錯誤、纜線斷裂。ping 閘道 IP → 區域網路出口可達?失敗 = 閘道 IP 錯、閘道裝置故障、ACL 擋截、VRRP/HSRP 切換中。ping 外部公網 IP (如 8.8.8.8, 1.1.1.1) → 路由/NAT/ISP 骨幹/對端可達?失敗 = NAT 未生效、ISP 骨幹故障、路由黑洞、防火牆封鎖 ICMP。ping localhost → 主機名解析至 127.0.0.1 正常?失敗 = C:\Windows\System32\drivers\etc\hosts 損壞/惡意修改。ping 域名 (如 www.google.com) → DNS 解析鏈完整?失敗 = DNS 伺服器 IP 錯、DNS 服務掛點、域名不存在、DNS 劫持/污染、EDNS/DoH/DoT 衝突。正在 Ping www.google.com [142.250.190.4])。⚠️ 全通 ≠ 完全無問題:子網掩碼錯誤 (如 /23 寫成 /24) 可能仍能 Ping 通部份主機,但跨網段通訊失敗;MTU 黑洞、TCP 窗口縮放、非對稱路由等 Ping 無法偵測。
初始 TTL - 回傳 TTL = 經過路由器數。sysctl net.ipv4.ip_default_ttl、登錄表 DefaultTTL),僅供參考。ping /? / Linux man ping)| Windows | Linux/macOS | 說明 |
|---|---|---|
-t | (預設無限) | 持續 Ping 直到 Ctrl+C |
-n count | -c count | 指定發送次數 |
-l size | -s size | 封包資料大小 (bytes),含 ICMP 頭 8B;配合 -f 測 PMTU |
-f | -M do | 設定 DF (Don't Fragment) 旗標,禁止分片 |
-i TTL | -t TTL | 設定初始 TTL |
-v TOS | -Q TOS | 設定 DSCP/TOS 值 (QoS 測試) |
-w timeout | -W timeout (秒) / -w deadline | 等候回應逾時 (ms/秒) |
-r count | -R (IP 選項) | 記錄路由 (最多 9 跳,現少用) |
-s count | -T timestamp | 時間戳記選項 |
-j host-list | (無直接對應) | 鬆散來源路由 |
-k host-list | (無直接對應) | 嚴格來源路由 |
-4 / -6 | -4 / -6 | 強制 IPv4 / IPv6 |
-S srcaddr | -I interface/src | 指定來源 IP/介面 |
| — | -D | 輸出時間戳 (Unix time) |
| — | -O | 顯示未回應封包 |
| — | --apple-time | macOS 相容時間格式 |
# Windows
ping -f -l 1472 8.8.8.8 # 成功 = 路徑 MTU ≥ 1500
# 失敗時遞減 -l 直到成功,該值 + 28 = 路徑 MTU
# Linux
ping -M do -s 1472 8.8.8.8
$targets = @("8.8.8.8","1.1.1.1","192.168.1.1")
while($true) {
$results = $targets | ForEach-Object {
$r = Test-Connection -Count 1 -ComputerName $_ -ErrorAction SilentlyContinue
[PSCustomObject]@{Time=Get-Date -Format "HH:mm:ss"; Target=$_; Latency=if($r){"$($r.ResponseTime)ms"}else{"Timeout"}}
}
$results | Format-Table -AutoSize
Start-Sleep 1
}
netstat -an / ss -tulnp:檢視連接狀態、監聽埠、TIME_WAIT 堆積。netstat -s / netstat -e:協定統計 (IP/TCP/UDP/ICMP 收發/錯誤/重傳)、介面統計 (位元組/封包/錯誤/丟棄)。