在 Windows 远程桌面(RDP)的连接状态栏中显示的延迟(RTT)和带宽,既不是基于传统的 ICMP Ping,也不是简单的 TCPing,而是一套专门针对远程显示协议设计的带内(In-band)测量机制。
具体的技术细节如下:
1. 它是如何测量延迟(RTT)的?
RDP 并不依赖外部的 ICMP 包,因为它需要反映的是应用层真实经历的往返时间。
- 带内测量: RDP 客户端会定期发送一个微小的探测报文(或利用现有的数据包),服务器收到后立即返回确认。
- 非 ICMP: 即使你的服务器防火墙禁用了 ICMP(即
ping不通),RDP 内部显示的延迟依然存在并能正常更新。 - TCP 与 UDP 的区别: * 在纯 TCP 模式下,它测量的是应用层的响应时间。
- 在启用 UDP (RemoteFX / RDP Shortpath) 的情况下,它会通过 UDP 报文进行更频繁、更准确的 RTT 测量,因为 UDP 不受 TCP 拥塞控制和重传机制的干扰,更能反映真实的物理线路延迟。
2. 带宽是如何估算的?
RDP 显示的“带宽”并非你的物理带宽上限,而是当前连接可用的吞吐量估算值。
- 数据填充测试: 在连接初始阶段或空闲转繁忙时,RDP 会发送一系列大小不等的数据块,通过计算这些数据块被确认的速度来推算带宽。
- 动态调整: 如果网络出现丢包或延迟抖动,RDP 会自动下调带宽估算值,并降低画质(如减少颜色深度、禁用抗锯齿)以保证操作流程度。
3. 三者的对比
| 测量方式 | 协议层 | 特点 | RDP 是否采用 |
|---|---|---|---|
| ICMP Ping | 网络层 (Layer 3) | 容易被防火墙拦截,反映物理链路状态,但不代表应用响应。 | 否 |
| TCPing | 传输层 (Layer 4) | 测量三次握手时间,受操作系统 TCP 栈处理速度影响。 | 类似但不同 |
| RDP 状态显示 | 应用层 (Layer 7) | 反映 RDP 协议内部的实际往返耗时,包含了一定的处理开销。 | 是 |
总结
你看到的延迟是 RDP 协议自身的报文往返时间。
如果你的连接使用了 UDP 协议(通常在状态栏显示为“连接质量:优”且包含 UDP 标识),这个数值会非常接近物理线路的真实延迟;如果是纯 TCP 连接,在高丢包环境下,显示的延迟会因为 TCP 重传机制而远高于实际的 ping 值。
想了解如何通过注册表或组策略强制 RDP 开启 UDP 以降低延迟吗?
想了解
想了解
RDP协议十分复杂 你可以了解下guacamole的实现。
想了解如何通过注册表或组策略强制 RDP 开启 UDP 以降低延迟吗? 组策略里 remote desk 里面可以调整RDP 工作协议 和加密方式
@angraya #4 我都打开了现在也还是tcp。好像无法指定用UDP吧