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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1284055/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 13:00:11  来源:igfitidea点击:

Why is RDP so fast compared to other remote control software?

windowsrdp

提问by Gulbahar

I use RDP-based Windows' Remote Client Desktop utility to connect to my desktop from my laptop. It's much faster and looks better than remote control applications like TeamViewer etc.

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

Out of curiosity, why is RDP better?

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

Thank you.

谢谢你。

采纳答案by ypnos

RDP is a specific protocol which allows to transmit low-level screen drawing operations. It is also aware of pixmap entities on the screen. For example it understands when an icon is drawn and caches it (typically in a lossy compressed format) on the client side.

RDP 是一种特定的协议,它允许传输低级屏幕绘制操作。它还知道屏幕上的像素图实体。例如,它了解何时绘制图标并将其缓存(通常以有损压缩格式)在客户端。

Other software does not have this low-level access: It waits for the screen to change and then re-transmit a capture of the screen or the changed regions. Whenever the screen changes, a pixmap representation has to be transmitted. Because this is lossy compressed in general, it also looks worse.

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

回答by Ferruccio

There are two major factors at work which determine the performance of a remote control product:

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

How does it detect when changes occur on the screen?

它如何检测屏幕上何时发生变化?

Some RC products divide the screen into tiles and scan the screen frame buffer periodically to determine if any changes have occurred.

一些 RC 产品将屏幕划分为瓦片并定期扫描屏幕帧缓冲区以确定是否发生了任何变化。

Others will hook directly into the OS. In the past this was done by intercepting the video driver. Now you can create a mirror driver into which the OS "mirrors" all drawing operations. This is, obviously, much faster.

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

How does it send those changes across the wire?

它如何通过网络发送这些更改?

Some products (like VNC) will always send bitmaps of any area that changed.

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

Others will send the actual operation that caused the change. e.g. render text string s using font f at coordinates (x,y) or draw bezier curve using a given set of parameters and, of course, render bitmap. This is, again, much faster.

其他人将发送导致更改的实际操作。例如,使用坐标 (x,y) 处的字体 f 渲染文本字符串 s 或使用给定的一组参数绘制贝塞尔曲线,当然还有渲染位图。再次,这要快得多。

RDP uses the faster (and more difficult to implement) technique in both cases. I believe the actual protocol it uses is T.128.

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

Bitmaps are usually compressed. Some products (like Carbon Copy) also maintain synchronized bitmap caches on both sides of the connection in order to squeeze out even more performance.

位图通常被压缩。一些产品(如 Carbon Copy)还在连接的两端保持同步的位图缓存,以挤出更多的性能。