为什么RDP与其他远程控制软件相比如此之快?

我使用基于RDP的Windows远程客户端桌面工具从笔记本电脑连接到我的桌面。 它比远程控制应用程序,如TeamViewer等更快,看起来更好。

出于好奇,为什么RDP更好?

谢谢。

RDP是一个特定的协议,允许传输低级别的屏幕绘制操作。 它也知道屏幕上的像素图实体。 例如,它理解何时绘制图标并在客户端对其进行缓存(通常采用有损压缩的格式)。

其他软件没有这个低级别访问:它等待屏幕更改,然后重新传输屏幕捕获或更改的区域。 每当屏幕变化时,都必须传输一个像素表示。 因为这是一般的有损压缩,它也看起来更糟。

有两个决定遥控产品性能的主要因素:

如何检测屏幕上发生更改?

一些RC产品会将屏幕分成多块,并定期扫描屏幕帧缓冲区以确定是否发生了任何更改。

其他人将直接挂钩到操作系统。 在过去,这是通过拦截视频驱动程序完成的。 现在您可以创建一个镜像驱动程序,操作系统将镜像所有绘图操作。 这显然要快得多。

它如何通过电线发送这些变化?

某些产品(如VNC)将始终发送任何已更改区域的位图。

其他人将发送导致变化的实际操作。 例如在坐标(x,y)处使用字体f来呈现文本字符串s,或者使用给定的一组参数来绘制贝塞尔曲线,并且当然是渲染位图。 这又快得多了。

在这两种情况下,RDP都使用更快(也更难实施)的技术。 我相信它使用的实际协议是T.128。

位图通常是压缩的。 某些产品(如Carbon Copy)也会在连接的两侧保持同步的位图缓存,以便获得更高的性能。