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

余生颓废 提交于 2019-12-02 20:24:31

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.

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.

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.

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.

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.

RDP uses the faster (and more difficult to implement) technique in both cases. I believe the actual protocol it uses is 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.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!