您的位置:首页 > 理论基础 > 计算机网络

虚拟网络计算 (Virtual NetWork Computing)

2012-10-09 21:19 162 查看
TRISTAN   RICHARDSON,   QUENTIN   STAFFORD-FRASER, 
KENNETH   R.   WOOD,   AND   ANDY   HOPPER* 
The   Olivetti   &   Oracle   Research   Laboratory 
Reprint   from 
IEEE   Internet   Computing 
Volume   2,   Number   1 
January/February   1998 

所谓的网络计算机软件(NC)其目的是为了给用户提供从简单的、廉价的设备上对集中的资源的访问。这些廉价的设备做客户端,连在网络中的服务器则提供各个用户喜爱的或是个人定制的应用程序、数据以及存储空间。我们在这个想法的基础上又进了一步。在虚拟网络计算(VNC)系统中,服务器不但提供应用程序和数据,而且向所有连接在Internet中的使用NC软件的计算机提供对服务器的整个桌面环境的存取。无论在何时何地重新存取一个VNC桌面,它的状态和配置都和上一次看到时是一模一样(甚至是光标停放的位置)。 
同当前许多网络应用程序对比,可以看出VNC是为用户提供一种从世界各地访问他们家里计算机的方法,而其它一些应用程序主要是为用户提供从他们家里访问世界各地的网络资源的服务。Olivetti   &   Oracle   Research   Laboratory(ORL)   实验室的成员使用VNC从他们在剑桥大学办公楼的办公室中访问他们自己的UNIX或PC的桌面,或者从世界各地的任何可以使用的计算架构(包括飞机场的公共网络浏览终端)访问他们自己的UNIX或PC的桌面。这样,VNC就提供了一种无论什么设备都不用携带的移动计算。而且,VCN允许在几个不同的地方同时访问同一个桌面,因此它支持一种CSCW(Computer-Supported
  Cooperative   Work)式的应用程序共享。 
VNC所用的技术只是简单的远端显示协议。正是这个简单的协议使VNC功能如此地强大。同其它的如   X   Window   System和Citrix’s   ICA,VNC协议完全独立于操作系统、窗口系统和应用程序VNC系统可以免费从ORL(Oracle   Research   Laboratory)网站http://www.orl.co.uk/vnc/
  上下载。 
我们从在thin-client架构上的工作中总结VNC的发展来开始我们的论文。然后我们回描述VNC协议的结构,同时我们会通过讨论VNC技术当前的应用以及随着客户机和服务器的发展VNC将来会发展成什么样来进行总结。 

VNC的起源 
X   Window   System   允许应用程序在远程计算机上显示用户界面。ORL实验室在我们的传输(Teleporting)系统中扩展了这一功能,它是通过允许运行X应用程序(X   Application)的用户界面动态重定向到别的显示系统上来实现的。在ORL实验室中传输(teleporting)成为日常使用已经有几年了。 
l X   要求需要显示的机器上必须安装X   Server程序。这个重量级的软件需要大量的资源,这样就使象NCs和个人数字助手(PDAs)无法运行它。 
l X   的安全模型(security   model)使让远程计算机使用你的显示会有内在的安全隐患。相应的大多数系统管理员关闭X的流量使这些流量不能进出他们的站点。 
l 在反应时间很长的(high-latency)链路上,由于典型的应用程序所做的往返通信(round-trips)使应用程序的启动变得非常的慢。(尽管有一些特殊的代理可以缓和这个问题,如Low   Bandwidth   X[LBX])。 

除了这些技术问题之外还有非技术问题,X并不是Windows操作系统,而且这个世界越来越变得以微软为主导了(increasingly   Microsoft-dominated)。 

Videotile设备:   一个极端的瘦客户端(ultra-thin   client) 
1994年,ORL实验室做了一个Videotile设备作为超级的瘦客户端技术的试验。Videotile是有一个LCD显示屏、一只手写输入笔和一个ATM网络接口的显示设备。它被设计用来显示高质量的视频,但是我们也想用它来与应用程序进行交互。作为这个终端的第一个试验,我们把远程计算机的屏幕作为视频源简单的把用户界面作为Videotile设备的未处理的视频传递给该设备。它出人意料的工作的非常好,但是占用相当多的带宽。 
通过在应用程序端添加少许的智能我们就能把用户界面当作视频来对待,但是仅仅传送屏幕中改变的那些部分。这种想法就发展成为现在的VNC协议。 

Java:通过浏览器进行访问 
当1995年Sun   公司发布了Java语言的alpha版本和HotJava浏览器时,我们意识到可以通过Java来实现Videotile装置从而可以通过浏览器访问应用程序。瘦客户端的范例使采用Java十分简单(straightforward)我们用了一天就写完了原始的Java客户端,作为结果的class文件的大小仅仅只有6k。逐渐的这就被别的地方更详细的描述为VNC
  applet。现在所有兼容Java的浏览器都可以提供对用户桌面的访问,这就给它赋予了传送系统的灵活性,而且是在全局范畴上。 

VNC协议 
VNC所使用的技术是一种访问图形用户界面简单的协议。它工作在framebuffer层上,一次可以应用于所有的操作系统、窗口系统应用程序甚至是以某种方式进行连接通讯的任何设备上。这个协议可以用于任何传输协议之上,如TCP/IP协议。用户用来进行交互的终端(即显示和输入设备)被称为VNC客户端或VNC   Viewer。引起Framebuffer改变的终端(即窗口系统和应用程序)就是VNC
  Server(见图1)。 
VNC是一个真正的瘦客户端系统,它的设计思想使得对客户端的要求变得很少,因此就简化了使客户端可以运行在各种硬件平台上的任务。 

单一的图形原语 
协议的显示端是基于单一的图形原语:   把一个指定的矩形区象素数据放在给定的(x,y)坐标处。乍一看来,这不是一个绘制用户界面内容的有效地方法。然而通过对象素数据使用不同的编码方案就使得在交替使用(trade   off)网络带宽、客户绘制速度和服务器处理速度等参数时有了很大的自由度。 
最小的通用命名方法(the   lowest   common   denominator)被称为未加工的编码。在这种编码技术中,矩形区域的象素点只是简单的按扫描线顺序从左到右的传递。所有的VNC客户端和服务器都必须支持这种编码。然而,实际上用于一个给定连接上的编码是可以按照客户端和服务器的性能及它们之间的连接状况来进行协商的。 
例如,copy-rectangle   编码是一种十分简单、有效地编码技术,它可以用在当客户端的framebuffer中别的地方已经有了相同的象素数据的情况。线路中的编码只是简单的x,y坐标。它给定了framebuffer中的一个位置,客户端从这个位置开始拷贝矩形象素数据。典型的编码应用是当用户在屏幕上移动窗口或滚动窗口内容。 
大多数客户愿意支持copy-rectangle编码,因为它通常很容易实现、节省网络带宽同时很可能比重新传递未处理的数据更快。然而在用户无法很容易的从framebuffer中读回数据的时候,用户可能会指定不用这种编码方式传送数据。 
典型的工作站桌面有大面积的颜色和文本。我们最有效的编码技术就是通过描述组成多数颜色的矩形(背景)和不同颜色的子矩形来利用这一现象的。还有无数其它的可行方案。我们可以对静态文本传输使用JPEG编码,或者是动态图象采用MPEG编码。象素数据缓存方案可以对相同字符文本的多个事件进行有效的编码(通过参照第一个事件)。 

适应性更新: 
象素数据矩形使framebuffer更新(或简单的称更新)。一次更新就代表了从一个可用的framebuffer状态到另一个可用的framebuffer状态的改变。在这种意义上,更新就会同视频的帧差不多。不同之处在于它一般只影响framebuffer中很小的一个区域。每一个矩形可以用不同的方案进行编码。这样服务器就可以根据特定的被传送的屏幕的内容和可用的网络带宽来选择最适合的编码方式。 
更新协议是基于客户端命令驱动的。就是说,服务器只向那些有明确的更新请求的客户端发送更新命令。从上一次客户端更新请求到现在的所有的屏幕改变都要被合并到一个更新命令中。这就赋予这个协议一个可适应的性质:客户端或网络越慢刷新的频率越低。在一个快速的网络中当用户在屏幕上拖动窗口时它会平滑的移动,并且在所有的中间位置窗口都将被绘制。在慢速链路中,如通过调制解调器,客户端请求刷新的频率就会降低,窗口就只会显示在部分位置上。这就意味着如果网络带宽允许,将会尽快的显示最终状态,因此加快了交互的速度。 

输入 
VNC协议的输入端是基于标准的以键盘和多按键点击设备为基础的工作站模型。输入事件也可以从其它的非标准的I/O设备合成。例如,在Videotile设备上用于手写笔的手写输入识别引擎就可以产生键盘事件。 

连接建立与撤销 
为了建立一个客户到服务器的连接,首先服务器用challenge-response方案请求来自客户端的身份验证;在这个时候客户端需要用户输入密码。然后服务器和客户端交换信息来协商窗口大小、象素点格式和编码方案。客户请求更新整个窗口,会话开始。由于客户端无状态数据的特点,任何一端在没有相反的结果(adverse   consequences)的任何时候都不能关闭连接. 

VNC   查看器(VNC   Viewer) 
日常使用中,我们喜欢使用更具描述性的术语Viewer,而不是广泛使用的Client。写一个VNC   Viewer是一个简单的工作,尽管它可以在任何瘦客户系统上使用。它仅需要一个可靠的传输(通常试TCP/IP),和一个显示象素点的方法(要么重定向写入到一个Framebuffer中,要么通过一个窗口系统going   through   a  
windowing   system)。 
我们已经为ORL实验室中所有可用的联网显示设备写了Viewers,包括Videotile(原始的VNC   Viewer),基于X的Viewer(它运行在Solaris,Linux和Digital   Unix   Workstations),可以运行在Windows   NT   和95上的Win32   Viewer和可以运行在兼容Java的浏览器中运行的Java
  applet。我们的实验室成员就用这些Viewers来访问它们的个人computing   environments。 

VNC   服务器 
写一个VNC   server比写一个viewer稍微难一点,因为所用的协议被设计成客户端越简单越好,通常情况下是通过服务器来实现必要的翻译(例如,服务器必须提供客户端想要的象素点格式)。我们已经为我们使用的两个主要的平台编写了servers,X(就是UNIX)和Windows   NT/95。 
我们所开发的第一个server是基于X的server。一台UNIX机器可以为不同的用户运行很多VNC   server,每一个描绘一个不同的VNC桌面。每一个桌面就像一个有一个root窗口而且root窗口上可以显示几个X应用的虚拟的X   display。 
Windows   VNC   server创建起来更困难一些。Windows有几个地方要向系统中插入hooks来监视显示更新,同时多用户模型定义的也很不清楚。我们当前的server只是简单的将真是显示镜像到远程客户端,这就意味着一台PC机只可以有一个VNC桌面。 
我们同时也创建了瘦小型server它使用一个简单的工具包而且并不产生桌面。例如,“VNC   CD   播放器”就使用直接使用VNC产生CD播放用户界面,而没有参照任何窗口系统或framebuffer。这样的servers可以运行在非常简易的硬件上,而且可以被任何标准的VNC   viewer访问。 

任何用户界面,任何地方 
在ORL实验室,我们已经通过使用VNC为工作站的图形用户接口添加了灵活性,但是这种概念或者说远程交互的方式并不是最新的。这个协议的简便性允许它广泛的应用到多种硬件平台。诸如CD播放器等消费者的电子设备通常有一个非常专用的用户界面,典型的是使用一个专用的显示设备。This   has   traditionally   prevented   such
  interfaces   from   being   mobile   in   VNC   sense   of   the   word. 
但是我们认为VNC的用途可以被扩展来使用户可以有如下的用法。 
l 当他们下班驱车回家的路上可以通过手机控制家中的视频录像机。 
l 通过调制解调器使用图形界面播打一个电话响应装置并且给它重新编程。 
l 把汽车音像、GPS接收器显示显示在汽车的仪表板上,而不用去管安装的是什么牌子的设备。 

当前,这些功能都需要显示设备有远程系统的详细的信息,并效仿远程系统的用户界面或者是一个确实合适的可供选择的用户界面。例如,你的视频播放器可能需要一个为手机操作系统设计的驱动程序。一个更简单的方法是使用为远程设备设计的并随远程设备一块提供的用户界面,但是这需要本地交互。 
由于这个原因我们需要一套common   “phonemes”,利用它我们可以建立许多的GUIs。这就是VNC协议(或者是和它相似的东西)可以做的。它简单到可以在用户的廉价电子设备上实施,然而,它可以被用做描述大多数现代用户界面的基石(building   block)。通过使用IEEE-1394   Firewire,USB和IrDA标准,我们把物理接口连接到不同的设备上;通过使用VNC我们可以添加标准的即插即用的用户界面。把PDA连接到USB口,立刻使PDA应用程序在工作站的屏幕上可用这样图象就可以走进任何工作站,或者把PDA插到汽车上用引擎管理单元在PDA的屏幕上显示服务信息。这反应了他可以在任何工作站、PDA和汽车上。 
引擎管理的例子阐明了一个重要的观点:一个标准的GUI协议允许它们的没有显示的物理设备在这样的一个显示设备可用时(另加)可以提供图形信息。如果你的PDA可以通过IrDA链路访问显示设备和键盘,那么它可能会缩小到只需一只钢笔那么大。然而当它放在一个LCD控制面板附近或一个大时电视机附近时,这个微型PDA仍然能够显示PowerPoint式的介绍。 
这个模型同Web相似,在服务自己没有I/O能力的地方它会等待用户提供一个web浏览器。这个策略的成功导致了在打印服务器、交换机、路由器和其它一些设备上嵌入HTTP守护进程(deamon)。但是对于一个网络服务器,它必须有一个TCP栈和一个IP地址。对于一个浏览器,它必须至少有赋予字体的能力和分析HTML代码的能力。 
相反,VNC仅需要可靠的传输介质和最简单的显示能力。然而一页HTML代码通常比同等的的VNC要传输更少的字节,后者具有无限的灵活性。 

REFERENCES 
1.   T.   Richardson   et   al.,   “Teleporting   in   an   X   Window   System   Environ-ment,” 
IEEE   Personal   Comm.,   No.   3,   1994,   pp.   6-12.   Also   available   as 
ORL   Technical   Report   94.4,   ORL,   Cambridge   CB2   1QA,   England. 
2.   T.   Richardson,   “Teleporting—Mobile   X   Sessions,”   Proc.   9th   Ann.   X 
Technical   Conf.,   Jan.   1995.   Also   in   The   X   Resource,   Issue   13,   O’Reilly 
&   Associates,   Jan.   1995.   Also   available   as   ORL   Technical   Report   95.5, 
ORL,   Cambridge   CB2   1QA,   England. 
3.   Open   Group,   “X11R6.3   (Broadway)   Overview,”   http://www.open-group.  org/tech/desktop/x/broadway.htm#lbx   (current   September   1997). 
4.   K.R   Wood   et   al.,   “Global   Teleporting   with   Java:   Toward   Ubiquitous 
Personalized   Computing,”   Computer,   Vol.   30,   No.   2.,   Feb.   1997,   pp. 
53-59.   Also   available   as   ORL   Technical   Report   96.2,   ORL,   Cambridge 
CB2   1QA,   England. 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息