PsPing 学习笔记(14.2):TCP Ping------端口连通性与服务在线性秒级体检
- [PsPing 学习笔记(14.2):TCP Ping------端口连通性与服务在线性秒级体检](#PsPing 学习笔记(14.2):TCP Ping——端口连通性与服务在线性秒级体检)
-
- 一、本篇你能收获什么?
- [二、TCP Ping 是什么?跟普通 ping 有啥不同?](#二、TCP Ping 是什么?跟普通 ping 有啥不同?)
-
- [1. 普通 ping:只看"主机"](#1. 普通 ping:只看“主机”)
- [2. TCP Ping:看"端口上的服务"](#2. TCP Ping:看“端口上的服务”)
- [三、基本语法:用 `host:port` 打开 TCP 模式](#三、基本语法:用
host:port打开 TCP 模式) -
- [1. 基本形式](#1. 基本形式)
- [2. 常用选项回顾(在 TCP 模式里照样好用)](#2. 常用选项回顾(在 TCP 模式里照样好用))
- [四、典型实战场景:3 条命令解决 80% 的"端口是不是挂了"](#四、典型实战场景:3 条命令解决 80% 的“端口是不是挂了”)
-
- [场景 1:用户在外网访问不了 Web](#场景 1:用户在外网访问不了 Web)
-
- [第一步:先 ICMP 看主机是否在线(可选)](#第一步:先 ICMP 看主机是否在线(可选))
- [第二步:用 TCP Ping 打 80/443](#第二步:用 TCP Ping 打 80/443)
- [场景 2:内网数据库连不上](#场景 2:内网数据库连不上)
- [场景 3:验证东西端防火墙策略](#场景 3:验证东西端防火墙策略)
- [五、输出解读:成功 / 失败 / 延迟看什么?](#五、输出解读:成功 / 失败 / 延迟看什么?)
- [六、TCP Ping 常见错误与分析思路](#六、TCP Ping 常见错误与分析思路)
-
- [1. 连接被拒绝(connection refused)](#1. 连接被拒绝(connection refused))
- [2. 请求超时](#2. 请求超时)
- [3. 偶发性失败或高延迟](#3. 偶发性失败或高延迟)
- 七、和其他模式的协同:构建一套路由到应用的"体检流程"
- [八、小结 & 练习建议](#八、小结 & 练习建议)
PsPing 学习笔记(14.2):TCP Ping------端口连通性与服务在线性秒级体检
适用人群:日常要排查"服务是不是挂了""端口是不是被挡了"的运维 / 开发 / 测试 / 安全同学。
承接 14.1 的 ICMP 模式,这一篇我们把视角从"主机活着没"升级到"这个端口上的服务是不是也活着"。
一句话版本:
ICMP 告诉你"那台机器大概在线";
TCP Ping 告诉你"这个服务,真的在端口上听你说话"。
一、本篇你能收获什么?
看完你可以:
- 知道 TCP Ping 和 ICMP Ping 的核心区别
- 读懂 PsPing TCP 模式的输出含义(成功 / 失败 / 延迟)
- 掌握几条 可直接用在生产上的排障命令
- 能初步区分:
- 是 网络不通
- 还是 端口没开 / 监听失败
- 还是 被防火墙/策略拒绝
二、TCP Ping 是什么?跟普通 ping 有啥不同?
1. 普通 ping:只看"主机"
- 协议:ICMP Echo(网络层)
- 问题:
- 机器在线,但服务死了,它也会回 ICMP
- 很多服务器 / 云厂商 直接丢弃 ICMP,你根本 ping 不通
2. TCP Ping:看"端口上的服务"
PsPing 的 TCP 模式,本质是:
- 尝试对
host:port建立 TCP 连接 - 测量握手延迟(RTT)
- 根据结果判断端口状态:
常见情况:
- 能连上 → 端口开放且有人在监听(服务大概率在线)
- 立即被拒绝(RST) → 主机在,但该端口没有服务监听
- 超时 → 路由 / 防火墙 / 中间设备吃掉了你的 SYN,不回你话
你可以把它理解为:
"拿着 TCP SYN 去敲门,看看这道门有没有人开。"
三、基本语法:用 host:port 打开 TCP 模式
1. 基本形式
bash
psping [选项] 主机:端口
示例:
bash
psping web01.yourcorp.com:80
psping 10.0.0.5:443
psping 192.168.1.10:1433
只要你在地址后面跟了一个 :端口,PsPing 就会自动切换到 TCP 模式(后面章节再加服务器模式、带宽测试等花活)。
2. 常用选项回顾(在 TCP 模式里照样好用)
几个高频参数和 14.1 一样:
-n:测试次数-i:间隔(秒,可小数)-q:安静模式,只输出统计结果-h:显示帮助-accepteula:静默接受许可
搭个组合例子:
bash
:: 对 10.0.0.5 的 443 端口做 50 次连接测试
psping -n 50 -i 0.2 10.0.0.5:443
四、典型实战场景:3 条命令解决 80% 的"端口是不是挂了"
场景 1:用户在外网访问不了 Web
用户喊:"网站打不开,是不是服务器死了?"
你可以这么排:
第一步:先 ICMP 看主机是否在线(可选)
bash
psping -n 5 web01.yourcorp.com
- 通:说明主机大概率在
- 不通:要考虑 ICMP 被丢弃,继续第二步
第二步:用 TCP Ping 打 80/443
bash
:: HTTP
psping -n 10 web01.yourcorp.com:80
:: HTTPS
psping -n 10 web01.yourcorp.com:443
解释结果:
- 全部成功,延迟正常
→ 端口开着、服务在监听,多半是上层(Nginx/应用/脚本逻辑)问题 - 立即失败,提示连接被拒绝
→ 主机活着,但服务没监听在这个端口(挂了 / 配置错 / 端口改了) - 一直超时
→ 中途被防火墙、WAF 或安全组挡掉了
场景 2:内网数据库连不上
应用连数据库超时,运维第一句话:"你先别怀疑我网。"
你可以:
bash
:: 假设 SQL Server 端口 1433
psping -n 20 -i 0.5 db01.yourcorp.com:1433
结果解释:
- RTT 稳定,全部成功
→ 网络 / 端口 OK,问题多半在账号密码、连接池、SQL 自身 - 偶尔超时 / 延迟暴涨
→ 可以结合后续 PsPing 延迟直方图 + PerfMon/Procmon 分析 - 完全连不上
→ 先看防火墙和安全组,再看 DB 监听配置(只绑了 127.0.0.1 之类)
场景 3:验证东西端防火墙策略
安全同学:
"新上了一条策略,这几台服务器之间只有某些端口能通。"
你可以直接用 PsPing 去打那个端口:
bash
:: 检查 10.0.1.10 是否能从 172.16.0.5 访问 8443
psping -n 10 10.0.1.10:8443
结合源/目的变换测试,很快就能精确指出:
- 是 客户端出不去
- 还是 服务端进不来
- 还是中间某个防火墙/IPS 做了手脚
五、输出解读:成功 / 失败 / 延迟看什么?
PsPing TCP 模式每次输出大致包括:
- 是否成功连接
- 每次往返时间(毫秒)
- 汇总统计(最小 / 最大 / 平均 / 标准差)
你重点关注:
- 失败比例
- 失败多 → 有丢包 / 端口不通 / 服务没监听 / 被拒绝
- 延迟平均值
- 本地机房内:几 ms 级
- 跨地域 / 跨运营商:几十 ms ~ 上百 ms 很正常
- 抖动(标准差)
- 抖动大,说明延迟波动厉害 → 发包间隔拉长 / 结合路由、队列进一步排查
六、TCP Ping 常见错误与分析思路
1. 连接被拒绝(connection refused)
说明:
- TCP 三次握手能到达目标主机
- 但目标端口上 没有服务在监听
- 或被中间设备主动发送 RST
排查方向:
- 目标服务是否启动?
- 是否监听在 0.0.0.0 / 对应 IP / 对应端口?
- 中间有没有"端口探测防御"设备?
2. 请求超时
说明:
- SYN 报文在中途被丢弃(很像 ICMP 被丢的那种无响应)
- 或路径上有防火墙策略直接 drop
排查方向:
- 换源地址测试(不同网段/不同机房)
- 用
tracert/pathping看路径 - 检查安全组、ACL、FW 规则日志
3. 偶发性失败或高延迟
说明网络链路不稳定,可能出现在:
- 带宽打满(某段时间流量激增)
- 队列排队严重(QoS 配置问题)
- 无线链路质量差(Wi-Fi、移动网络等)
组合拳建议:
- PsPing + 系统性能计数器 / SNMP 图表
- 再加后续章节中的 直方图 分析延迟分布(14.7)
七、和其他模式的协同:构建一套路由到应用的"体检流程"
建议你把现在已经学到的东西整理成一条简单流程:
text
1)主机是否在线?
→ PsPing ICMP(14.1)
2)端口是否开放?
→ PsPing TCP Ping(本篇)
3)端到端延迟 & 带宽性能如何?
→ PsPing 服务器模式 + TCP/UDP 延迟 & 带宽测试(14.3--14.6)
4)延迟抖动是否可接受?
→ PsPing 直方图 & 统计分析(14.7)
一旦你习惯用这条流水线去排查网络/服务问题,"是不是网络问题"这种灵魂拷问会好回答很多。
八、小结 & 练习建议
本篇的核心要点:
host:port= 启用 TCP 模式,用来检查端口连通性与服务在线性- 配合
-n / -i / -q等选项,可以高频、多次、可脚本化地做体检 - 通过成功/失败/延迟行为,区分:
- 主机活着但服务没监听
- 网络路径被丢弃或阻断
- 链路抖动 / 延迟波动大
可以自己练几个小题:
- 对你公司常用的 Web / API / DB 服务做一遍 TCP Ping,记录延迟基线
- 故意关掉一个服务,再用 PsPing 打一下端口,看错误提示长什么样
- 在高并发时段和低峰时段各跑一次,比较下延迟统计的差异
下一篇(14.3)我们会走到 PsPing 的 服务器模式,开始做更"硬核"的 TCP/UDP 延迟测试,为后面的带宽压测和直方图分析打基础。