使用 PsPing & PaPing 進行 TCP 埠連通性測試
PsPing & PaPing 介紹
通常,我們測試資料包能否通過 IP 協議到達特定主機時,都習慣使用 ping 命令。工作時 ping 向目標主機發送一個 IMCP Echo 請求的資料包,並等待接收 Echo 響應資料包,通過響應時間和成功響應的次數來估算丟包率和網路時延。但是在 Azure 中,ICMP 包無法通過防火牆和負載均衡器,所以不能直接使用 ping 來測試 Azure 中的虛擬機器和服務的連通性(VPN 和 Express Route 通道中的流量不經過負載均衡器,所以只要鏈路上的防火牆允許 ICMP 包傳遞,ping 依然可用)。
為了在 Azure 中進行連通性測試,例如測試 RDP、SSH 埠可用性,或者 HTTP、HTTPS 服務穩定性,甚至測試從 Azure 向外部服務的連線,我們都推薦使用 PsPing 或 PaPing。PsPing 是微軟 PSTools 工具套件中的其中一個命令。除了ICMP ping 測試,它主要用來測試 TCP 埠的連通性,還可以測試 TCP/UDP 網路時延和頻寬。不過, PsPing 只能在 Windows 中執行。如果您需要在 Linux 中發起 TCP 埠連通性和網路時延的測試,可以使用 PaPing 。PaPing 是一個跨平臺的開源工具。它的功能相對 PsPing 而言更簡單,只支援 TCP 埠的相關測試,不支援 UDP 埠的測試。
PsPing
下載和安裝
PsPing 下載地址包含了它的詳細使用方法,若有需要可以檢視此頁面上的幫助資訊。下載完後,可以單獨將 psping.exe 命令解壓出來放在任意路徑,然後從命令提示符來執行。當然,您也可以將整個壓縮包解壓到指定的路徑來獲取壓縮包內完整的 PSTools 工具套件。
使用方法
開啟命令列提示符視窗,進入到 psping.exe 所在的目錄,就可以執行 PsPing 了。如前文所述,PsPing 支援的測試方法有很多,這裡我們主要介紹針對 TCP 埠的連通性測試。最簡單的測試方法就是直接在 psping.exe 命令後面加上要測試的主機名和埠,然後執行。這裡以從 Azure 內部測試 www.azure.cn 的 TCP-80 埠為例,命令為psping.exe www.azure.cn:80
C:\Tools>psping www.azure.cn:80 PsPing v2.10 - PsPing - ping, latency, bandwidth measurement utility Copyright (C) 2012-2016 Mark Russinovich Sysinternals - www.sysinternals.com TCP connect to 116.211.251.197:80: 5 iterations (warmup 1) ping test: Connecting to 116.211.251.197:80 (warmup): from 10.91.1.4:51413: 34.69ms Connecting to 116.211.251.197:80: from 10.91.1.4:51414: 29.11ms Connecting to 116.211.251.197:80: from 10.91.1.4:51415: 30.56ms Connecting to 116.211.251.197:80: from 10.91.1.4:51416: 49.02ms Connecting to 116.211.251.197:80: from 10.91.1.4:51417: 43.84ms TCP connect statistics for 116.211.251.197:80: Sent = 4, Received = 4, Lost = 0 (0% loss), Minimum = 29.11ms, Maximum = 49.02ms, Average = 38.13ms
我們可以看到,PsPing 獲取到 www.azure.cn
的IP為 175.25.168.95
。隨後進行了一次熱身測試,熱身測試的目的在於使正式的測試資料更準確。最終統計結果只計算 4 次正式測試資料。其中,統計結果第一行包含傳送請求的次數,接收到迴應的次數,連線丟失的次數以及丟失百分比。第二行為最小、最大以及平均的響應時延。 我們還可以在命令列中新增引數來定義 PsPing 進行測試的方式。以下為 PsPing 進行 TCP 連線測試時所支援的引數:
-t 類似於 ICMP 的長 ping 測試,直到按下 Ctrl+C 停止測試,並顯示統計結果;
-n 指定測試次數。還可以指定測試的時間長度,以秒為單位,使用時在數字後加上 s,例如“10s”;
-i 每次測試的間隔,預設為 1 秒。還可以指定為 0 來進行快速 ping 測試;
-w 熱身次數,預設為 1 次;
-q 測試過程中不輸出結果,結束後顯示統計結果;
-h 將時延結果統計為直方圖列印(預設列印 20行),也可以指定結果行數,比如 -h 10,指定 10 行;另一種使用方法是統計自定義時延,比如 -h "65,70",結果將統計時延分別為 65 和 70 毫秒的次數;
-4 強制使用 IPv4;
-6 強制使用 IPv6;
更多時候,我們指定測試次數,例如 500 次、1000 次。待測試結束後檢視統計結果,根據連線成功率和 TCP 響應時延來判斷被檢測服務的可用性和穩定性。不過,由於是測試 TCP 連線,測試時不排除被測試服務有一定的防護機制,對連續、大量的 TCP 連線採取拒絕服務或者限制服務,導致測試結果看起來很槽糕。這需要測試人對被測試服務有一定的瞭解。
我們還是以測試 www.azure.cn
為例,測試 500 次連線的命令為 psping.exe -n 500 www.azure.cn:80
C:\Tools>psping -n 500 www.azure.cn:80
PsPing v2.10 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
TCP connect to 175.25.168.95:80: 501 iterations (warmup 1) ping test: Connecting to 175.25.168.95:80 (warmup): from 10.91.1.4:51531: 2.28ms Connecting to 175.25.168.95:80: from 10.91.1.4:51532: 1.86ms Connecting to 175.25.168.95:80: from 10.91.1.4:51533: 2.67ms .................... Connecting to 175.25.168.95:80: from 10.91.1.4:52029: 1.90ms Connecting to 175.25.168.95:80: from 10.91.1.4:52030: 2.69ms Connecting to 175.25.168.95:80: from 10.91.1.4:52031: 2.69ms Connecting to 175.25.168.95:80: from 10.91.1.4:52032: 2.39ms
TCP connect statistics for 175.25.168.95:80:
Sent = 500, Received = 500, Lost = 0 (0% loss),
Minimum = 1.49ms, Maximum = 4.72ms, Average = 2.35ms
PaPing
下載和安裝
PaPing 下載網址,其中 32 位 Linux 對應的壓縮包為 paping_1.5.5_x86_linux.tar.gz
,64 位的 Linux 對應的壓縮包為 paping_1.5.5_x86-64_linux.tar.gz
。下載完成後,直接解壓到任意路徑,就可以直接執行了。
以 64 位 Linux 為例:
#cd ~
#wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/paping/paping_1.5.5_x86-64_linux.tar.gz
#tar zxvf paping_1.5.5_x86-64_linux.tar.gz
使用方法
PaPing 的使用方法與 PsPing 非常相似,甚至更簡單,功能更單一。PaPing 所支援的引數如下:
-p, --port N 指定被測試服務的 TCP 埠(必須);
--nocolor 遮蔽彩色輸出;
-t, --timeout 指定超時時長,單位為毫秒,預設值為 1000;
-c, --count N 指定測試次數。
預設 PaPing 的結果會根據 Shell 的色彩配置輸出不同顏色。如果您將結果通過“>”輸出到檔案,建議使用 --nocolor
引數。這樣輸出的檔案中就不會包含色彩相關的字元,更方便後期處理。
同樣以測試 500 次對 www.azure.cn
的 80 埠的 TCP 連線為例,跳轉到 PaPing 所在的路徑後,執行 ./paping -p 80 -c 500 www.azure.cn
。
[[email protected] ~]$ ./paping -p 80 -c 500 www.azure.cn paping v1.5.5 - Copyright (c) 2011 Mike Lovell Connecting to 1stcncloud.dtwscachev290.ourwebcdn.com [112.17.28.203] on TCP 80: Connected to 112.17.28.203: time=8.26ms protocol=TCP port=80 Connected to 112.17.28.203: time=7.48ms protocol=TCP port=80 Connected to 112.17.28.203: time=9.62ms protocol=TCP port=80 Connected to 112.17.28.203: time=8.54ms protocol=TCP port=80 .................... Connected to 112.17.28.203: time=9.59ms protocol=TCP port=80 Connected to 112.17.28.203: time=11.79ms protocol=TCP port=80 Connected to 112.17.28.203: time=8.14ms protocol=TCP port=80 Connected to 112.17.28.203: time=10.94ms protocol=TCP port=80 Connected to 112.17.28.203: time=22.35ms protocol=TCP port=80 Connection statistics: Attempted = 500, Connected = 500, Failed = 0 (0.00%) Approximate connection times: Minimum = 6.46ms, Maximum = 25.00ms, Average = 12.40ms
Troubleshooting with the Windows Sysinternals Tools
https://docs.microsoft.com/zh-cn/sysinternals/learn/troubleshooting-book
Table of Contents
- Part I: Getting started
- Chapter 1 Getting started with the Sysinternals utilities
- Chapter 2 Windows core concepts
- Part II: Usage guide
- Chapter 3 Process Explorer
- Chapter 4 Autoruns
- Chapter 5 Process Monitor
- Chapter 6 ProcDump
- Chapter 7 PsTools
- Chapter 8 Process and diagnostic utilities
- Chapter 9 Security utilities
- Chapter 10 Active Directory utilities
- Chapter 11 Desktop utilities
- Chapter 12 File utilities
- Chapter 13 Disk utilities
- Chapter 14 Network and communication utilities
- Chapter 15 System information utilities
- Chapter 16 Miscellaneous utilities
- Part III: Troubleshooting — "The Case of the Unexplained..."
- Chapter 17 Error messages
- Chapter 18 Crashes
- Chapter 19 Hangs and sluggish performance
- Chapter 20 Malware
- Chapter 21 Understanding system behavior
- Chapter 22 Developer troubleshooting