《科技创新与品牌》杂志社科学论

新型Web技术在远程桌面连接中的应用

  引言
  VNC (Virtual Network Computing,虚拟网络计算),是一种远程操作执行软件,在各类应用场景中被广泛使用。在云计算技术迅猛发展的今天,用户所请求的服务将更多的在云端服务器上执行,数据也存储在云端服务器上[1]。VNC可以成为终端用户使用云端资源的有效工具,拥有良好的应用前景。近年来,HTML5成为Web技术发展的新热点。特别是HTML5在图像呈现和通信方式上的新技术备受 Web 应用程序开发人员的瞩目。这些技术为基于Web 的VNC连接提供了发展基础。

  1 VNC
  1.1  发展现状
  VNC远程操作执行软件允许用户通过网络从任何终端机器控制并使用远程服务器的桌面环境。用户的桌面状态将会在服务器端得到保持。当用户从不同终端访问服务器时,能够保持上一次的连接状态,保证数据和应用的一致性[2]。2002年,美国电话电报公司AT&T把VNC以GPL形式发布,此后派生出了许多VNC 软件。表一中列举了几种主流的VNC软件。
  1.2 工作原理
  VNC由三部分构成:服务器、客户端和RFB 通信协议。RFB(Remote Frame Buffer,远程帧缓冲协议)是一种远程图形界面访问协议。它能发送服务器桌面图像到客户端,同时接收客户端操作并把事件发送到服务器。RFB协议对终端设备的资源需求很小,是一种真正面向瘦客户端的协议[4]。
  VNC的基本工作原理在于传输桌面图像。服务器以一定的频率扫描桌面像素,并把桌面图像以位图的形式传送到客户端。这种实现方式相对简单,但是数据量大。为了减少数据传输量,VNC采用增量传输的方法,即只传送发生变化的区域内的像素数据。这种方式在屏幕只有小部分区域发生变化时工作良好。但是当用户开关窗口或观看视频时,对带宽的需求会显著增加[4]。

  2 HTML5
  2.1 发展现状
  HTML5是HTML下一个主要的修订版本,目前仍处于发展制定阶段。HTML5 添加了许多新的语法特征,其中包括<video>,<audio>和<canvas>等元素。这些元素是为了更容易地在网页中添加和处理多媒体和图片而设计的[5]。目前,Firefox、Chrome、Opera、Safari、Internet Explorer9等主流浏览器已陆续开始支持 HTML5 技术。
  2.2 WebSocket
  WebSocket是HTML5提供的一种允许浏览器与服务器之间进行全双工通信的网络技术。为了实现即时通信,目前常用的技术是轮询。轮询是指浏览器以特定的频率向服务器发出HTTP请求,之后由服务器返回数据给客户端浏览器。轮询模式的缺点是,浏览器需要不断向服务器发出请求。由于HTTP请求的报头很长,而报文数据可能是一个很小的值,这样将会浪费网络带宽和服务器资源。面对这种情况,HTML5定义了新的 WebSocket协议,以便节省资源,并达到实时通信的效果。使用WebSocket,服务器可以随时向浏览器推送信息,这在传统的无状态HTTP连接中是不可能实现的。
  WebSocket的协议名称是ws。在新的通信方式下,网络连接的地址将会写为ws://localhost:8080/webSocketServer。由于ws是不同于HTTP的新协议,它需要服务器和客户端同时支持才能正常运行。目前,服务器对WebSocket的支持尚不普遍。下表是浏览器对 WebSocket的支持信息。可以看出,现代浏览器对于WebSocket的支持是比较广泛的[6]。
  3 基于WebSocket的VNC连接
  3.1 noVNC简介
  如果将VNC客户端用纯粹的 HTML5来实现,这样的应用将可以继承VNC和HTML5跨平台、高效率通信等特性,在远程连接中将有良好的应用前景。noVNC是一种基于HTML5和javascript的VNC客户端,采用了WebSocket通信技术,因此需要同样支持WebSocket的VNC服务器才可以实现连接。但是目前,服务器对WebSocket的支持尚不普及,提供支持的只有x11vnc和 PocketVNC两种服务器。noVNC通过加设转换WebSocket为TCP socket的代理服务器,使得客户端可以连接到任意标准的VNC服务器。

  4 三种VNC连接对比
  建立VNC连接有两种传统方法:使用 VNC 专属的客户端或使用基于Java的浏览器插件。这两种方法的共同特点是,都需要客户在本地进行相应软件的安装。noVNC连接则不需要在客户端安装特定软件,只要通过浏览器从网页上发起连接即可。
  在局域网环境内,通过100Mbps以太网实现从Windows客户机到TightVNC服务器的连接。实验表明,采用这三种方式的连接,在进行文件操作时普遍会感觉到操作延时。但对于常用的应用程序,如Word等,性能都普遍可以接受。
  当三种连接进行第一帧初始化时,网络带宽的占用情况略有不同,测试结果如上图所示。从标准客户端连接,在图像进行第一帧初始化时,带宽占用率明显高于另外两种类型连接。重复进行初始帧渲染,可以观察到noVNC连接在三种连接类型中的带宽占用率是最低的。虽然对于单台客户机来说,带宽占用率的降低并没有显著影响。但是当网络上活跃用户越来越多时,每个用户带宽占用的些许降低对全网来说却是意义重大的。

  5 结论
  随着云计算技术的发展,基于RFB协议的VNC因其开源、跨平台、易于实现等特性,在各类应用场景中得到了广泛使用。本文介绍了VNC和HTML5技术的发展历程以及应用现状。将VNC客户端用纯粹的HTML5技术实现,这样的应用将会有良好的应用前景。文中对三种不同类型的VNC连接进行了实验对比。实验的结果表明,基于WebSocket的noVNC连接,其初始化时的带宽占用率在三者中是最低的,而在性能方面和其他两种连接表现相当。该结果充分说明了HTML5新技术的发展潜力。在未来,WebSocket在Web应用中会有良好的实用价值。     

                                     责编/王蒙

参考文献
[1]陈全, 邓倩妮.云计算及其关键技术[J].计算机应用. 200929(9): 2562-2567.
[2]刘奎恩, 王青.一种基于VNC的智能应用服务系统的设计和实现[J].计算机工程与应用, 2004
[3] Virtual  Network  Computing  [EB/OL],
http://en.wikipedia.org/wiki/Virtual_Network_Computing
[4]Tristan Richardson, RealVNC Ltd, The RFB Protocol [EB/OL], http://www.realvnc.com/docs/ rfbproto .pdf 2010
[5]邢晓鹏.HTML5核心技术的研究与价值分析[J]. 价值工程,2011
[6]W3C, The WebSocket API [EB/OL],
http://www.w3.org/TR/2012/CR-websockets-20120920, 2012
[7]黄晓安, 何亮, 许宁.使用HTML5 WebSocket构建实时Web应用.IBM developerWorks, 2011