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
3:将tcpping文件移动到/usr/bin下并授权。
mv tcpping /usr/bin/
cd /usr/bin
chmod 755 tcpping
tcpping测试
tcpping帮助信息。
tcpping
tcpping v1.7 Richard van den Berg richard@vdberg.org
Usage: tcpping [-d] [-c] [-C] [-w sec] [-q num] [-x count] ipaddress [port]
-d print timestamp before every result
-c print a columned result line
-C print in the same format as fping's -C option
-w wait time in seconds (defaults to 3)
-r repeat every n seconds (defaults to 1)
-x repeat n times (defaults to unlimited)
See also: man tcptraceroute
参数
参数描述
-d
在每个结果输出前打印时间戳
-c
将结果输出在一列。
-C
输出与fping的-C选项相同的打印格式
-w
wait time in seconds (defaults to 3)
-r
-r n :每n秒重复一次(默认为1)
-x
重复n次(默认为无限制)
clip_image001[4]
clip_image002[4]
tcping介绍
tcping也是通过tcp端口工作,tcping还能监听某个端口的状态,注意tcping与tcpping是不同的两款工具,另外tcping也有很多版本。如下所示:
来自 kirchner 源代码的 TCPing
来自 Eli Fulkerson 源代码的 TCPing
Windows
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
C:\Users>
Linux:
Linux下的tcping命令功能非常简单,如下所示,感觉没有tcpping或Windows下的tcping功能强大。
Usage: tcping [-q] [-t timeout_sec] [-u timeout_usec]
[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、延迟测试、带宽测试。
clip_image003[4]
C:\Users>psping -? i
PsPing v2.01 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
ICMP ping usage: psping [[-6]|[-4]] [-h [buckets|,,…]] [-i
Linux
please, follows this steps:
./configure(firsttry./configure–help)
.
/
c
o
n
f
i
g
u
r
e
(
f
i
r
s
t
t
r
y
.
/
c
o
n
f
i
g
u
r
e
–
h
e
l
p
)
vi Makefile (optional)
make
m
a
k
e
su
make install
FreeBSD, OpenBSD, NetBSD
You will need the libpcap and the gmake utility installed on your system.
./configure
.
/
c
o
n
f
i
g
u
r
e
gmake
$ su (or calife)
gmake install
Hping测试
查看hping的帮助信息:
[root@DB-Server ~]# hping3 –help #或者hping –help
下面表格整理了部分参数信息,更多参数信息可以参考帮助文档或http://man.linuxde.net/hping
参数
参数说明
-h –help
显示帮助信息
-v –version
显示版本信息
-c –count
指定发送包的次数
-i –interval
–fast
–faster
–flood
发送间隔时间(单位是毫秒) 缺省时间是1秒,此功能在增加传输率上很重要,在idle/spoofing扫描时此功能也会被用到,你可以参考hping-howto获得更多信息
-fast 每秒发10个数据包,与-i m100等同。表示间隔10毫秒发送一个数据包
–faster 每秒发送100个数据包
–flood 以最快的速度发送数据包。不显示答复
-n –numeric
指定以数字形式输出
-q –quiet
安静模式 只输出开始结束信息
-I –interface
interface name 无非就是eth0之类的网卡参数
-V –verbose
显示更多信息
-D –debug
进入DEBUG模式
-z –bind
快捷键的使用
-Z –unbind
消除快捷键
…………….
…………………..
clip_image007[4]
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.azure.cn/zh-cn/articles/azure-operations-guide/virtual-network/aog-virtual-network-tcp-psping-paping-connectivity
https://docs.microsoft.com/en-us/sysinternals/downloads/psping
https://www.cmsky.com/tcping/
http://zhjwpku.com/2016/12/17/tcpping-hping-mtr.html
https://www.slashroot.in/what-tcp-ping-and-how-it-usedyouy
http://tookdes.org/geek/archives/tcping-intro.html
http://man.linuxde.net/hping3