介绍
什么是 TCPing 呢?TCPing 是用于测试服务器 TCP 连通性的一类工具,通过它可以检查服务器上某个服务的特定端口是否开放可达。这里也说了是一类,我们所说的哔哩哔哩就一个,但是 TCPing 是无数个,你可以在 Github 等社区找到许许多多开发者开发维护的 TCPing 工具。
TCPing 与 Ping 有什么区别呢?虽然两者都是为了检测连通性,但是两者有明显的区别,详细区别如下:
协议类型:
ping
使用 ICMP 协议,通过发送回显请求检测目标服务器是否可达。tcping
使用 TCP 协议,通过尝试建立 TCP 连接来测试目标服务器的特定端口是否开放。
实际用途:
ping
用于检测目标服务器是否在线,但无法检测特定服务(如 ssh、http、https)的可达性。tcping
用于检测目标服务器上服务的特定端口(如 22、80、443)是否可达。
可用程度:
ping
在有些环境下无法正常使用,服务器管理者可能为了安全性,禁止 ICMP 流量。tcping
由于使用的是常见的 TCP 协议,在大部分情况下都可以使用,尤其是对于提供开放性服务的端口。
安装
这里我们使用来自 Eli Fulkerson 源代码的 TCPing,馆友可以从下面网址下载,通常我们选择 64 位的即可。
# 64位可执行文件
https://download.elifulkerson.com/files/tcping/0.39/x64/tcping64.exe
# 32位可执行文件
https://download.elifulkerson.com/files/tcping/0.39/tcping.exe
这里我们下载完成后得到了 tcping64.exe
,为了方便后面命令调用我们将该文件重命名为 tcping.exe
,如果馆友下载的是 32 位的就不需要改名了。
现在我们将文件复制到下面文件路径中,你可以复制后直接在资源管理器的路径栏中粘贴下面内容,随后按下回车键。
C:\Windows\System32
现在我们按下 Win
+ R
键,然后输入 cmd
将命令提示符打开,随后输入 tcping
将会有命令帮助显示
使用
下方命令格式中包含有一些符号,其中 <>: 表示必要、[]: 表示可选、|: 表示或者
基础使用
tcping <ip|域名> [端口]
: 一般测试端口情况直接使用该方式就行
# 没有写端口默认测试80端口
tcping www.voidyun.com
# 测试服务的443端口
tcping www.voidyun.com 443
# 当然可以直接写IP地址和端口
tcping 223.5.5.5 53
tcping -s <ip|域名> [端口]
: 第一次成功 tcping 通则直接退出,失败则重试到最大重试次数
# 快速测试是否开放53端口
tcping -s 223.5.5.5 53
# 快速测试是否开放66端口
tcping -s 223.5.5.5 66
tcping -t <ip|域名> [端口]
: 持续 tcping 直到按下 ctrl + c 键停止
# 持续测试53端口是否开放
tcping -t 223.5.5.5 53
# 持续测试443端口是否开放
tcping -t 223.5.5.5 443
tcping --file <文件路径>
: 逐行测试文本中内容,默认不管失败与否每个只测试一次
参数扩展
# 基本参数
-t : 持续 tcping,直到使用 Ctrl+C 停止。
-n <次数> : 指定发送 tcping 的次数,如 -n 2 表示发送 2 次。
-i <间隔时间> : 指定每次 tcping 的时间间隔(单位为秒),如 -i 4 表示每 4 秒 tcping 一次。
-w <时间> : 指定等待回应的超时时间(单位为秒),如 -w 1 表示等待 1 秒。
-d : 每行输出带有日期和时间。
-b <模式> : 启用声音提示,1 表示 down 时响铃,2 表示 up 时响铃,3 表示状态变化时响铃,4 表示一直响铃。
-r <次数> : 指定每 tcping 若干次后重新解析主机名,如 -r 4 表示每 4 次重新解析一次。
-s : 第一次成功 tcping 时自动退出。
-v : 显示版本信息并退出。
-4 : 优先使用 IPv4。
-6 : 优先使用 IPv6。
-c : 仅在状态变化时输出一行。
-S <源地址> : 指定源地址(需要是客户端计算机的有效 IP)。
--tee <文件名> : 将输出镜像保存到指定文件。
--file <文件路径> : 逐行测试文本文件内容
# HTTP模式参数
-h : 使用 HTTP 模式(无需输入 http://,只需输入 URL)。
-u : 在每行输出中包含目标 URL。
--post : 使用 POST 请求而不是 GET。
--head : 使用 HEAD 请求而不是 GET。
--proxy-server <地址> : 指定代理服务地址。
--proxy-port <端口> : 指定代理服务的端口。
--proxy-credentials <用户名:密码> : 通过 Proxy-Authorization: Basic 头指定代理认证。
# 调试参数
-f : 强制 tcping 至少发送一个字节。
--header : 输出原始参数和日期。
--block : 使用阻塞 socket 连接,这会忽略 -w 的设定并使用默认超时。
# 网络相关参数:
-j : 包括 jitter 值,使用默认滚动平均值。
-js <大小> : 指定 jitter 的滚动平均值大小,如 -js 6 表示使用 6 作为滚动平均值大小。
-g <次数> : 例如 -g 6,表示连续失败 6 次后放弃。