Ping 是網管/資安人員的「聽診器」,利用 ICMP 回送請求/回應(Type 8/0)測試連通性、延遲、封包大小、MTU、TTL 推算躍點。本文整理核心參數、輸出解讀與進階診斷技巧。
核心參數速查表
| 參數 | 說明 | 範例 |
-t | 持續傳送直到 Ctrl+C 停止,監控長期連線品質 | ping -t 8.8.8.8 |
-n count | 指定回送請求次數(預設 4) | ping -n 10 192.168.1.1 |
-l size | 設定傳送緩衝區大小(位元組,預設 32,上限 65500) | ping -l 1472 8.8.8.8(測試 MTU 1500) |
-f | 設定 IP 標頭「不可分片」旗標(DF=1),配合 -l 測試路徑 MTU | ping -f -l 1472 8.8.8.8 |
-i TTL | 設定發送封包初始 TTL(1-255),測試特定躍點可達性 | ping -i 1 8.8.8.8(只能達本地閘道) |
-v TOS | 設定服務類型(TOS/DSCP),測試 QoS 標記轉發 | ping -v 0x80 8.8.8.8(CS5/EF) |
-r count | 記錄路由(IP 選項),最多 9 跳(舊式,現多用 tracert) | ping -r 9 8.8.8.8 |
-s count | 時間戳記(IP 選項),最多 4 跳 | ping -s 4 8.8.8.8 |
-j host-list | 鬆散來源路由(指定中繼清單,易被防火牆丟棄) | ping -j 10.0.0.1 8.8.8.8 |
-k host-list | 嚴格來源路由(強制經過指定節點) | ping -k 10.0.0.1 8.8.8.8 |
-w timeout | 等候回應逾時毫秒數(預設 4000ms) | ping -w 1000 8.8.8.8 |
-R | IPv6 路由標頭測試 | ping -6 -R ::1 |
-S srcaddr | 指定來源 IP(多介面卡/多 IP 主機指定出口) | ping -S 192.168.1.50 8.8.8.8 |
-4 / -6 | 強制使用 IPv4 / IPv6 | ping -6 google.com |
輸出欄位深度解讀
回覆自 192.168.1.1: 位元組=32 時間=1ms TTL=64
- 位元組:回應封包大小(含 ICMP 標頭 8 bytes + 資料)。
- 時間:往返延遲(RTT),單位毫秒。< 1ms 顯示 <1ms。受距離、擁塞、QoS、裝置效能影響。
- TTL (Time To Live):封包剩餘躍點數。初始 TTL 為 2 的冪次(64/128/255),每經過一層路由器 -1。
推算躍點:初始 TTL - 回傳 TTL = 經過路由器數。
常見初始值:Linux/Unix/macOS=64、Windows=128、網路設備=255/254。
範例:回傳 TTL=119 → 128-119=9 跳(Windows 來源);回傳 TTL=55 → 64-55=9 跳(Linux 來源)。
進階診斷技巧
1. 路徑 MTU 發現 (PMTUD)
ping -f -l 1472 目標IP # 1500 MTU - 20 IP頭 - 8 ICMP頭 = 1472
# 成功 → 路徑 MTU ≥ 1500
# 失敗「封包需分片但已設 DF」 → 遞減 -l 直到成功,該值+28 = 路徑 MTU
2. 偵測特定躍點阻斷
ping -i 3 目標IP # TTL=3 只能到第 3 跳
# 若第 3 跳回應 TTL exceeded,代表第 3 跳可達;若超時,第 3 跳或之前有阻斷
3. 同時監控多目標(PowerShell)
$targets = @("8.8.8.8","1.1.1.1","192.168.1.1")
while($true) {
$targets | ForEach-Object {
$r = Test-Connection -Count 1 -ComputerName $_ -ErrorAction SilentlyContinue
[PSCustomObject]@{Time=Get-Date; Target=$_; Latency=if($r){$r.ResponseTime}else{"Timeout"}}
} | Format-Table -AutoSize
Start-Sleep 1
}
4. TTL 值判斷遠端作業系統(參考值,可被修改)
| 回傳 TTL 範圍 | 推測 OS 初始 TTL | 可能作業系統 |
| 120-128 | 128 | Windows 2000/XP/2003/Vista/7/8/10/11、Windows Server |
| 58-64 | 64 | Linux、Unix、macOS、BSD、大多數嵌入式裝置、Android/iOS |
| 250-255 | 255 | Cisco/網路設備、Solaris/AIX 部分版本 |
| 30-32 | 32/64 | Windows 95/98/ME(初始 32)、部分舊版網路設備 |
⚠️ TTL 可被 sysctl net.ipv4.ip_default_ttl、登錄表 DefaultTTL 修改,僅供參考不可當鐵證。
常見錯誤訊息對照
| 訊息 | 含義 | 排查方向 |
| Request timed out | 無回應(ICMP 被封、目標離線、路由不可達、ARP 失敗) | 檢查防火牆、目標電源、路由表、ARP 表、tracert 定位斷點 |
| Destination host unreachable | 路由器明確告知無路由至目標網路 | 檢查本機/中繼路由表、閘道設定、目標網段是否存在 |
| TTL expired in transit | 封包 TTL 歸零被丟棄 | 增加 -i 初始 TTL、檢查路由迴圈 |
| Parameter problem / Packet too big | MTU/分片/選項錯誤 | 調整 -l、-f、檢查 PMTUD 黑洞 |
安全性提醒
- 大量/大封包 Ping 可構成 DoS(Ping of Death、Smurf、Ping Flood),嚴禁對未授權目標發動。
- 生產環境建議在邊界防火牆限制 ICMP 速率(如 5 pps/源 IP),而非完全封鎖(破壞 PMTUD、路由收斂、監控探測)。