ping 命令以前是一個很好用並且常用的網絡測試工具,它是基於 ICMP 協議,但是出於網絡安全等因素,大部分網絡環境以及雲環境可能都會禁止 ICMP 協議,所以在工作中,我們必須掌握一些其他比較流行的網絡測試工具,下面分別介紹 tcpping、tcping、psping、hping、paping 等幾款網絡測試工具。
關於 ICMP 概念:
ICMP 是(Internet Control Message Protocol)Internet 控制報文協議。它是 TCP/IP 協議族的一個子協議,用於在 IP 主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起着重要的作用。
tcpping 介紹
tcpping 工具工作在 TCP 層,通過發送偽造的 TCP SYN 包並偵聽來自服務器或中間設備返回的 SYN/ACK 或 RST 。代碼100多行,源代碼在此鏈接http://www.vdberg.org/~richard/tcpping,tcpping需要調用tcptraceroute。打印與ping近乎相同測試結果,目前版本為V1.7,tcping的介紹參考鏈接http://www.vdberg.org/~richard/tcpping.html,這個是Richard van den Berg在2002年編寫的,作者當時需要測量TCP往返時間。所以寫了這個腳本。tcpping只支持Linux。不支持Windows平台。
tcpping 安裝
1: tcpping 腳本依賴 tcptraceroute 組件,所以必須先安裝 tcptraceroute
#yum install tcptraceroute
2:下載tcpping文件
wget [http://www.vdberg.org/~richard/tcpping](http://www.vdberg.org/~richard/tcpping)
3:將 tcpping 文件移動到 /usr/bin 下並授權。
# mv tcpping /usr/bin/
# cd /usr/bin
# chmod 755 tcpping
tcpping****測試
tcpping幫助信息。
參數 | 參數描述 |
---|---|
-d | 在每個結果輸出前打印時間戳 |
-c | 將結果輸出在一列 |
-C | 輸出與fping的-C選項相同的打印格式 |
-w | Wait time in seconds (defaults to 3) |
-r | -r n:每n秒重復一次(默認為1) |
-x | 重復n次(默認為無限制) |
tcping 介紹
tcping 也是通過 tcp 端口工作,tcping 還能監聽某個端口的狀態,注意 tcping 與 tcpping 是不同的兩款工具,另外 tcping 也有很多版本。如下所示:
來自 kirchner 源代碼的 TCPing
來自 Eli Fulkerson 源代碼的 TCPing
tcping****安裝
Windows 平台:
從https://www.elifulkerson.com/projects/tcping.php下載該工具后。放到 C:\Windows\System32 目錄下即可。無需安裝。
Linux 平台:
linux 平台較多,安裝方式也較多,當然最簡單的莫過於 yum 安裝。測試感覺 Linux 下的這款工具功能過於簡單。
yum install tcping
tcping 測試
Eli Fulkerson 寫的 Windows 下的 tcping 功能十分強大。參數多到不想去總結,實在是太多了,如果不清楚,每次使用的時候查看幫助文檔即可。
C:\Users>tcping www.aliyun.com
Probing 140.205.172.20:80/tcp - Port is open - time=2.444ms
Probing 140.205.172.20:80/tcp - Port is open - time=2.574ms
Probing 140.205.172.20:80/tcp - Port is open - time=2.965ms
Probing 140.205.172.20:80/tcp - Port is open - time=4.074ms
Ping statistics for 140.205.172.20:80
4 probes sent.
4 successful, 0 failed.
Approximate trip times in milli-seconds:
Minimum = 2.444ms, Maximum = 4.074ms, Average = 3.014ms
C:\Users>tcping www.aliyun.com 80
Probing 140.205.172.20:80/tcp - Port is open - time=2.731ms
Probing 140.205.172.20:80/tcp - Port is open - time=2.126ms
Probing 140.205.172.20:80/tcp - Port is open - time=2.916ms
Probing 140.205.172.20:80/tcp - Port is open - time=2.609ms
Ping statistics for 140.205.172.20:80
4 probes sent.
4 successful, 0 failed.
Approximate trip times in milli-seconds:
Minimum = 2.126ms, Maximum = 2.916ms, Average = 2.595ms
Linux:
Linux 下的 tcping 命令功能非常簡單,如下所示,感覺沒有 tcpping 或 Windows 下的 tcping 功能強大。
Usage: tcping [-q] [-t timeout_sec] [-u timeout_usec] <host> <port>
[root@DB-Server ~]# tcping 192.168.27.57 1433
192.168.27.57 port 1433 open.
PsPing介紹
下面是官方文檔以及 Azure 官方文檔關於 PsPing 的介紹資料,這些介紹已經全面的闡述了 PsPing 這款工具:
PsPing implements Ping functionality, TCP ping, latency and bandwidth measurement. Use the following command-line options to show the usage for each test type:
通常,我們測試數據包能否通過 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安裝
PSTool 工具包可以從微軟官方網址下載:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psping 。 解壓 PSTools.zip 包后,將 psping.exe 拷貝到 C:\Windows\System32 下,那么你在 cmd 命令窗口的任意目錄都可以使用 PsPing 命令了。當然你也可以單獨將 psping.exe 命令解壓出來放在任意路徑,然后從命令提示符來運行。只是這樣就需要在運行命令前轉換到 psping.exe 所在的路徑。
PsPing 參數
psping 幫助信息查看,如下所示 psping 四個主要功能的幫助命令,四個功能分別是 ICMP Ping、TCP Ping、延遲測試、帶寬測試。
ping 測試
參數 | 參數說明 |
---|---|
-h | 輸出直方圖(默認步長數量為20) |
-i | 指定ping包的間隔秒數,快ping則設置為0 |
-l | 指定ping包大小,默認單位是byte。使用 k為單位代表kilobytes(KB),使用m為單位代表megabytes(MB) |
-n | 指定測試次數。還可以指定測試的時間長度,以秒為單位,使用時在數字后加上s,例如“10s” |
-q | 測試過程中不輸出結果,結束后顯示統計結果 |
-t | 類似於 ICMP 的長 ping 測試,直到按下 Ctrl+C 停止測試,並顯示統計結果 |
-w | 熱身次數,默認為 1 次 |
-4 | 強制使用 IPv4 |
-6 | 強制使用 IPv6 |
延遲測試多了參數-r,-u,-f
參數 | 參數說明 |
---|---|
-f | Open source firewall port during the run. |
-u | 使用UDP ping(默認是TCP) |
-h | 輸出直方圖(默認步長數量為20) |
-r | 從服務器接收代替發送 |
-i | 指定ping包的間隔秒數,快ping則設置為0 |
-l | 指定ping包大小,默認單位是byte。使用 k為單位代表kilobytes(KB),使用m為單位代表megabytes(MB) |
-n | 指定測試次數。還可以指定測試的時間長度,以秒為單位,使用時在數字后加上s,例如“10s” |
-q | 測試過程中不輸出結果,結束后顯示統計結果; |
-t | 類似於 ICMP 的長 ping 測試,直到按下 Ctrl+C 停止測試,並顯示統計結果; |
-w | 熱身次數,默認為 5 次 |
-4 | 強制使用 IPv4 |
-6 | 強制使用 IPv6 |
-s | 服務器監聽地址和端口 |
C:\Users>psping -? b
PsPing v2.10 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2016 Mark Russinovich
Sysinternals - [www.sysinternals.com](http://www.cnblogs.com/kerrycode/p/www.sysinternals.com)
TCP and UDP bandwidth usage:
server: psping [-6|-4] [-f] -s address:port
client: psping -b -l requestsize[k|m] -n count[s] [-r] [-u [target]] [-i outstan
ding] [-w count] [-f] [-h [buckets|val1,val2,...]] [-6|-4] destination:port
-b Bandwidth test.
-l Request size. Append 'k' for kilobytes and 'm' for megabytes.
-n Number of sends/receives. Append 's' to specify seconds e.g. '10s'.
-r Receive from the server instead of sending.
-u UDP (default is TCP). Specify target bandwidth in MB/s.
-i Number of outstanding I/Os (default is min of 16 and 2x CPU cores).
-w Warmup for the specified iterations (default is 2x CPU cores).
-f Open source firewall port during the run.
-h Print histogram (default bucket count is 20).
If you specify a single argument, it's interpreted as a bucket
count and the histogram will contain that number of
buckets covering the entire time range of values.
Specify a comma-separated list of times to create a custom
histogram (e.g. "0.01,0.05,1,5,10").
-4 Force using IPv4.
-6 Force using IPv6.
-s Server listening address and port.
The server can serve both latency and bandwidth tests and remains active until
you terminate it with Control-C.
帶寬測試多了 -b、-i 兩個參數。如下所示:
-b 帶寬測試
-i 未完成的I/O數量
PsPing****測試案例
例子1,例如我要檢查服務器的1433端口是否開放
例子2:網絡時延測試
C:\Users>psping -n 6 -w 2 -h xxxxxx.database.chinacloudapi.cn:1433
PsPing v2.10 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
TCP connect to 139.219.130.35:1433:
8 iterations (warmup 2) ping test:
Connecting to 139.xxx.130.xx:1433 (warmup): from 192.168.103.21:57851: 36.10ms
Connecting to 139.xxx.130.xx:1433 (warmup): from 192.168.103.21:57852: 36.32ms
Connecting to 139.xxx.130.xx:1433: from 192.168.103.21:57853: 40.33ms
Connecting to 139.xxx.130.xx:1433: from 192.168.103.21:57854: 34.71ms
Connecting to 139.xxx.130.xx:1433: from 192.168.103.21:57855: 35.60ms
Connecting to 139.xxx.130.xx:1433: from 192.168.103.21:57856: 35.74ms
Connecting to 139.xxx.130.xx:1433: from 192.168.103.21:57858: 40.21ms
Connecting to 139.xxx.130.xx:1433: from 192.168.103.21:57859: 39.50ms
TCP connect statistics for 139.xxx.130.xxx:1433:
Sent = 6, Received = 6, Lost = 0 (0% loss),
Minimum = 34.71ms, Maximum = 40.33ms, Average = 37.68ms
Latency Count
34.71 1
35.01 0
35.30 0
35.60 2
35.89 0
36.19 0
36.49 0
36.78 0
37.08 0
37.37 0
37.67 0
37.96 0
38.26 0
38.56 0
38.85 0
39.15 0
39.44 1
39.74 0
40.03 1
40.33 1
例子3:網絡帶寬測試
paping 安裝測試
paping的下載地址如下,它分Windows和Linux版本。
https://code.google.com/archive/p/paping/downloads
tar -xvf paping_1.5.5_x86-64_linux.tar.gz
解壓到任意目錄,就可以直接執行。另外 paping 命令對比 psping 命令,功能更簡單、單一。它只有簡單的4個參數。
-p, --port N 指定被測試服務的 TCP 端口(必須);
--nocolor 屏蔽彩色輸出;
-t, --timeout 指定超時時長,單位為毫秒,默認值為 1000;
-c, --count N 指定測試次數。
[root@DB-Server tmp]# ./paping -?
paping v1.5.5 - Copyright (c) 2011 Mike Lovell
Syntax: paping [options] destination
Options:
-?, --help display usage
-p, --port N set TCP port N (required)
--nocolor Disable color output
-t, --timeout timeout in milliseconds (default 1000)
-c, --count N set number of checks to N
[root@DB-Server tmp]# ./paping --nocolor -p 80 -c 10 www.azure.cn
paping v1.5.5 - Copyright (c) 2011 Mike Lovell
Connecting to 1stcncloud.dtwscachev290.ourwebcdn.com [27.155.71.36] on TCP 80:
Connected to 27.155.71.36: time=0.39ms protocol=TCP port=80
Connected to 27.155.71.36: time=0.33ms protocol=TCP port=80
Connected to 27.155.71.36: time=0.73ms protocol=TCP port=80
Connected to 27.155.71.36: time=0.48ms protocol=TCP port=80
Connected to 27.155.71.36: time=0.49ms protocol=TCP port=80
Connected to 27.155.71.36: time=0.39ms protocol=TCP port=80
Connected to 27.155.71.36: time=0.37ms protocol=TCP port=80
Connected to 27.155.71.36: time=0.35ms protocol=TCP port=80
Connected to 27.155.71.36: time=0.47ms protocol=TCP port=80
Connected to 27.155.71.36: time=0.52ms protocol=TCP port=80
Connection statistics:
Attempted = 10, Connected = 10, Failed = 0 (0.00%)
Approximate connection times:
Minimum = 0.33ms, Maximum = 0.73ms, Average = 0.45ms
Hping 介紹
Hping 是一個命令行下使用的 TCP/IP 數據包組裝/分析工具,其命令模式很像 Unix 下的 ping 命令,但是它不僅能發送 ICMP 回應請求,它還可以支持 TCP、UDP、ICMP 和 RAW-IP 協議,它有一個路由跟蹤模式,能夠在兩個相互包含的通道之間傳送文件。Hping 常被用於檢測網絡和主機,其功能非常強大,可在多種操作系統下運行,如 Linux,FreeBSD,NetBSD,OpenBSD,Solaris,MacOs X,Windows。目前最新的版本為 hping3
Hping 的主要功能有:
1、防火牆測試
2、高級端口掃描
3、網絡檢測,可以用不同的協議、服務類型(TOS)、IP分片
4、手工探測MTU(最大傳輸單元)路徑
5、先進的路由跟蹤,支持所有的協議
6、遠程操作系統探測
7、遠程的運行時間探測
8、TCP/IP堆棧審計
Hping 的官方網址為http://www.hping.org/,開發者為是 Salvatore Sanfilippo.
Hping 安裝
Hping 這個項目在 GitHub 上,https://github.com/antirez/hping,可以直接從這里下載安裝。另外如果 yum 源有安裝程序,使用 yum 安裝最方便、快捷。
yum install hping3
下面是官方文檔的源碼安裝,不過源碼安裝需要依賴一些組件,想必yum安裝麻煩很多:
Linux
-----
please, follows this steps:
$ ./configure (first try ./configure --help)
$ vi Makefile (optional)
$ make
$ su
# make install
FreeBSD, OpenBSD, NetBSD
------------------------
You will need the libpcap and the gmake utility installed on your system.
$ ./configure
$ gmake
$ su (or calife)
# gmake install
Hping****測試
查看hping的幫助信息:
[root@DB-Server ~]# hping3 --help #或者hping --help
下面表格整理了部分參數信息,更多參數信息可以參考幫助文檔或http://man.linuxde.net/hping
#hping3 -S 192.168.27.57 -p 1433
HPING 192.168.27.57 (eth0 192.168.27.57): S set, 40 headers + 0 data bytes
len=44 ip=192.168.27.57 ttl=60 DF id=0 sport=1433 flags=SA seq=0 win=5840 rtt=31.4 ms
len=44 ip=192.168.27.57 ttl=60 DF id=0 sport=1433 flags=SA seq=1 win=5840 rtt=23.5 ms
len=44 ip=192.168.27.57 ttl=118 DF id=10907 sport=1433 flags=SA seq=2 win=8192 rtt=20.4 ms
len=44 ip=192.168.27.57 ttl=118 DF id=10908 sport=1433 flags=SA seq=3 win=8192 rtt=15.6 ms
len=44 ip=192.168.27.57 ttl=60 DF id=0 sport=1433 flags=SA seq=4 win=5840 rtt=15.5 ms
len=44 ip=192.168.27.57 ttl=60 DF id=0 sport=1433 flags=SA seq=5 win=5840 rtt=14.1 ms
len=44 ip=192.168.27.57 ttl=60 DF id=0 sport=1433 flags=SA seq=6 win=5840 rtt=14.4 ms
^C
--- 192.168.27.57 hping statistic ---
7 packets transmitted, 7 packets received, 0% packet loss
round-trip min/avg/max = 14.1/19.3/31.4 ms
個人感覺 Hping 是功能最強大的一款工具,可以測試防火牆功能、端口掃描、Idle 掃描、拒絕服務攻擊、木馬功能,這篇hping3命令已經詳細介紹了,而且有些測試不方便展示在此。在此略過細節。另外,工具再好,也需要可以掌握、駕馭工具的人。
參考資料:
https://docs.microsoft.com/en-us/sysinternals/downloads/psping
http://zhjwpku.com/2016/12/17/tcpping-hping-mtr.html
https://www.slashroot.in/what-tcp-ping-and-how-it-usedyouy