iperf3 基础使用
iperf3 基础使用
最近在帮同时远程搭一个简单的家庭网络环境,但是用测速网站怎么都只有 50M 左右,宽带师傅来直接接光猫又能跑 1000M,灰常奇怪。打算测一测内网的带宽情况时,发现没个工具可用(换了个 be5100 没问题了)。
谁曾想几天后在看 NAS 测评时发现了 iperf3,这不是巧了。
1 iperf3 介绍
iperf3 是一款基于 TCP / UDP 协议的网络性能测试工具,主要用于测量网络的带宽、延迟、抖动和丢包率等关键指标。它采用 “客户端 - 服务端” 架构,需要在两台测试设备上分别运行对应模式,支持跨平台使用(Linux、macOS、Windows 均兼容),且完全免费开源。
核心优势:
- 命令简洁,上手成本低;
- 支持 TCP 吞吐量、UDP 抖动 / 丢包等多维度测试;
- 跨平台兼容性强,无多余依赖;
- 测试结果直观,可直接用于网络性能评估。
Github 地址(编译使用):https://github.com/esnet/iperf
下载地址:https://iperf.fr/iperf-download.php
2 Windows 下的安装与配置
[!Note]
Linux 下可以直接使用 apt、yum 进行安装,如果源显示无此软件那就用源码安装。
根据自己的系统下载所需版本,我主要在 Windows 上用,所以我下载的是 Windows 版本的(可能要小翻一下墙):


下载完成后,解压内容如下:

可以看到默认只有一个 exe 可执行程序,在 CMD 中使用 iperf3.exe -v 验证结果:

3 iperf3 常用命令
iperf3 必须以 “服务端(Server)+ 客户端(Client)” 的模式运行,先启动服务端,再启动客户端连接测试。
[!Note]
工具使用基础前提:
- 服务端设备:需知道其 IP 地址(局域网 IP 或公网 IP);
- 网络连通性:确保客户端和服务端之间网络通畅,且未拦截 iperf3 默认端口(5201);
- 测试逻辑:服务端被动监听,客户端主动发起连接并进行测试。
3.1 TCP 带宽测试
TCP 测试主要用于测量网络的最大吞吐量(即实际可用带宽),默认测试时长 10 秒。
启动服务端(在一台设备上执行):iperf3 -s,-s表示启动服务端模式(server)。启动成功后,会显示类似信息: Server listening on 5201。

启动客户端连接测试(在另一台设备上执行):iperf3 -c 服务端IP,-c` 表示启动客户端模式(client),后面跟服务端的 IP 地址。

测试完成后,客户端会输出详细结果,核心关注 Bitrate(比特率),即实际带宽。例如[ 5] 0.00-10.01 sec 9.66 GBytes 8.29 Gbits/sec,表示 10 秒内测试的吞吐量为 8.29 Gbps。
3.2 UDP 延迟与丢包测试
UDP 协议不保证可靠传输,常用于测试实时网络(如视频通话、游戏)的延迟、抖动和丢包率。测试时需要指定带宽(-b 参数)。
启动服务端(和 TCP 服务端命令一致):iperf3 -s
启动客户端 UDP 测试:iperf3 -c 服务端IP -u -b 100M
- -u:启用 UDP 模式(默认是 TCP 模式);
- -b 100M:指定测试带宽为 100 Mbps(可根据网络实际情况调整,如 50M、200M)。

测试完成后,客户端结果核心关注 3 个指标:
- Bitrate:UDP 实际发送带宽;
- Jitter:延迟抖动(越小越好,实时网络建议 < 50ms);
- Loss:丢包率(越小越好,实时网络建议 < 1%)。
3.3 自定义测试时长与输出间隔
默认测试时长 10 秒,若想延长测试时间(如测试稳定性),可使用 -t 参数;若想实时查看测试进度,可使用 -i 参数指定输出间隔:
1 | # 客户端命令:测试 30 秒,每 2 秒输出一次结果(TCP 模式) |

参数说明:
- -t 30:测试时长 30 秒(time);
- -i 2:每 2 秒输出一次中间结果(interval)。
3.4 多线程并发测试
默认是单线程测试,若想模拟多用户并发访问场景,可使用 -P 参数指定线程数(适用于高带宽网络,如千兆、万兆网络):
1 | # 客户端命令:启动 4 个线程并发测试 TCP 带宽 |

参数说明:-P 4 表示启动 4 个并发线程(parallel)。测试结果会显示每个线程的吞吐量,以及总吞吐量。
4 常用参数速查表
整理了基础使用中最常用的参数,方便快速查阅:
| 参数 | 作用 | 适用模式 |
|---|---|---|
| -s | 启动服务端模式 | 服务端 |
| -c <IP> | 启动客户端模式,连接指定服务端 IP | 客户端 |
| -u | 使用 UDP 协议测试(默认 TCP) | 客户端 |
| -b <带宽> | 指定测试带宽(如 100M、500K),UDP 必选,指定 0 时不限制速率,尽力全速发包 | 客户端 |
| -t <秒数> | 设置测试时长,默认 10 秒 | 客户端 |
| -i <秒数> | 设置结果输出间隔,默认不输出中间结果 | 客户端 |
| -P <数量> | 设置并发线程数 | 客户端 |
| -p <端口> | 指定测试端口(默认 5201),避免端口占用 | 服务端 / 客户端 |
| -R | 实现 “服务端→客户端” 的反向传输测试 | 客户端 |
| -d | 同时启动正向和反向测试 | 客户端 |
| -J | 可输出结构化的 JSON 数据 | 客户端 |
| -B | 绑定指定网卡的 IP 进行测试,避免测试流量走错网卡 | 服务端 / 客户端 |




