丢包不高但远程桌面卡顿?从抖动、队列和 Wi-Fi 干扰排查实时网络问题

一、为什么丢包不高也会卡?

很多人只看丢包率:

text 复制代码
丢包率 0%
平均延迟 35ms
所以网络应该没问题

但实时业务看的是连续性。

比如下面两条链路:

指标 链路 A 链路 B
平均延迟 40ms 45ms
丢包率 0% 0%
最大延迟 55ms 850ms
抖动 8ms 220ms

如果只看平均延迟,两条链路差不多。但实际体验上,链路 B 会明显卡顿。远程桌面会突然停一下,会议声音会断一截,游戏角色会瞬移。

所以实时网络排查要重点看:

  • 平均延迟
  • 最大延迟
  • P95 延迟
  • 抖动
  • 连续异常次数
  • 上行是否被占满
  • Wi-Fi 是否有干扰

稳如狗网络这类工具在做体验优化时,也会关注这些"平均值之外"的指标,因为真正影响体感的往往不是平均值,而是长尾和波动。


二、第一步:用 ping 看连续延迟波动

Windows:

powershell 复制代码
ping 223.5.5.5 -n 100
ping 1.1.1.1 -n 100

Linux/macOS:

bash 复制代码
ping -c 100 223.5.5.5
ping -c 100 1.1.1.1

重点不要只看最后的平均值,而要观察中间是否出现这种情况:

text 复制代码
来自 223.5.5.5 的回复: 字节=32 时间=18ms TTL=56
来自 223.5.5.5 的回复: 字节=32 时间=20ms TTL=56
来自 223.5.5.5 的回复: 字节=32 时间=421ms TTL=56
来自 223.5.5.5 的回复: 字节=32 时间=19ms TTL=56
来自 223.5.5.5 的回复: 字节=32 时间=688ms TTL=56

如果 100 次里偶尔出现几次 300ms、500ms、1000ms,这种抖动就足够让远程桌面和会议产生明显卡顿。


三、PowerShell 脚本:统计平均值、最大值和抖动

手动看 ping 输出比较累,可以用 PowerShell 做一个简单统计。

文件名:jitter_probe.ps1

powershell 复制代码
param(
    [string]$Target = "223.5.5.5",
    [int]$Count = 100
)

$latencies = @()
$lost = 0

for ($i = 1; $i -le $Count; $i++) {
    $result = Test-Connection -ComputerName $Target -Count 1 -ErrorAction SilentlyContinue
    if ($result) {
        $latencies += [double]$result.ResponseTime
        Write-Host ("{0}/{1} {2} ms" -f $i, $Count, $result.ResponseTime)
    } else {
        $lost++
        Write-Host ("{0}/{1} timeout" -f $i, $Count)
    }
    Start-Sleep -Milliseconds 300
}

if ($latencies.Count -gt 0) {
    $avg = ($latencies | Measure-Object -Average).Average
    $max = ($latencies | Measure-Object -Maximum).Maximum
    $min = ($latencies | Measure-Object -Minimum).Minimum
    $jitter = $max - $min
    $lossRate = [math]::Round($lost / $Count * 100, 2)

    Write-Host ""
    Write-Host "Target: $Target"
    Write-Host "Avg:    $([math]::Round($avg, 2)) ms"
    Write-Host "Min:    $min ms"
    Write-Host "Max:    $max ms"
    Write-Host "Jitter: $jitter ms"
    Write-Host "Loss:   $lossRate%"
}

运行:

powershell 复制代码
powershell -ExecutionPolicy Bypass -File .\jitter_probe.ps1 -Target www.wenrugou.net -Count 100

可以按下面标准粗略判断:

抖动范围 体感
0-20ms 通常比较稳定
20-50ms 会议和远程桌面可能偶尔感觉不顺
50-150ms 实时业务明显受影响
150ms 以上 很容易卡顿、断音、画面停顿

四、第二步:判断是本地网络还是外部链路

建议同时测三个目标:

powershell 复制代码
powershell -ExecutionPolicy Bypass -File .\jitter_probe.ps1 -Target 192.168.1.1 -Count 100
powershell -ExecutionPolicy Bypass -File .\jitter_probe.ps1 -Target 223.5.5.5 -Count 100
powershell -ExecutionPolicy Bypass -File .\jitter_probe.ps1 -Target 1.1.1.1 -Count 100

判断思路:

现象 可能原因
ping 路由器都抖 本地 Wi-Fi、网卡、路由器负载问题
ping 路由器稳,公网 IP 抖 宽带出口、运营商路径或上行拥塞
国内 DNS 稳,海外 DNS 抖 跨境路径或国际出口波动
所有目标都偶发超时 本机、路由器、Wi-Fi 干扰或局域网拥塞

这个步骤很关键,因为很多人一上来怀疑远端服务,其实问题可能就在本地无线网络。


五、第三步:检查 Wi-Fi 干扰

如果你用的是 Wi-Fi,实时业务卡顿很常见。

Windows 可以先看无线信息:

powershell 复制代码
netsh wlan show interfaces

关注:

text 复制代码
Signal
Radio type
Channel
Receive rate
Transmit rate

如果信号低、速率忽高忽低,或者 2.4GHz 信道很拥挤,就容易出现短时间抖动。

也可以查看附近无线网络:

powershell 复制代码
netsh wlan show networks mode=bssid

常见优化方法:

  • 尽量使用 5GHz 或 6GHz。
  • 远程桌面、会议、游戏尽量接网线。
  • 避免路由器旁边放蓝牙音箱、微波炉、大功率电器。
  • 不要让路由器长期高负载跑下载任务。
  • 2.4GHz 尽量使用 1、6、11 这类常见非重叠信道。

如果 ping 路由器都有明显抖动,优先解决 Wi-Fi,而不是继续折腾远端线路。


六、第四步:排查上行被占满

实时业务很怕上行拥塞。

很多家庭宽带下行很高,上行却不高。一旦有人上传文件、同步网盘、开直播、跑备份,会议和远程桌面就可能明显卡。

Windows 可以看当前连接:

powershell 复制代码
Get-NetTCPConnection | Group-Object State | Sort-Object Count -Descending

也可以查看网络适配器流量:

powershell 复制代码
Get-Counter "\Network Interface(*)\Bytes Sent/sec"
Get-Counter "\Network Interface(*)\Bytes Received/sec"

如果你怀疑后台程序占用上行,可以打开资源监视器:

powershell 复制代码
resmon

进入"网络"标签,看哪个进程正在大量发送数据。

建议排查时先关闭:

  • 云盘同步
  • 自动备份
  • P2P 下载
  • 系统更新
  • 大文件上传
  • 直播推流

然后重新测试远程桌面或会议。如果卡顿明显减少,就说明问题可能和上行拥塞有关。


七、第五步:用 pathping 看路径丢包

Windows 上 pathping 比普通 tracert 多了统计信息。

powershell 复制代码
pathping 1.1.1.1

它会先探测路径,再统计每一跳的丢包情况。

需要注意:

text 复制代码
中间节点丢包不一定是真丢包。
很多路由器会限制 ICMP 响应。
如果最后一跳没有丢包,中间某一跳显示丢包,不能直接判定故障。

更值得关注的是:

  • 最后一跳是否丢包。
  • 某一跳之后所有节点都开始丢包。
  • 延迟是否从某一跳开始明显升高。
  • 同一时间段重复测试结果是否一致。

八、Linux/macOS:用 mtr 看连续路径质量

如果你在 Linux 或 macOS 上,可以用 mtr

bash 复制代码
mtr -rwzc 100 1.1.1.1
mtr -rwzc 100 www.wenrugou.net

关注字段:

字段 含义
Loss% 丢包率
Avg 平均延迟
Wrst 最大延迟
StDev 延迟波动

如果终点 Loss% 为 0,但中间某一跳 Loss% 很高,可能只是中间设备不愿意回复 ICMP。

如果终点也有 Loss%,并且 Wrst、StDev 很高,就要重点关注。


九、实时业务的排障顺序

遇到远程桌面、会议、语音卡顿,可以按这个顺序:

text 复制代码
1. ping 路由器,看本地 Wi-Fi 是否抖
2. ping 国内 DNS,看宽带出口是否稳定
3. ping 海外目标,看跨境路径是否抖
4. 用 PowerShell 脚本统计最大延迟和抖动
5. 检查是否有人上传、同步、下载
6. 用 pathping 或 mtr 看路径质量
7. 切换有线网络再次对比
8. 换时间段测试,判断是否高峰期问题
9. 记录结果,而不是只凭感觉判断

建议记录模板:

csv 复制代码
time,network,target,avg_ms,max_ms,jitter_ms,loss_percent,note
10:00,wifi,router,2,18,16,0,normal
10:05,wifi,public_dns,28,620,592,0,spike
10:10,ethernet,public_dns,24,48,24,0,better

只要有了这些数据,就能很快判断:

text 复制代码
是 Wi-Fi 问题?
是上行拥塞?
是运营商出口波动?
还是远端路径质量差?

十、总结

实时网络问题不能只看丢包率,也不能只看平均 Ping。真正影响体感的往往是最大延迟、P95 延迟、抖动和短时间队列拥塞。

排查时先从本地开始,再逐步向外扩展:路由器、宽带出口、跨境路径、远端服务。这样能避免把所有问题都归因到"服务器慢"或"网络玄学"。

稳如狗网络在这类场景下的思路也类似:先关注连续性和稳定性,再看峰值。对远程桌面、会议、语音、游戏这些实时业务来说,稳定比瞬时速度更重要。

参考资料

  1. 稳如狗网络工具箱:https://www.wenrugou.net/tools
  2. iperf3 官方文档:https://iperf.fr/
  3. MTR 项目说明:https://www.bitwizard.nl/mtr/