Win11(192.168.x外部电脑)测试TCP丢包,4套方案(按推荐优先级排序)
目标:
172.16.62.60虚拟机,全部走纯TCP流量,不受ICMP被网关拦截影响,适配你的5G专网场景。
✅ 方案1:iperf3(首选,直接统计TCP重传,最权威)
原理:两端建立TCP长连接,持续传输数据,直接输出TCP重传次数,重传>0=真实TCP丢包。
- 在远端虚拟机
172.16.62.60(Linux)启动服务端:
iperf3 -s
默认监听TCP 5201端口,虚拟机防火墙放行5201端口 2. Win11电脑下载Windows版iperf3,CMD执行客户端测试,持续60秒:
iperf3.exe -c 172.16.62.60 -t 60
看输出里的
Retransmits,只要这个数字持续增加,就代表TCP报文丢失、触发重传。-t 60:测试时长60秒,可以改成-t 300做5分钟长时间压力测试,模拟业务长连接。
补充:5G无线容易单向丢包,增加
-R反向测试,测试上行方向TCP质量
iperf3.exe -c 172.16.62.60 -t 60 -R
✅ 方案2:微软PsPing(Sysinternals,微软官方工具,不用装复杂软件)
PsPing是微软工具,可以TCP模式做长探测,统计TCP时延、超时,不是ICMP ping。 下载:微软Sysinternals官网 psping.exe
:: TCP探测目标业务端口(比如业务端口8080,改成你实际业务端口)
psping 172.16.62.60:8080 -n 1000
-n 1000:发送1000次TCP连接探测- 输出里的丢包是TCP层面连接失败/超时,不受ICMP策略影响。
注意:PsPing的TCP模式是短连接探测;如果要看长连接数据传输丢包,优先iperf3。
✅ 方案3:Wireshark抓包(最底层,定位重传发生在哪一侧)
Win11上安装Wireshark,选择网卡,设置过滤:
ip.addr == 172.16.62.60 and tcp
抓包观察:
[TCP Retransmission]:TCP重传包,确认报文丢失[Dup ACK]:重复ACK,接收方没有收到数据包,触发快速重传适合故障复现时抓包,用来区分:是Win11发出去就丢,还是回程报文在5G网关丢失。
✅ 方案4:Windows内置 pktmon(不用装任何软件,Win11自带)
微软原生数据包监控,可直接查看本机网卡的TCP丢包原因,适合快速排查Windows协议栈侧丢包:
# 管理员CMD,启动捕获,过滤目标IP
pktmon filter add -ip 172.16.62.60
pktmon start --capture
测试完成后停止捕获,查看丢包统计
pktmon stop
pktmon format PktMon.etl -o pktlog.txt
❗ 避坑重点(适配你的5G场景)
- tcping 只能测端口连通性,不能测数据传输过程中的TCP丢包,只能看端口通不通,不能检测传输中途报文丢失。
- WinMTR / pathping / ping 全部基于ICMP,10.5.1.1网关会拦截ICMP,测出来的丢包是假的,不能用来判断TCP业务。
- 5G链路有单向丢包特性:下行正常、上行丢包。iperf3 加
-R反向测试,单独测试上行方向。
推荐现场操作顺序
- 优先iperf3跑长时间测试,看
Retransmits,判断是否存在TCP重传(真实TCP丢包) - 如果有重传,用Wireshark在Win11抓包,同时在虚拟机宿主机tcpdump双向抓包,定位丢包是在5G链路还是内网。
- 只有业务端口连通性验证场景,才用PsPing。
业务模拟小建议
iperf是满压测试;如果你的业务是低速率长连接(工控/物联网类),可以限制带宽,更贴近真实业务流量:
iperf3.exe -c 172.16.62.60 -t 300 -b 10M
-b 10M限制带宽10M,模拟业务流量,避免压满链路。
问题根源
PsPing 参数顺序有要求:选项(-accepteula、-n)放前面,目标IP:端口放命令最后。 你现在命令:
psping -accepteula www.shuncom.com:443 -n 10
❌ 错误:把目标域名端口放在 -n 参数前面,psping识别语法异常,直接输出帮助文档。
✅ 正确命令(参数在前,目标放末尾)
psping -accepteula -n 10 www.shuncom.com:443
规则:所有
-开头的参数写在最前面,最后面才写目标地址:端口。
测试你的虚拟机目标(172.16.62.60:业务端口)
psping -accepteula -4 -n 100 172.16.62.60:8080
-4:强制IPv4,避免域名解析到IPv6干扰(5G场景强烈推荐)-n 100:测试100次TCP握手- 末尾才写IP:端口
持续长测(类似ping -t,Ctrl+C停止)
psping -accepteula -4 -t 172.16.62.60:8080
带时延直方图(方便看5G抖动)
psping -accepteula -4 -h -n 50 172.16.62.60:8080
第一次运行说明
第一次运行,-accepteula 只需要执行一次,后续再跑同机器不用再加 -accepteula。
重要再次提醒(你5G业务场景)
psping 只是 TCP三次握手短连接探测,只能看端口握手成功率; 就算psping显示0%丢包,不代表业务长连接传输数据的时候没有TCP丢包/重传。 想要真正验证数据流TCP丢包,仍然需要 iperf3。
备选方案:tcping(如果你不想折腾psping参数顺序)
tcping参数顺序简单,不容易踩坑:
tcping www.shuncom.com 443
tcping -t 172.16.62.60 8080
执行成功后,结果样例参考
TCP connect to xxx:443:
10 iterations (warmup 1) ping test:
Connecting to xxx:443: 0.53ms
Connecting to xxx:443: 0.51ms
...
TCP connect statistics for xxx:443:
Sent = 10, Received = 10, Lost = 0 (0% loss),
Minimum = 0.51ms, Maximum = 0.77ms, Average = 0.60ms
你直接复制上面正确的命令到CMD试一下,看看能不能正常跑起来。
需要我顺便给你一条iperf3的Windows客户端命令,用来做真实TCP数据流重传测试吗?
No comments to display
No comments to display