PsPing 学习笔记(14.1):ICMP Ping 进阶------替代系统 ping 的正确姿势
- [PsPing 学习笔记(14.1):ICMP Ping 进阶------替代系统 ping 的正确姿势](#PsPing 学习笔记(14.1):ICMP Ping 进阶——替代系统 ping 的正确姿势)
-
- 一、本篇你能拿到什么?
- [二、PsPing 快速认知:ICMP 模式就是"增强版 ping"](#二、PsPing 快速认知:ICMP 模式就是“增强版 ping”)
-
- [1. PsPing 的基础结构](#1. PsPing 的基础结构)
- [2. ICMP Ping:和系统 ping 是什么关系?](#2. ICMP Ping:和系统 ping 是什么关系?)
- [三、ICMP 模式的常用选项:3 分钟掌握](#三、ICMP 模式的常用选项:3 分钟掌握)
-
- [1. 基本连通性测试](#1. 基本连通性测试)
- [2. 指定次数:`-n`](#2. 指定次数:
-n) - [3. 指定间隔:`-i`](#3. 指定间隔:
-i) - [4. 指定缓冲区大小:`-l`](#4. 指定缓冲区大小:
-l) - [5. 静默统计:`-q`](#5. 静默统计:
-q) - [6. 静默接受协议:`-accepteula`](#6. 静默接受协议:
-accepteula)
- [四、PsPing vs 系统 ping:用表格说人话](#四、PsPing vs 系统 ping:用表格说人话)
- 五、常见命令示例:可以直接抄的那种
-
- [1. 检查网关是否稳定](#1. 检查网关是否稳定)
- [2. 对关键业务域名做 ICMP 测试](#2. 对关键业务域名做 ICMP 测试)
- [3. 做短时间"高频抖动观察"](#3. 做短时间“高频抖动观察”)
- [4. 比较不同报文大小的延迟差异](#4. 比较不同报文大小的延迟差异)
- [六、常见错误与排查思路(ICMP 视角)](#六、常见错误与排查思路(ICMP 视角))
-
- [1. `Request timed out` / 一直超时](#1.
Request timed out/ 一直超时) - [2. 权限 / 防病毒软件拦截](#2. 权限 / 防病毒软件拦截)
- [3. DNS 解析问题](#3. DNS 解析问题)
- [1. `Request timed out` / 一直超时](#1.
- [七、和后续章节的衔接:为什么先把 ICMP 玩明白?](#七、和后续章节的衔接:为什么先把 ICMP 玩明白?)
- 八、小结
PsPing 学习笔记(14.1):ICMP Ping 进阶------替代系统 ping 的正确姿势
适用人群:经常被问"是不是网络问题?"的运维/开发/测试/安全同学,以及想把 Sysinternals 学到能实战的朋友。
一、本篇你能拿到什么?
看完这一篇,你至少能做到:
- 了解 PsPing 的基础语法,特别是 ICMP 模式的使用方式
- 知道 它和系统自带
ping的区别与优势 - 写出几条 可直接复制到生产环境的小命令 做延迟 & 连通性测试
- 知道常见错误的 定位思路,比如"目标不通是 ICMP 被丢还是主机真的挂了"
先记住一句话:
把 PsPing 当成"加强版 ping",但它远不止 ping。
------ ICMP 只是入口,后面还有 TCP/UDP 延迟、带宽、直方图等待你解锁。
二、PsPing 快速认知:ICMP 模式就是"增强版 ping"
1. PsPing 的基础结构
PsPing 的命令结构可以概括成:
bash
psping [选项] 目标host[[:端口] | :echo]
- 用 ICMP Ping 时:只写主机名或 IP 即可
- 用 TCP/UDP 模式 时:写成
host:port(后面 14.2+ 会讲)
典型写法:
bash
psping www.example.com
psping 10.0.0.10
psping -n 100 -i 0.2 gateway.local
小技巧:第一次运行 PsPing 会弹 Sysinternals 许可证窗口,可以加
-accepteula静默接受,方便脚本化。
2. ICMP Ping:和系统 ping 是什么关系?
协议层面:
- 两者都用 ICMP Echo 请求/应答
- 都可以用来做 "主机是否存活" 的粗略判断
体验层面,PsPing 更像是这样一版升级:
- 输出有 更丰富的统计信息(最小 / 最大 / 平均 / 标准差)
- 接口统一(后面同一个工具还能测 TCP/UDP)
- 更适合写进 自动化脚本、压测脚本 里统一调用
三、ICMP 模式的常用选项:3 分钟掌握
为了避免一次性堆一堆参数,这里只讲 ICMP 模式最常用的那几个,够你上生产环境。
1. 基本连通性测试
bash
psping 10.0.0.10
- 默认会发 5 次 ICMP Echo 请求
- 输出每次 RTT(往返时间)和一组汇总统计
对应系统的:
ping 10.0.0.10区别是:PsPing 的输出更规整,后续更容易被脚本解析。
2. 指定次数:-n
bash
psping -n 20 10.0.0.10
-n:发包次数- 用途:
- 做短时间"小体检"(例如 20 次)
- 或者做长一点的观察(例如 100 / 1000 次)
3. 指定间隔:-i
bash
psping -n 50 -i 0.2 10.0.0.10
-i:发送间隔(秒),可以是小数-i 0.2= 每 0.2 秒发一次 = 1 秒 5 次- 实战里常用组合:
- 低频巡检 :
-n 60 -i 1(1 分钟) - 高频短期观察 :
-n 100 -i 0.1(约 10 秒)
- 低频巡检 :
4. 指定缓冲区大小:-l
bash
psping -n 20 -l 1024 10.0.0.10
-l:ICMP 报文负载大小(字节)- 用途:
- 模拟业务实际数据体量,对 MTU / 大包分片 敏感时可用
- 对比"小包延迟"和"大包延迟"是否差异巨大
5. 静默统计:-q
bash
psping -n 100 -i 0.1 -q 10.0.0.10
-q:Quiet,过程不打印每一条,只输出最终统计结果- 配合脚本时非常好用,输出简洁,日志不会爆炸
6. 静默接受协议:-accepteula
首次在某台机器上跑时,可以用:
bash
psping -accepteula -n 5 10.0.0.10
适合:
- 批处理、PowerShell 脚本
- 自动化平台(Jenkins、GitLab CI、Ansible)等,避免卡在界面交互上
四、PsPing vs 系统 ping:用表格说人话
来一张常见"对比表"(仅针对 ICMP 模式):
| 能力 | 系统 ping |
PsPing (ICMP 模式) |
|---|---|---|
| 基本连通性 | ✅ 有 | ✅ 有 |
| 指定次数 / 间隔 | ✅ 有(-n / -i 等) |
✅ 有(-n / -i,语法简洁) |
| 统计信息(min/avg/max/std) | 平均值为主 | ✅ 更详细,含标准差 |
| 输出格式 | 偏人类可读 | ✅ 更规整,利于脚本解析 |
| 与 TCP/UDP 测试统一接口 | ❌ 无 | ✅ 一个工具搞定多种测试 |
| 直方图 / 分布分析 | ❌ 无 | ✅ 有(后续章节讲) |
| 自动化/批量脚本集成 | 一般 | ✅ 很适合(配合 -q 使用) |
可以这样理解:
若只临时敲两下看主机活没活,用系统 ping 问题不大;
但如果你想做 一整套"网络体检/巡检/可视化"体系,PsPing 会更舒服。
五、常见命令示例:可以直接抄的那种
下面这几段可以直接抄进你的运维笔记或批处理里。
1. 检查网关是否稳定
bash
:: 连续 50 次,每次间隔 0.2s
psping -n 50 -i 0.2 192.168.1.1
适合用来验证:
- 访问任何外网前先看本地网关是否健康
- 用户说"全网都卡"的时候,先看这一步是不是就已经抖了
2. 对关键业务域名做 ICMP 测试
bash
psping -n 30 -i 0.5 api.yourcompany.com
- 如果这里延迟已经明显高 / 不稳定,
那也许是 DNS 解析到的那个出口链路有问题,要把 IP 拉出来做更进一步测试。
3. 做短时间"高频抖动观察"
bash
:: 高频 100 次,0.1s 间隔,结果静默,只看统计
psping -n 100 -i 0.1 -q 10.0.0.10
- 适合抓那种:平时看不出来,但高并发时偶发尖刺 的情况
- 后续可以多次执行,把结果汇总成表格/图表
4. 比较不同报文大小的延迟差异
bash
:: 小包 32 字节
psping -n 30 -l 32 10.0.0.10
:: 大包 1024 字节
psping -n 30 -l 1024 10.0.0.10
- 若大包延迟显著变高甚至丢包,
可能跟 MTU、链路质量、队列等相关,后续可以考虑抓包 & 调整网络参数。
六、常见错误与排查思路(ICMP 视角)
1. Request timed out / 一直超时
可能原因:
- 防火墙丢弃 ICMP(尤其是公网 / 云服务器上很常见)
- 目标机器真的挂了 or 不在线
- 路由策略导致 ICMP 流量被限流 / 丢弃
排查思路:
- 同网段其他机器是否能被 ICMP 通?
- 是否只 ICMP 不通,但 TCP 端口还通?(预告:14.2 会用 PsPing TCP 模式来验证)
- 检查本机/目标机/中间设备防火墙规则。
2. 权限 / 防病毒软件拦截
有些终端防护软件会对 频繁 ICMP 行为比较敏感:
- 可能弹出提示或直接拦截 PsPing
- 在企业环境中用之前,最好跟安全团队沟通,把 PsPing 所在目录加入白名单
3. DNS 解析问题
表现:
- 用 IP 测试一切正常
- 用域名测试各种诡异延迟 / 超时
这时候你就知道该去盘问 DNS、Hosts、代理、负载均衡 那帮兄弟了。
七、和后续章节的衔接:为什么先把 ICMP 玩明白?
先把 ICMP 模式打牢,有几个好处:
- 命令行结构、常见选项基本通用,后面只是在此基础上加
:端口/-s之类的参数。 - 你可以先建立一个对 "正常网络延迟是什么水平" 的直觉。
- 后续做 TCP/UDP 延迟/带宽测试时,你能分辨出:
- 哪些是链路基线
- 哪些是协议/服务层面引入的额外开销
可以把心里图谱整理成这样:
text
ICMP 模式:主机活没活?延迟大概多少?(本篇)
↓
TCP Ping:端口是否通?服务是否在监听?(14.2)
↓
服务器模式 + TCP/UDP 延迟 & 带宽:链路端到端性能几何?(14.3--14.6)
↓
直方图与统计:延迟分布和"抖动"到底长啥样?(14.7)
八、小结
这一篇,我们只做了一件事:把 PsPing 当成"ICMP 增强版 ping"吃透。
关键记住这几个点:
- 基本命令:
psping [选项] host - 常用参数:
-n(次数)、-i(间隔)、-l(数据大小)、-q(静默)、-accepteula - 相比系统 ping:
- 统计信息更丰富
- 输出更适合脚本解析
- 是后续 TCP/UDP 测试的"统一入口"
下一篇我们就升一级,去玩 PsPing 的 TCP Ping 与端口连通性测试 :
从"主机活着"进化到"这个具体端口是不是也活着",这才是真正和业务绑在一起的那一层。