Streaming RDP/终端服务与VNC流技术的区别

Streaming RDP/终端服务与VNC流技术的区别,streaming,remote-desktop,remote-access,vnc,Streaming,Remote Desktop,Remote Access,Vnc,作为客户端支持工具的一部分,我希望提供一些功能,以便能够请求查看/远程控制桌面会话。有很多方法可以获取屏幕截图,然后对其进行流式处理,但我想特别了解一下RDP(远程桌面/终端服务)与VNC体验为何如此不同。我使用RDP与VNC只是因为它们似乎使用完全不同的方法将屏幕流式处理到客户端 如果我不得不猜测的话,RDP似乎传输位图图形块(比如100x100px)以构建完整的图片(这可能非常慢)但是,VNC似乎可以极快地将正常绘制的形状/填充或字体绘制传输到客户端。VNC似乎可以拍摄屏幕的巨大快照,比较以

作为客户端支持工具的一部分,我希望提供一些功能,以便能够请求查看/远程控制桌面会话。有很多方法可以获取屏幕截图,然后对其进行流式处理,但我想特别了解一下RDP(远程桌面/终端服务)与VNC体验为何如此不同。我使用RDP与VNC只是因为它们似乎使用完全不同的方法将屏幕流式处理到客户端

如果我不得不猜测的话,RDP似乎传输位图图形块(比如100x100px)以构建完整的图片(这可能非常慢)但是,VNC似乎可以极快地将正常绘制的形状/填充或字体绘制传输到客户端。VNC似乎可以拍摄屏幕的巨大快照,比较以前的图像,并将更改流式传输到客户端

我觉得RDP是一个比其他任何协议都更高质量、更平滑的协议,那么它使用什么技术来实现这一点呢


编辑只是为了澄清一下,我问的是这些专门作为流协议编程方法的图形技术,而不是用于解决此业务需求的现有产品/技术。

正如您所发现的,它们在流更改的方式上都有很大的不同。 MS的RDP协议是一个可在线购买的RDP协议的扩展

RDP实现了许多相互补充的带宽节省技术,使其在低带宽上非常高效

另一方面,VNC有非常基本的压缩技术:它将发送已更改的位图块,并将使用基本类型的压缩,从RLE到jpeg,有效地传输这些块。
不幸的是,它在低带宽上仍然非常浪费

VNC基本上不知道用于构建屏幕的底层图形原语。这使得它在任何机器上都很容易使用,因为它只监视屏幕位图的更改。
另一方面,RDP更深入地钩住了Windows API,能够根据在客户端上生成相同更新所需的最小信息量优化其流

如果要集成远程桌面功能,您有两种选择:

  • 对于RDP,您可以使用用于web远程功能的ActiveX。您可能需要查看以将其集成到您自己的软件中。
    如果您想深入了解这一点,可以使用linux客户机的源代码,该客户机通过RDP连接到Windows机器

  • 对于VNC,有许多开源实现。
    FogCreek的副驾驶实际上使用了一个,你可以在它的基础上得到它


和上也有许多项目。

正如雷诺所说,VNC只是逐块发送位图更改,而不知道内容是什么。RDP更聪明

您可以从这两个规范中查看RDP的具体功能:

协议级别:

图形级别:

我认为RDP的最大收益来自:

  • 缓存:客户端可以存储大量以前看到的块,服务器可以告诉客户端如何使用这些块。而且这些块是持久的,因此当客户端连接到服务器时,它可以公布它在磁盘上的块。在移动窗口时非常有用。窗口的许多部分,如标题栏,都是我也是

  • 线条/块绘图。正如您所猜测的,RDP有线条、多边形和矩形绘图的操作。在绘图窗口中,这些操作被大量使用

  • RDP有一种方法可以发送gylphs来获取字体,并告诉客户端渲染它们

  • 光标呈现。光标图标作为图示符发送。VNC只使用一个点

这些都是我想到的大问题。查看协议规范第2.2.7节的功能集,以获得完整的绘图功能列表