logo NodeSeekbeta

大小包tcping的延迟和win rdp显示的延迟

在 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 以降低延迟吗?

  • 想了解

  • ac01
    想了解

  • RDP协议十分复杂 你可以了解下guacamole的实现。

  • 想了解如何通过注册表或组策略强制 RDP 开启 UDP 以降低延迟吗? 组策略里 remote desk 里面可以调整RDP 工作协议 和加密方式

  • @angraya #4 我都打开了现在也还是tcp。好像无法指定用UDP吧

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有60108位seeker

🎉欢迎新用户🎉