PsPing 学习笔记(14.4):TCP/UDP 延迟测试——从单包 RTT 到抖动分析

PsPing 学习笔记(14.4):TCP/UDP 延迟测试------从单包 RTT 到抖动分析

  • [PsPing 学习笔记(14.4):TCP/UDP 延迟测试------从单包 RTT 到抖动分析](#PsPing 学习笔记(14.4):TCP/UDP 延迟测试——从单包 RTT 到抖动分析)
    • [一、TCP/UDP 延迟测试的几个典型需求](#一、TCP/UDP 延迟测试的几个典型需求)
    • 二、前置:服务器模式再回顾一遍(很重要)
      • [1. 远端:启动 TCP 测试服务器](#1. 远端:启动 TCP 测试服务器)
      • [2. 远端:启动 UDP 测试服务器](#2. 远端:启动 UDP 测试服务器)
    • [三、TCP 延迟测试:模拟"应用层"视角](#三、TCP 延迟测试:模拟“应用层”视角)
      • [1. 最基础的 TCP 延迟测试命令](#1. 最基础的 TCP 延迟测试命令)
      • [2. 和 ICMP ping 的对比](#2. 和 ICMP ping 的对比)
      • [3. 合理控制测试"压力"](#3. 合理控制测试“压力”)
    • [四、UDP 延迟测试:看到"最原始"的链路行为](#四、UDP 延迟测试:看到“最原始”的链路行为)
      • [1. 远端开启 UDP 测试服务](#1. 远端开启 UDP 测试服务)
      • [2. 本地发起 UDP 延迟测试](#2. 本地发起 UDP 延迟测试)
      • [3. UDP 测试结果怎么解读?](#3. UDP 测试结果怎么解读?)
    • [五、TCP vs UDP 延迟测试:一个"实验模板"](#五、TCP vs UDP 延迟测试:一个“实验模板”)
      • [Step 1:ICMP 基线](#Step 1:ICMP 基线)
      • [Step 2:TCP 延迟(服务器模式)](#Step 2:TCP 延迟(服务器模式))
      • [Step 3:UDP 延迟](#Step 3:UDP 延迟)
      • [Step 4:结果对比要点(写在文章里)](#Step 4:结果对比要点(写在文章里))
    • [六、实战小技巧:静默模式 + 脚本化](#六、实战小技巧:静默模式 + 脚本化)
      • [1. 用 `-q` 静默输出,方便写脚本](#1. 用 -q 静默输出,方便写脚本)
      • [2. 用 PowerShell 做多目标测试](#2. 用 PowerShell 做多目标测试)
    • 七、常见坑和排错方向
      • [1. 明明服务器开着,UDP 测试却大量丢包?](#1. 明明服务器开着,UDP 测试却大量丢包?)
      • [2. TCP 延迟比 ICMP 高一截,是正常的吗?](#2. TCP 延迟比 ICMP 高一截,是正常的吗?)
      • [3. 多次测试结果差很大?](#3. 多次测试结果差很大?)
    • 八、小结:把"感觉得慢"变成"数据说话"

PsPing 学习笔记(14.4):TCP/UDP 延迟测试------从单包 RTT 到抖动分析

适用场景:你想认真 搞清楚"这两台机器之间到底有多慢、多抖",而不是只看一眼 ping 的"玄学平均值"。

在 14.1/14.2/14.3 里,我们已经用 PsPing 玩过:

  • ICMP Ping(经典 ping)
  • TCP Ping(针对端口/服务)
  • 服务器模式(自建测试探针)

这一篇正式上强度:

PsPing + 服务器模式TCP/UDP 延迟测试,看清:

  • 单次 RTT(Round Trip Time,往返时延)
  • 最小/最大/平均延迟
  • 抖动(jitter)的直观感受(波动情况)
  • TCP vs UDP 延迟特征差异

一、TCP/UDP 延迟测试的几个典型需求

比起"就 ping 一下看看"的场景,这几类更需要"严肃一点"的延迟测试:

  • 跨机房 / 跨地域链路:专线、云间互联、生产 vs 灾备站点
  • 延迟敏感业务:游戏、金融交易、语音/视频、实时监控
  • 网络变更前后对比:改了路由/QoS/运营商之后,量化影响
  • UDP 协议业务:自研 UDP 协议、实时推流等,想看"裸 UDP 链路"表现

PsPing 把这件事做得很简单:
一条命令,连打 N 个包,自动帮你做统计。


二、前置:服务器模式再回顾一遍(很重要)

TCP/UDP 延迟测试必须在 两端都配合 才能玩得尽兴:

  • 远端:用 PsPing 开一个"测试服务器"
  • 本地:用 PsPing 发起 TCP/UDP 测试

远端服务器模式的详细说明在 14.3 已经展开,这里只放必备命令。

1. 远端:启动 TCP 测试服务器

bash 复制代码
:: 在远端服务器上执行
psping -accepteula -s 5000
  • -s:服务器模式
  • 5000:监听端口(可以换,但两端要对应)

2. 远端:启动 UDP 测试服务器

bash 复制代码
:: 在远端服务器上执行
psping -accepteula -s -u 5000
  • 多了一个 -u:表示使用 UDP 协议

小提示:

  • TCP/UDP 测试最好分别开两个端口,避免搞混
  • 生产环境推荐固定一组"测试端口"并在防火墙/安全组中显式放行

三、TCP 延迟测试:模拟"应用层"视角

1. 最基础的 TCP 延迟测试命令

假设远端已经执行了:

bash 复制代码
psping -s 5000

在本地可以直接测:

bash 复制代码
:: 往远端发 50 次 TCP 测试,每 100ms 一次
psping -n 50 -i 0.1 192.168.10.10:5000

常用参数:

  • -n 50:发送次数(默认 4 次,一般不够看波动)
  • -i 0.1:发送间隔(单位秒),0.1 = 100ms
  • IP:port:目标地址和端口

输出里你会看到类似信息:

  • 每次请求的 RTT(几 ms)
  • 最小 / 最大 / 平均 RTT
  • 总耗时、成功/失败统计

2. 和 ICMP ping 的对比

你可以先来一组对比:

bash 复制代码
:: 传统 ICMP ping
psping -n 50 192.168.10.10

:: TCP ping 到同一台机器
psping -n 50 192.168.10.10:5000

差异点:

  • TCP 需要握手 / 建立连接,延迟通常略大于 ICMP
  • 某些网络设备对 TCP 流量的处理路径不同,能反映"真实应用"体验
  • 若应用层本身也在该端口上(比如 443),会叠加应用处理时间

建议:

  • 链路基线 用服务器模式 + TCP 测试
  • "用户感觉慢" 时,再对真实业务端口做 TCP Ping,看应用层额外贡献了多少延迟

3. 合理控制测试"压力"

延迟测试如果发包太频繁,会变成本身在压网络:

bash 复制代码
:: 不建议
psping -n 10000 -i 0.001 192.168.10.10:5000

更稳妥的习惯:

  • 日常基线:-n 100 -i 0.1-n 200 -i 0.05
  • 变更后短期观察:-n 500 -i 0.02
  • 尽量避开业务高峰;重要链路事先走审批

四、UDP 延迟测试:看到"最原始"的链路行为

很多低延迟业务走的是 UDP

如自研协议、游戏同步、实时语音/视频等。

UDP 没有握手、没有重传、没有拥塞控制 →
非常适合拿来观察"链路的裸真实表现"

1. 远端开启 UDP 测试服务

bash 复制代码
:: 远端服务器
psping -accepteula -s -u 5000

注意 -u 和端口要对应。

2. 本地发起 UDP 延迟测试

bash 复制代码
:: 本地测试端
psping -u -n 100 -i 0.05 192.168.10.10:5000

参数说明:

  • -u:使用 UDP 协议(客户端/服务端都要加)
  • -n 100:发 100 次
  • -i 0.05:50ms 一次

输出结果非常接近 TCP 测试格式,但含义上有几个差别:

  • 没有 TCP 握手耗时 → RTT 更接近"纯链路 + 设备转发"时间
  • 可能出现丢包,不会自动重传
  • 抖动(每次 RTT 的波动)对实时业务影响更大

3. UDP 测试结果怎么解读?

可以重点关注三件事:

  1. 平均 RTT
    • 基本延迟水平,跟物理距离和路径有关
  2. 最大 RTT
    • 偶发高延迟:可能是排队、链路负载、QoS 抢占等
    • 如果最大值明显远高于平均 → 对实时应用很致命
  3. 丢包率
    • 即使总体丢包低(比如 1%),对实时语音/游戏也可能非常明显
    • 可以多测几轮,确认是偶发还是稳定的结构性问题

五、TCP vs UDP 延迟测试:一个"实验模板"

建议在实验/排障时按下面节奏来走,你博客里可以直接作为"操作步骤"贴出去。

Step 1:ICMP 基线

bash 复制代码
psping -n 100 192.168.10.10 > icmp.txt

Step 2:TCP 延迟(服务器模式)

远端:

bash 复制代码
psping -s 5000

本地:

bash 复制代码
psping -n 100 -i 0.05 192.168.10.10:5000 > tcp.txt

Step 3:UDP 延迟

远端:

bash 复制代码
psping -s -u 5001

本地:

bash 复制代码
psping -u -n 100 -i 0.05 192.168.10.10:5001 > udp.txt

Step 4:结果对比要点(写在文章里)

你可以给读者一个小 checklist:

  • 三种测试平均 RTT 差异大不大?
  • 最大 RTT 是否存在"突然飙高"的情况?
  • UDP 是否出现明显丢包?丢包时 RTT 有什么特征?
  • 不同时间段(白天/晚上、变更前/变更后)的指标对比如何?

六、实战小技巧:静默模式 + 脚本化

1. 用 -q 静默输出,方便写脚本

比如你只想要统计信息,不想看每一条 RTT:

bash 复制代码
psping -q -n 200 -i 0.05 192.168.10.10:5000

配合重定向,可以做成定时任务:

bash 复制代码
:: 定时任务里跑的批处理示例
psping -q -n 200 -i 0.05 192.168.10.10:5000 >> D:\netlog\tcp_lat_192.168.10.10.log

定时跑一遍,就有一条"链路体温曲线"。

2. 用 PowerShell 做多目标测试

powershell 复制代码
$targets = @(
    "192.168.10.10:5000",
    "192.168.20.10:5000"
)

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

你可以把这段放进博客,作为"日常巡检模板"。


七、常见坑和排错方向

1. 明明服务器开着,UDP 测试却大量丢包?

排查方向:

  • 路由 / 防火墙 / 云安全组 是否对 UDP 做了限速/丢弃策略
  • 某些设备对"高频 UDP 小包"非常敏感,会触发防护
  • 间隔 -i 是否太小(例如 0.001 秒狂轰乱炸)

2. TCP 延迟比 ICMP 高一截,是正常的吗?

多数情况下是正常的,原因包括:

  • TCP 需要握手(视具体测试模式而定)
  • 路由器/防火墙对 TCP 做的检查/队列更重
  • 如果测的是真实业务端口,还叠加了应用处理时间

更重要的是看:

  • 波动是否平稳(抖动小)
  • 业务端口 vs 测试端口 的差异,有助于定位问题是在"线"还是在"业务"。

3. 多次测试结果差很大?

可能的原因:

  • 网络本身有拥塞/调度(例如晚高峰 vs 凌晨)
  • 路由在收敛/切换
  • 云厂商/运营商等做了路径调整

建议:

  • 不要只看一次结果,多拿几段不同时间的采样
  • 保留日志(特别是变更前后),方便回溯和汇报

八、小结:把"感觉得慢"变成"数据说话"

这一篇的目的,就是帮你从"感觉这链路有点慢"升级到:

"这条链路的 TCP 平均 RTT 在 20ms 左右,

UDP 平均 15ms,但有 2--3 次抖到 60ms,且有 1% 丢包。"

关键记住几条命令:

bash 复制代码
:: TCP 延迟(服务器模式)
psping -s 5000                        # 远端
psping -n 100 -i 0.05 IP:5000         # 本地

:: UDP 延迟
psping -s -u 5001                     # 远端
psping -u -n 100 -i 0.05 IP:5001      # 本地

:: 静默统计(方便脚本)
psping -q -n 200 -i 0.05 IP:PORT

在下一篇 14.5,我们会在这个基础上继续往前走,用 PsPing 做 TCP/UDP 带宽测试,看一看"这条线最多能跑多快"和"跑满的时候,它会怎么抖"。这样你就可以用一套工具,同时回答领导的两句灵魂拷问:

  • "延迟怎么样?"
  • "带宽够不够?"
相关推荐
科技林总6 小时前
【系统分析师】1.2 系统分析师
学习
Fuxiao___6 小时前
Pi0学习笔记E
笔记·学习
不忘不弃7 小时前
把IP地址转换为字符串
数据结构·tcp/ip·算法
Cathy Bryant7 小时前
拉格朗日量:简单系统
笔记·算法·数学建模·高等数学·物理
YJlio7 小时前
PsPing 学习笔记(14.3):服务器模式——自建探针与端到端延迟测试
服务器·笔记·学习
行业探路者7 小时前
提升旅游行程管理效率的二维码文件生成方案
大数据·人工智能·学习·二维码·产品介绍
别了,李亚普诺夫7 小时前
ADC-学习笔记
笔记·stm32·学习
linuxxx1107 小时前
request.build_absolute_uri()关于使用IP+端口
网络·python·网络协议·tcp/ip·django