Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

PING 指令深度解析:五步連通性診斷、錯誤代碼判讀、鏈路速度估算、完整參數表

編輯:Windows XP 系統介紹

PING (Packet InterNet Groper) 是 TCP/IP 網路診斷最基礎也最強大的工具。本文系統整理標準診斷流程、常見錯誤代碼含義、利用 ICMP 回應估算鏈路速度、完整參數參考表。

標準五步連通性診斷流程

  1. 檢查本機 TCP/IP 設定:`ipconfig /all` 確認 IP、子網路遮罩、預設閘道、DNS 正確。
  2. 測試本機回送位址:`ping 127.0.0.1` 確認 TCP/IP 協定堆疊正常載入。
  3. 測試本機實體 IP:`ping <本機IP>` 確認網卡介面綁定正確、無 IP 衝突。
  4. 測試區域網路閘道/鄰居:`ping <閘道IP>` 或 `ping <同網段主機IP>` 確認二層交換、ARP、實體連線正常。(非區網環境可略過)
  5. 測試遠端/跨網段連通:`ping <遠端IP/域名>` 確認路由、防火牆、ISP 鏈路正常。

常見錯誤代碼判讀

回應訊息含義常見原因排查方向
Request timed outICMP Echo Request 送達但無 Echo Reply 返回目標防火牆封鎖 ICMP / 目標關機 / 本機 IP/閘道設定錯 / IP 衝突檢查目標防火牆規則 / `ipconfig /all` 核對 IP 閘道 / `arp -a` 檢查衝突
Destination host unreachable路由表無法到達目標網路本機子網路遮罩錯誤 / 閘道不可達 / DHCP 失效導致 APIPA (169.254.x.x) / 路由器故障檢查子網路遮罩 / `route print` 核對路由表 / 重啟 DHCP Client 服務 / 聯繫網管
TTL expired in transit封包在路由轉發中 TTL 歸零路由迴路 / TTL 設定過小 / 惡意路由攻擊`tracert` 定位迴路節點 / 檢查路由器設定
Bad IP address域名解析失敗 / IP 格式錯誤DNS 伺服器異常 / 輸入錯誤 / 未連網`nslookup` 測試 DNS / 直接 ping IP 排除解析問題
Source quench路由器/目標回送 ICMP Source Quench 要求降低發送速率網路擁塞 / 目標處理能力不足降低 ping 頻率 (`-w` 增加間隔) / 檢查 QoS 設定

實戰案例:集線器埠故障診斷

環境:19 台電腦接 100M 集線器,DHCP 動態指派 IP。
現象:某用戶 Outlook 無法連線,網頁/檔案共享正常但極慢。
診斷:`ping -t <目標IP>` 發現 `time=30ms` 與 `Request timed out` 交替出現,從伺服器 ping 該機更嚴重。
嘗試:換網卡、重做網線皆無效。
解決:將該網線換到集線器另一埠 → 故障消失。
結論:集線器單埠硬體故障導致間歇性碰撞/封包遺失,`ping -t` 完美暴露此類二層問題。

利用 PING 估算鏈路速度 (理論值)

公式:
`單向傳輸時間 (ms) = (ICMP 封包總位元數) / (鏈路頻寬 bps) * 1000`
`往返時間 RTT ≈ 2 * 單向傳輸時間 + 處理延遲 + 排隊延遲`

範例:33.6 kbps 撥接 (PPP 封裝)
ICMP Echo Request = 8 bytes ICMP header + 20 bytes IP header + 32 bytes data = 60 bytes
PPP 封裝額外 8 bytes (旗標/位址/控制/FCS) → 68 bytes = 544 bits
理論單向 = 544 / 33600 * 1000 ≈ 16.2 ms
理論 RTT ≈ 32.4 ms + 處理延遲

實測:`ping -n 4 <遠端IP>` 平均 RTT 417 ms,差異源自:
① Modem 壓縮 (V.42bis) 減少實際傳輸位元
② 串列埠 UART 緩衝/中斷延遲
③ 遠端伺服器處理延遲
④ 網路擁塞/重傳

⚠️ 局限:區域網路 (100M/1G/10G) RTT < 1 ms,PING 解析度 1 ms 無法量測,需專用儀器 (Ixia, Spirent) 或 `iperf3` 吞吐量測試。

完整參數參考表 (Windows 版 ping.exe)

ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
     [-r count] [-s count] [[-j host-list] | [-k host-list]]
     [-w timeout] [-R] [-S srcaddr] [-4] [-6] target

-t             持續 ping 直到 Ctrl+C 停止
-a             解析 IP 為主機名
-n count       發送 count 個 Echo Request (預設 4)
-l size        封包資料大小 bytes (預設 32, 最大 65527)
-f             設定 Don't Fragment 旗標 (測試 MTU)
-i TTL         設定 Time To Live (1-255)
-v TOS         設定 Type of Service (已棄用)
-r count       記錄路由 (最多 9 跳)
-s count       時間戳記 (最多 9 跳)
-j host-list   鬆散來源路由 (最多 9 跳)
-k host-list   嚴格來源路由 (最多 9 跳)
-w timeout     等待回應逾時毫秒 (預設 4000)
-R             IPv6 路由標頭 (測試反向路由)
-S srcaddr     指定來源 IP 位址
-4             強制 IPv4
-6             強制 IPv6

進階技巧

  • 測試 MTU:`ping -f -l 1472 <目標>` (1472+28=1500) → 若「Packet needs to be fragmented but DF set」遞減 `-l` 直到成功,最大成功值 + 28 = 路徑 MTU。
  • 持續監控記錄:`ping -t <目標> | cmd /q /v:on /c "for /l %%a in () do (set /p line= && echo !date! !time! !line!)" > ping_log.txt`
  • IPv6 測試:`ping -6 ipv6.google.com`
Copyright © Windows教程網 All Rights Reserved