PsPing 学习笔记(14.3):服务器模式——自建探针与端到端延迟测试

PsPing 学习笔记(14.3):服务器模式------自建探针与端到端延迟测试

PsPing 学习笔记(14.3):服务器模式------自建探针与端到端延迟测试

适用场景:多机房互联、跨地域专线、生产/灾备链路测试、API 网关前后的端到端网络体检。

前两篇我们用 PsPing 做了:

  • ICMP Ping:看"机器在不在"
  • TCP Ping:看"端口上服务在不在"

这一篇我们把门再往里推一层:两端都配合,用 PsPing 的服务器模式做真正的端到端链路测试


一、为什么要用"服务器模式"?

ICMP/TCP Ping 虽然好用,但都有局限:

  • 只能看到"连得上 / 连不上 + RTT"
  • 看不到:在持续高并发下的表现、抖动、队列堆积
  • 很多生产环境里:ICMP 被丢、TCP 被策略干预

PsPing 的服务器模式干的事情是:

在远端开一个"专用小服务",

你本机使用 PsPing 跟它"对打",

精准测出端到端延迟、抖动、丢包、带宽等指标。

它的好处:

  • 协议可控(TCP/UDP)
  • 端口可控(非 80/443,减少干扰)
  • 行为可重复(脚本化、定时任务)

后面的 TCP/UDP 延迟与带宽测试,其实都是在 服务器模式 之上完成的。


二、服务器模式的基本概念与语法

1. 启动 PsPing 服务器

在"被测端"(通常是远端服务器、另一机房的探针)执行:

bash 复制代码
psping -s 5000

含义:

  • -s:server(服务器模式)
  • 5000:监听端口号(可换成任意未占用端口)

从此这台机子会在 5000 端口上等待 PsPing 客户端的测试请求。

你也可以显式指明地址族:

bash 复制代码
:: 仅 IPv4
psping -4 -s 5000

:: 仅 IPv6
psping -6 -s 5000

小贴士:

服务器模式启动后,会一直占用当前控制台;一般建议单独开一个终端窗口或者做成后台服务。


2. 客户端如何发起测试?

在"测试端"(你当前这台运维机、跳板机等)执行:

bash 复制代码
:: 最简单形式 ------ TCP 延迟测试
psping 10.0.0.5:5000

此时 PsPing 会:

  1. 连接 10.0.0.5:5000
  2. 按默认次数发送测试数据(后续篇章会写 TCP/UDP 延迟、带宽参数)
  3. 输出每次测试的 RTT、统计信息等

你可以加上常见控制项:

bash 复制代码
:: 指定次数和间隔
psping -n 50 -i 0.2 10.0.0.5:5000

:: 安静模式,仅输出统计
psping -q -n 100 10.0.0.5:5000

从这一刻起,你不再只是"敲门看门有没有开",而是在两端 PsPing 之间跑真实的应用层流量。


三、一个简单拓扑:两机房之间的链路体检

建议你在博客里配一张类似这样的拓扑图(文字版先放着):

text 复制代码
[ 运维机 / 跳板机 ] --(公司网络/Internet/专线)--> [ 远端服务器 ]

左边运行:psping 远端IP:5000
右边运行:psping -s 5000

典型用法:

  1. 远端机房 的目标服务器上启动服务:

    bash 复制代码
    psPing -s 5000
  2. 本地/总部机房 的运维机上循环测试:

    bash 复制代码
    psping -n 100 -i 0.1 203.0.113.10:5000
  3. 观察输出的:

    • 最小 / 最大 / 平均 RTT
    • RTT 波动情况(配合后续直方图更清晰)
    • 失败次数(超时 / 连接失败)

这类测试,比单纯对 80/443 做 TCP Ping 有几个优势:

  • 不会跟现网业务包混在一起(端口独立)
  • 不受应用层(Nginx/网关/应用)自身处理时间影响
    → 更聚焦在 链路 / 路由 / QoS 本身
  • 方便安全策略上单独开口子,专门给测试用

四、基础操作:从"能连上"到"稳定性如何"

先给一个最小操作手册式的片段,方便你直接搬进自己的系统运维手册。

1. 远端:启动服务器

bash 复制代码
:: 让 PsPing 长时间在 5000 端口等待连接
psping -s 5000

如果你希望监听一个明确的 IP(多网卡场景),可以:

bash 复制代码
psping -s 192.168.10.10:5000

注意:监听 IP 要是本机存在的地址,否则会报错。

2. 本地:做一次"健康检查"

bash 复制代码
psping -n 20 192.168.10.10:5000
  • 全部成功 + 延迟稳定 → 基本健康
  • 偶发失败 → 可能存在瞬时拥塞/丢包
  • 持续失败 → 端口/防火墙/ACL/路由问题

3. 做一条"链路基线"记录

常规建议做一条"基线",以后网络有变更时,拿来对比非常爽:

bash 复制代码
:: 在网络状态平稳时做一次记录
psping -q -n 200 -i 0.1 192.168.10.10:5000 > baseline_rtt.txt

下次觉得"网络变慢了",再跑同样命令输出到 today_rtt.txt,用差异对比工具一看,心里就有数了。


五、服务器模式 vs 普通 TCP Ping:到底差在哪?

可以这么理解:

  • 普通 TCP Ping
    • 对一个"真实业务端口"发起连接(比如 443)
    • 受 Web 服务器、网关、应用处理影响
    • 适合"用户体验导向"的诊断(访问一个真实 API/站点)
  • 服务器模式 + PsPing 客户端
    • 应用双方都是 PsPing,本质是"自建小协议"
    • 纯粹看链路行为,不掺杂业务层逻辑
    • 适合做"纯网络视角"的测量:延迟、抖动、带宽、稳定性

两种结合起来用最佳:

  1. 先用服务器模式测链路"本底情况"
  2. 再去按真实端口做 TCP Ping,看"业务层额外引入了多少延迟"

六、把 PsPing 服务器模式做成"一键巡检"

服务器模式最大的优点,就是可以脚本化。举一个非常接地气的例子:

1. 远端:开机自动跑 PsPing Server

示意性的 psping_server.bat

bat 复制代码
@echo off
:: 简单版:开机启动 PsPing 服务器
psping -accepteula -s 5000

将这个脚本:

  • 放入启动项,或
  • 做成计划任务,随系统启动运行

2. 本地:一键巡检多个机房/节点

在你的运维机上搞一个 check_links.ps1

powershell 复制代码
$targets = @(
    "hq-gw.yourcorp.com:5000",
    "dr-gw.yourcorp.com:5000",
    "hk-gw.yourcorp.com:5000"
)

foreach ($t in $targets) {
    Write-Host "=== Testing $t ==="
    psping -q -n 50 -i 0.1 $t
    Write-Host ""
}

配合定时任务跑一轮,把结果重定向到日志里,等于有了一个半成品的"网络健康巡检系统"


七、常见坑与排错方向

来一份"踩坑清单",你博客里可以做成小表格:

  1. 端口被占用
    • 现象:psping -s 5000 直接报错,无法监听
    • 排查:netstat -ano | findstr 5000 看是谁在用
  2. 防火墙没开口子
    • 现象:服务器正常监听,但客户端始终超时
    • 排查:
      • 本机能否 telnet 远端IP 5000(或 Test-NetConnection
      • Windows 防火墙 / 云安全组是否放行 5000/TCP
  3. 多网卡 / 多 IP 场景
    • 服务器绑定了某个特定 IP,只能从某条路由访问
    • 建议服务器模式用 0.0.0.0:port(默认绑定所有地址),避免踩坑
  4. 安全/EDR 拦截
    • 某些环境下会对非标准端口高频通信"多看一眼"
    • 建议:
      • 提前和安全团队打个招呼
      • 选用经过审批的测试端口范围

八、小结与下一站

这一篇的核心就是一句话:

PsPing 的服务器模式 = 在远端架一个"专用探针",

帮你从网络视角做端到端延迟/稳定性测试。

关键记忆点:

  • psping -s 端口:远端开监听
  • psping [选项] IP:端口:本地发起测试
  • 典型场景:多机房链路基线、专线巡检、故障前后对比

接下来在 14.4 / 14.5 / 14.6 我们会基于这个服务器模式,展开:

  • TCP/UDP 延迟测试:弄清楚单包往返时延和抖动
  • TCP/UDP 带宽测试:在不把业务打挂的前提下测个靠谱的吞吐

到那时,你就能用 PsPing 搭出一整套"低成本网络性能实验室"。

相关推荐
Cathy Bryant7 小时前
拉格朗日量:简单系统
笔记·算法·数学建模·高等数学·物理
行业探路者7 小时前
提升旅游行程管理效率的二维码文件生成方案
大数据·人工智能·学习·二维码·产品介绍
别了,李亚普诺夫7 小时前
ADC-学习笔记
笔记·stm32·学习
qq_310658517 小时前
webrtc源码走读(八)系统接口层
服务器·c++·音视频·webrtc
刘孬孬沉迷学习7 小时前
NR 下行CSI报告学习
学习·5g·信息与通信
晚风_END7 小时前
Linux|服务器运维|diff和vimdiff命令详解
linux·运维·服务器·开发语言·网络
好奇龙猫8 小时前
【人工智能学习-AI-MIT公开课11. 学习:识别树、无序】
人工智能·学习
玄同7658 小时前
我是如何学习编程的?——从 “扳手使用” 到编程学习:踩坑式实践的底层方法论
开发语言·人工智能·经验分享·笔记·python·学习·自然语言处理
Java后端的Ai之路8 小时前
【Python进阶学习】-NumPy详细介绍指南(附demo)
python·学习·numpy