PsPing 学习笔记(14.5):TCP/UDP 带宽测试——吞吐上限与链路压测实战

PsPing 学习笔记(14.5):TCP/UDP 带宽测试------吞吐上限与链路压测实战

  • [PsPing 学习笔记(14.5):TCP/UDP 带宽测试------吞吐上限与链路压测实战](#PsPing 学习笔记(14.5):TCP/UDP 带宽测试——吞吐上限与链路压测实战)
    • 一、带宽测试和延迟测试有什么不一样?
    • 二、开启带宽测试前的前置条件
      • [1. 远端开启服务器模式](#1. 远端开启服务器模式)
      • [2. 本地做带宽测试的基础参数](#2. 本地做带宽测试的基础参数)
    • [三、TCP 带宽测试:模拟"应用层大文件传输"](#三、TCP 带宽测试:模拟“应用层大文件传输”)
      • [3.1 最基础的 TCP 带宽测试命令](#3.1 最基础的 TCP 带宽测试命令)
      • [3.2 控制测试时长:用 `-n` + `-i`](#3.2 控制测试时长:用 -n + -i)
      • [3.3 如何解读 TCP 带宽结果?](#3.3 如何解读 TCP 带宽结果?)
    • [四、UDP 带宽测试:压测"裸链路"的承载力](#四、UDP 带宽测试:压测“裸链路”的承载力)
      • [4.1 远端开启 UDP 服务器](#4.1 远端开启 UDP 服务器)
      • [4.2 本地执行 UDP 带宽测试](#4.2 本地执行 UDP 带宽测试)
      • [4.3 UDP 带宽结果怎么看?](#4.3 UDP 带宽结果怎么看?)
    • 五、带宽测试的"实验模板"(可直接写进你的博客)
      • [Step 1:ICMP & TCP 基线](#Step 1:ICMP & TCP 基线)
      • [Step 2:启动服务器模式](#Step 2:启动服务器模式)
      • [Step 3:做带宽测试](#Step 3:做带宽测试)
      • [Step 4:结果解读 & 报告要点](#Step 4:结果解读 & 报告要点)
    • 六、脚本化:把带宽测试做成"日常巡检"
      • [6.1 批处理示例(Windows)](#6.1 批处理示例(Windows))
      • [6.2 PowerShell 多目标测试](#6.2 PowerShell 多目标测试)
    • [七、压测注意事项 & 常见问题](#七、压测注意事项 & 常见问题)
      • [7.1 可能影响业务](#7.1 可能影响业务)
      • [7.2 带宽远低于"跑机房里写的标牌"](#7.2 带宽远低于“跑机房里写的标牌”)
      • [7.3 UDP 带宽高但丢包多](#7.3 UDP 带宽高但丢包多)
    • [八、小结:用 PsPing 搭好"网络实验室"的第二块砖](#八、小结:用 PsPing 搭好“网络实验室”的第二块砖)

PsPing 学习笔记(14.5):TCP/UDP 带宽测试------吞吐上限与链路压测实战

延迟看的是"快不快",带宽看的是"能拉多少货"。

这一篇我们用 PsPing 把"这条线到底能跑多快"说清楚。

前面几篇(14.1--14.4),我们用 PsPing 做了:

  • ICMP / TCP "Ping" → 看 RTT、抖动
  • 服务器模式 → 自建测试端点
  • TCP/UDP 延迟测试 → 看的是 一小撮 包走得怎么样

本篇开始升维:用 PsPing 做 TCP/UDP 带宽测试,也就是:

  • 这两台机器之间,理论上能跑多快?
  • 网络/系统/应用到底谁是瓶颈?
  • QoS、运营商、链路变更后,有没有"偷我带宽"?

一、带宽测试和延迟测试有什么不一样?

简单一句话:

  • 延迟测试 :很多小包,轻轻敲门,看 每次往返 要多久
  • 带宽测试 :猛拉数据,把水龙头开到底,看 单位时间 能灌多少

PsPing 在带宽模式下会:

  • 持续发送(TCP/UDP)数据流,而不是只发几个 ping 包
  • 统计:
    • 总传输数据量
    • 总耗时
    • 平均带宽(Mbit/s)
    • 在某些模式下提供延迟信息

注意:

带宽测试本身会 对链路施加压力 ,有可能影响业务。

生产环境一定要走:变更审批 + 低峰时段 + 范围可控 三连。


二、开启带宽测试前的前置条件

跟 14.4 的延迟测试一样,带宽测试也需要 服务器模式 配合。

1. 远端开启服务器模式

TCP 带宽测试:

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

UDP 带宽测试:

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

要求:

  • 防火墙/安全组放行对应端口(TCP/UDP)
  • 尽量选一个 闲置端口(不要跟线上业务抢)

2. 本地做带宽测试的基础参数

PsPing 的关键开关:

  • -b:带宽测试(bandwidth)
  • -n:发送次数(在带宽模式下往往代表"多少个包/迭代")
  • -i:间隔(秒),控制"打多猛"

三、TCP 带宽测试:模拟"应用层大文件传输"

3.1 最基础的 TCP 带宽测试命令

假设远端已经:

bash 复制代码
psping -s 5000

本地可以跑:

bash 复制代码
:: 对 192.168.10.10:5000 做 TCP 带宽测试
psping -b -n 10000 192.168.10.10:5000

常用写法解释:

  • -b:启用带宽模式
  • -n 10000:发送 10000 个数据单元(内部会按固定大小的数据去冲)
  • 不指定 -i 时,PsPing 会尽量"跑满"

输出里大致会看到:

  • 连接成功统计(类似 ping)
  • 总传输字节数
  • 总耗时
  • 平均带宽:xxx Mbits/sec

你可以把这条命令当作 "快速估算 TCP 吞吐上限" 的第一招。

3.2 控制测试时长:用 -n + -i

有时候你不想暴力打太久,可以显式控制:

bash 复制代码
:: 每 1ms 发一次,共发 10000 次,大概 10 秒级别的压测
psping -b -n 10000 -i 0.001 192.168.10.10:5000

或者:

bash 复制代码
:: 稍微温柔一点,每 10ms 一发,总量 2000 次
psping -b -n 2000 -i 0.01 192.168.10.10:5000

粗略"时间估算"方法:

大致测试时长 ≈ n × i

比如 -n 2000 -i 0.01 ≈ 20 秒

3.3 如何解读 TCP 带宽结果?

几个关键点:

  1. 平均带宽(Mbits/sec)

    • 接近链路额定(例如千兆网约 900+ Mbit/s) → 网络部分还可以
    • 远低于预期 → 可能是:
      • 路径中有 100M/更低速率设备
      • CPU / 磁盘 跟不上
      • QoS / 限速策略在作怪
  2. 双向带宽要分开测

    • A→B:在 A 上跑 psping,B 开服务器
    • B→A:角色反过来

    很多运营商/云链路是 上/下行不对称 的。

  3. 测试前后对比

    • 网络变更前后、迁移前后做两轮
    • 日后写"变更复盘 / 性能报告"非常好用

四、UDP 带宽测试:压测"裸链路"的承载力

UDP 带宽测试,更接近"没有拥塞控制/重传"的纯链路行为。

对实时流媒体、自研协议等场景格外有参考价值。

4.1 远端开启 UDP 服务器

bash 复制代码
:: 远端机器
psping -accepteula -s -u 5001

4.2 本地执行 UDP 带宽测试

bash 复制代码
:: 本地机器
psping -u -b -n 10000 192.168.10.10:5001

注意两个开关一起出现:

  • -u:协议改为 UDP
  • -b:带宽模式

你会得到类似输出:

  • 发送包总数
  • 接收包总数(从而能看出 丢包率
  • 总时间
  • 平均带宽

4.3 UDP 带宽结果怎么看?

比 TCP 多看一个指标:丢包率

  • 带宽高,但丢包严重 → 对 TCP 类业务可能还有救(靠重传),
    对语音/视频/游戏等实时业务会非常辣眼睛。
  • 平均带宽不算极高,但丢包几乎为 0 → 对实时业务更友好。

小建议:

对 UDP 带宽测试,别一上来就 -n 100000 -i 0 暴打,

先用一组温和参数摸底,再慢慢加到你想要的压测强度。


五、带宽测试的"实验模板"(可直接写进你的博客)

可以给读者提供一个 完整示例,方便复制操作。

Step 1:ICMP & TCP 基线

bash 复制代码
:: ICMP Ping(延迟基线)
psping -n 100 192.168.10.10 > icmp.txt

:: TCP Ping(端口延迟)
psping -n 100 192.168.10.10:5000 > tcp_ping.txt

Step 2:启动服务器模式

远端:

bash 复制代码
:: TCP
psping -accepteula -s 5000

:: UDP
psping -accepteula -s -u 5001

Step 3:做带宽测试

本地:

bash 复制代码
:: TCP 带宽(20 秒左右)
psping -b -n 2000 -i 0.01 192.168.10.10:5000 > tcp_bw.txt

:: UDP 带宽(20 秒左右)
psping -u -b -n 2000 -i 0.01 192.168.10.10:5001 > udp_bw.txt

Step 4:结果解读 & 报告要点

报告里可以这么写:

  • ICMP 平均 RTT / 最大 RTT / 抖动区间
  • TCP Ping vs ICMP 差异
  • TCP 带宽(A→B、B→A)
  • UDP 带宽 + 丢包率
  • 测试时间、路径、运营商/网络区域信息

你的 CSDN 博客里可以配一张简单表格,把四项结果放一行对比,非常直观:

markdown 复制代码
| 测试类型  | 平均延迟(ms) | 最大延迟(ms) | 带宽(Mbit/s) | 丢包率 |
|-----------|--------------|--------------|--------------|--------|
| ICMP Ping | 15           | 35           | ---            | 0%     |
| TCP Ping  | 20           | 40           | ---            | 0%     |
| TCP 带宽  | ---            | ---            | 920          | 0%     |
| UDP 带宽  | ---            | ---            | 950          | 0.5%   |

六、脚本化:把带宽测试做成"日常巡检"

6.1 批处理示例(Windows)

bat 复制代码
@echo off
set target=192.168.10.10:5000
set log=D:\netlog\tcp_bw_%date:~0,10%.log

echo ===== %date% %time% - Testing %target% ===== >> %log%
psping -q -b -n 2000 -i 0.01 %target% >> %log%
echo. >> %log%

特点:

  • 使用 -q 静默模式,只保留统计结果
  • 可以配合系统计划任务,每天跑一次,形成历史带宽曲线

6.2 PowerShell 多目标测试

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

foreach ($t in $targets) {
    Write-Host "=== Bandwidth test for $t ==="
    psping -q -b -n 1000 -i 0.01 $t
    Write-Host ""
}

这个可以放到博客里作为"运维日常工具箱"的一部分,读者容易收藏。


七、压测注意事项 & 常见问题

7.1 可能影响业务

带宽测试本身可能:

  • 抢占链路带宽 → 线上业务抖动、延迟上升
  • 触发防火墙/IDS/IPS 告警(大流量+高频)
  • 引起云账单高峰(按流量计费时)

推荐做法:

  • 在维护窗口或低峰时段执行;
  • 事先通知网络/安全团队;
  • 控制测试时长和压力:先轻量,再逐步加压

7.2 带宽远低于"跑机房里写的标牌"

比如:链路号称 1 Gbit/s,你测出来只有 200--300 Mbit/s。

排查方向:

  • 两端网卡速率/双工模式是否到位(Auto/1000 Full)
  • 中间交换机/路由器是否存在 100M 设备
  • CPU、磁盘是否跟不上(尤其是虚机)
  • QoS 限速策略(跨运营商/VPN/云环境尤为常见)

7.3 UDP 带宽高但丢包多

  • 丢包不是"异常",而是你找到了链路的承载上限
  • 实时业务需要的是:稳定、有余量的带宽 + 尽可能低的丢包
  • 如果高负载下 UDP 丢包明显,考虑:
    • 降低码率
    • 增加冗余/纠错
    • 做 QoS 保证

八、小结:用 PsPing 搭好"网络实验室"的第二块砖

这一篇,我们用 PsPing 的 -b 模式,把网络从"延迟好不好"扩展到"带宽够不够"。

你已经掌握了:

  • TCP/UDP 带宽测试基本命令
  • 如何控制测试时长和强度
  • 如何解读平均带宽、丢包率和前后对比
  • 如何用脚本做"日常带宽体检"

接下来,如果你愿意在博客里做一个 "网络体检全套模板" 专栏,把 14.0--14.5 串起来:

拿到一条链路 → 用 PsPing 做延迟 + 带宽全方位体检 → 输出一份标准化报告

这类内容对 CSDN 的"实战 + 工具类"读者特别友好,也很加分。

相关推荐
q行11 小时前
java学习日志--IO流(使用)
java·学习·io流
头疼的程序员11 小时前
计算机网络:自顶向下方法(第七版)第二章 学习分享(一)
学习·计算机网络
先生沉默先11 小时前
TypeScript 学习_类型与语法(2)
学习·typescript
我先去打把游戏先11 小时前
TCP、TLS、HTTP、HTTPS、MQTT、MQTTS几种网络协议的对比与解释
嵌入式硬件·mcu·物联网·网络协议·tcp/ip·http·aws
老朋友此林11 小时前
React Hook原理速通笔记1(useEffect 原理、使用踩坑、渲染周期、依赖项)
javascript·笔记·react.js
茶猫_11 小时前
C++学习记录-旧题新做-链表求和
数据结构·c++·学习·算法·leetcode·链表
龘龍龙11 小时前
Python基础学习(十一)
python·学习·mysql
-To be number.wan11 小时前
两道经典IP子网题解析|掌握CIDR与广播地址的奥秘
网络·网络协议·tcp/ip·计算机网络
Chris_121911 小时前
Halcon学习笔记-Day5
人工智能·笔记·python·学习·机器学习·halcon
日更嵌入式的打工仔12 小时前
Ehercat代码解析中文摘录<7>
笔记·ethercat