Skip to main content

Win11(192.168.x外部电脑)测试TCP丢包,4套方案(按推荐优先级排序)

目标:172.16.62.60虚拟机,全部走纯TCP流量,不受ICMP被网关拦截影响,适配你的5G专网场景。

✅ 方案1:iperf3(首选,直接统计TCP重传,最权威)

原理:两端建立TCP长连接,持续传输数据,直接输出TCP重传次数,重传>0=真实TCP丢包。

  1. 在远端虚拟机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场景)

  1. tcping 只能测端口连通性,不能测数据传输过程中的TCP丢包,只能看端口通不通,不能检测传输中途报文丢失。
  2. WinMTR / pathping / ping 全部基于ICMP,10.5.1.1网关会拦截ICMP,测出来的丢包是假的,不能用来判断TCP业务。
  3. 5G链路有单向丢包特性:下行正常、上行丢包。iperf3 加 -R 反向测试,单独测试上行方向。

推荐现场操作顺序

  1. 优先iperf3跑长时间测试,看Retransmits,判断是否存在TCP重传(真实TCP丢包)
  2. 如果有重传,用Wireshark在Win11抓包,同时在虚拟机宿主机tcpdump双向抓包,定位丢包是在5G链路还是内网。
  3. 只有业务端口连通性验证场景,才用PsPing。

业务模拟小建议

iperf是满压测试;如果你的业务是低速率长连接(工控/物联网类),可以限制带宽,更贴近真实业务流量:

iperf3.exe -c 172.16.62.60 -t 300 -b 10M

-b 10M限制带宽10M,模拟业务流量,避免压满链路。