很多时候,我们需要测试tcp端口。ping命令虽然好用,但不能测试端口,因为ping基于ICMP协议,属于IP层协议,所以无法测试传输层的TCP/UDP端口。
幸好有tcping命令,可是其用法网上讲地十分简略,竟然找不到一份详细的说明。所以本人决定翻译tcping的参数文档,希望对大家有点帮助。
监听主机的端口状态,默认是80端口,也可以指定其它端口
看到ping返回的时间,检测主机是否有延时或者端口不通
访问tcping主页,下载安装包tcping-1.3.5.tar.gz,编译安装tcping(需要安装gcc、make)。
# tar zxvf tcping-1.3.5.tar.gz
# cd tcping-1.3.5
# yum install -y gcc
# make
# cp tcping /usr/bin/
# brew install tcping
访问tcping主页,下载tcping.exe,并且windows版的tcping功能参数更多。
在本地主机和远程主机之间,tcping可以测试出执行TCP三次握手所需的时间(SYN,SYN / ACK,ACK)。最终ACK传送时间不包括在内,只有最少的时间才能将其丢弃在近端的电线。
# tcping [-tdsvf46] [-i interval] [-n times] [-w interval] [-b n] [-r times][-j depth] [--tee filename] [-f] destination [port]
-4,优先使用IPv4
-6,优先使用IPv6
-h,使用http模式
-t,让命令持续运行,直到使用ctrl + c指令退出
-n 数字,发送命令的次数,默认4次
-i 数字,发送ping命令的时间间隔,默认1s,可以为小数
-w 数字,等待响应的时间间隔,默认2s,可以为小数
-d,使输出的每一行显示时间和日期
-f,强制ping命令至少发送一个比特(byte)
-g 数字,失败指定次就放弃(注意默认是80端口,若其他端口没开也算失败)
-b 数字,开启蜂鸣器,参数4会一直响铃
-c,只显示改变的信息(ping时间很短一般不会改变)
-r 数字,每发送指定个数据包,就重新查找主机一次(通过DNS或路由查找)
-s,ping通就立即退出
-u,与-h命令连用,每一行输出目标的url
-v,显示版本信息
-j,使用默认的方法,求ping的均值减小波动,网络有一定的不稳定性时,用此参数可以减小波动
-js 数字,用指定个实例求平均值减小波动,使用这个参数,系统会tcping 指定次,然后求出平均值作为一次结果显示,减小波动
–tee file_path,将结果输出到指定位置,tcping –tee /data/test.txt192.168.0.100,会把ping的结果保存在/data下的test文件中
–file,从文件中获得ping的来源;在/data下新建一个test.txt文件,并输入要tcping的所有ip或域名,一行一个,然后执行命令tcping –file /data/test.txt,就会依次tcping文件中指定的地址
destination,可以是DNS地址、IP地址、URL(需要使用-h,http模式)。使用http模式时,不要加https//或:port,例如:tcping http://www.elifulkerson.com:8080/index.html就会失败,使用tcping www.elifulkerson.com/index.html 8080
就会成功
port 数字,指定tcp端口(1-65535),如果不指定,默认是80
–header,在头部显示时间和日期,与–tee显示的格式差不多
–block,tcping不通的等待时间,默认是20秒(很长)。–block可以把-w参数冲突掉 ,例如tcping --block www.baiu.com
网址不正确,显然tcpping不通,默认会等待20s 。 tcping -w 0.5 –block www.baiu.com
还是会等20s,而不是0.5s,因为–block选项会把-w选项冲突掉。
–post,在http模式中,使用post方法
–head,在http模式中,使用head方法
–get Shorthand to invoke “http” mode for consistency’s sake.
–proxy-server,指定代理服务
–proxy-port,指定代理服务端口
–proxy-credentials username:password,使用代理的安全验证,需要输入用户名和密码
如果所有的pings是成功的,返回0;如果所有ping都失败,返回1;混合结果,返回2
tcping is available at http://www.elifulkerson.com/projects/tcping.php
# netstat -anp
# iptables -A INPUT -p tcp --drop 端口号-j DROP
# iptables -A OUTPUT -p tcp --dport 端口号-j DROP
# iptables -A INPUT -p tcp --dport 端口号-j ACCEPT
// 打开telnet23端口
# nc -lp 23 &
// 查看23端口是否打开
# netstat -an | grep 23
注意:linux每打开一个端口,都需要有相应的监听程序。
# tcping -d -h -u -n 10 -i 0.1 -w 0.1 192.168.1.30 6001
意思:使用http模式(-h),并且在返回数据中显示目标源url地址(-u),向主机ip为192.168.1.30的6001端口发送10次数据包(-n 10),在返回数据行中显示发送数据包的日期(-d),指定每次发送数据包的时间间隔为0.1秒(-i 0.1),等待数据包相应的时间间隔为0.1秒(-w 0.1)
注:-t和-n同时存在时,优先指定-n,即
tcping -t -n 10 192.168.1.30
命令只会发送10次数据包,并不是像-t一样持续发送。