VNC 发展动态

不容错过的虚拟化工具

Virtual Network Computing (VNC) 的使用非常广泛,但人们对它还是存在很多误解。本文将仔细描述令 VNC 成为日常开发和管理工作中不可或缺的因素的基本功能,同时介绍 VNC 的一些最新进展。

Cameron Laird, Vice president, Phaseit Inc.

Cameron Laird 是 developerWorks 长期投稿者和前专栏作家。他经常编写关于促进其公司应用程序开发的开源项目的文章,主要关注可靠性和安全性。



2007 年 4 月 19 日

您擅长使用 Virtual Network Computing (VNC) 吗?如果不擅长,您将发现,即使对此桌面共享系统 有些许了解,也会为您在履行日常开发或系统管理职责时带来莫大的帮助。

如果您已经熟悉 VNC,那就更好了:您尽可欣赏并体验基于 VNC 的最新创新。无论您从何处开始,下面的教程:

  • 引言
  • 作为配置组件的 VNC
  • 作为开发平台的 VNC

都应至少包括一些场景,以突出 VNC 的不可或缺性。

关于一个重要工具的简介

顺便提一下,用不可或缺 来形容 VNC 再恰当不过了;它与 sshscreenExpect 以及其他一些被广泛应用的工具属于同一类别,这些工具可使工作效率成倍 提升,而不仅仅是小幅提高。VNC 的贡献在于,用户可以方便地让计算进程在此处 运行,却在他处 显示结果。使用 VNC 可以:

  • 只需回头即可查看远在 5000 公里以外的同事的工作;
  • 在周末从家中连接到办公桌面,查看花费了一个星期才设置好的进程;
  • 通过指向-点击序列轻松指导位于异地的 AIX 新手,省去电话徒说之苦;

还有更多。开始之前,最好先做些准备工作,这只需几分钟即可。

为完成第一次试验,您需要:

  • 安装 VNC 服务器(假定在 AIX 主机上);
  • 在任何便利的网络桌面上安装 VNC 客户机或查看器
  • 启动服务器和查看器;然后
  • 启动在一台计算机上运行、而在另一台计算机上显示结果的测试应用程序。

让我们深入考察每个步骤,以确保您取得成功。

服务器安装及其他事项

VNC 基于一个名为 RFB 的公共网络协议(要进一步阅读有关本文中提到的技术主题的信息,请参见下面的参考资料)。VNC 软件分为专有版本和免费版本,可供多种平台使用;无论是大型机,还是手表般大小的小工具,VNC 都同样适用。具体对 AIX 而言,开始试验的一种简便方式是使用 Toolbox for Linux® CD 上的副本,此 CD 随 AIX 提供。目前,RPM 还可以通过 IBM AIX Toolbox 获得。虽然您能够以非特权用户的身份启动 VNC,甚至可以安装它的本地副本,但您可能会发现,您只需成为 root 即可进行首次安装,这是最简单的一种方式。

让我们来明确一下第一次试验将提供哪些内容。“Toolbox”安装将同时提供 VNC 服务器和客户机;后者通常称为查看器。要开始试验,您可能只需在 AIX 主机上安装服务器即可。在查看计算机(可能不是 AIX,甚至可能没有装配 X11)上,您需要选择一个查看器。对于 Windows®、Linux 和 MacOS 等常见的桌面,有多种不同的查看器可供使用。

VNC 与 X11 之间有很多差异。X11 始终被认为是查看远程计算结果的标准方式,因此从某种角度来讲,X11 和 VNC 存在竞争关系。令人感到困惑的是,这两个工具还使用表面上截然相反的术语:

  • X11:
    • 服务器显示图形
    • 客户机计算要显示的结果
  • VNC:
    • 服务器呈现图形——通常位于执行计算的同一主机上
    • 客户机或查看器显示图形

从网络角度来看,它们对“客户机”和“服务器”的用法是一致的。但如果稍不注意,这些标签便会让人感到迷惑不解。

X11 和 VNC 既是对手,也是队友。在下面,您将看到 AIX 下的 VNC 服务通常都依赖于 X11。与单独使用 X11 相比,X11 和 VNC 的组合具有多项优点:例如,与(单纯的)X11 相比,VNC 在较长和/或较慢的连接上工作时运行较好,有时是好得多。另外,VNC 查看器无需进行字体管理,因而比安装 X11 服务器要容易得多。现在,除了在 UNIX® 主机的控制台上外,通常都将 X11 与 VNC 一起使用。

在选择了各个部分后,请在 AIX 主机上用 vncserver :2 或类似命令以及保障安全的密码启动 vncserver。这会新建一个 X 服务器;另外,请在 AIX 主机上启动 xterm -display :2,以便提供一些用于显示的数据。

现在,请转到已安装 VNC 查看器的桌面。启动一个指向 $AIX_IP_ADDRESS:2 的新查看器,输入密码。稍等片刻,您应看到 AIX 控制台,其中会显示已弹出的全新 xterm

变体

您刚刚取得了一个重要的里程碑。您的 VNC 会话将“类似于”X,其中,您用于查看结果的计算机并不是执行大量计算的计算机。但请注意,它并不同于 X:请关闭查看器。重新启动查看器,并重新连接。您又返回到刚才的桌面,所有程序仍在运行!这说明,与传统的 X11 不同,VNC 是“可恢复的”。

您将希望进行更多 的试验,以便根据需要对 VNC 进行自定义。请记住,VNC 是一个支持多种实现的开放标准,这一点我已在前面提到。例如,Bull 免费软件网站有一个备选服务器,除其他功能外,它还可以由 inetd 有效运行。

下面是要考虑的另外一些可能性:

  • 通过 -geometry 参数,您可以设置更大的 framebuffer。大多数服务器的缺省设置都是 640x480,此大小虽然是今天常见硬件上的设置,但它在首次发明 VNC 的大约十年前更为适用。
  • 如果您的 AIX 安装足够新,您甚至无需安装查看器即可使用 VNC;您只需将启用了 Java™ 的浏览器指向 http://$AIX_IP_ADDRESS:5802 即可。您意识到这意味着什么吗?您可以向协作者演示最新的应用程序,而根本不需要进行安装。其条件是,这些协作者需要拥有启用了 Java 的 Web 浏览器。在 2007 年,谁还没有这样的浏览器呢?您可以为他们提供一个 URL 并使其指向您基于 AIX 创建的最新应用程序。
  • 与 X11 不同的是,VNC 允许同时连接多个不同的远程查看器。有关 *shared 标志的信息,请阅读您使用的 VNC 软件的文档。
  • 安全性是一个问题。如果您在网络上公开的 VNC 服务太多,攻击者 进行探测。如果公开时间过长,攻击者便会用“蛮力”攻破您的密码。有关增强 VNC 安全性的多种可能,请参见本文末尾的参考资料
  • 请注意,大多数 VNC 组件都有将显示器和端口号偏移 5800 的约定。例如,引用 X11 服务器的显示器时,:2 通常由端口 5802 提供。与很多 UNIX 实践相似,这种约定也是可配置的,但它有助于您学会识别起点::1-5801、:2-5802,依此类推。

请自己想一想,VNC 可以提供多少有用的场景。下面是一个示例:您在实验室的一台专用计算机上设置演示,假设此计算机使用硬件锁定许可证连接到特殊的硬件。您启动 VNC 服务器,然后走进演讲大厅或会议室。接下来,您可以用专业设置在大屏幕投影仪上展示您的整个作品,同时不会使您的观众被计算机房的电缆或面包盒绊倒。

作为配置组件的 VNC

在与其他组件一起使用时,VNC“表现极佳”。VNC 在使用上之所以更加便利,不仅是因为 VNC 支持多种不同的选项,还因为它易于配置,可以与您已有的其他实践很好地结合起来。例如,我在大学实验室工作,那里有很多计算机,它们全部被简单地配置为在启动后自动接纳以标准方式运行的 VNC 服务器。除其他好处外,这意味着实验室中的任何人都可以随时寻求帮助,支持专家只需“回头”即可了解情况,即使他此时正在跨越国界也能做到。这样,实验室中将无需一直设有各种支持专家,更不用让学生自己动手,从而使可管理性和经济性得到大幅提升。

理解 VNC 的最佳方式是仅将它视为实现虚拟化的一个组件。通过将计算、显示、网络和管理标准化,它们将变为“可移动的”,在网络触及的任何地方,您都可以利用它们并对它们进行合理安排,以让它们最适于您的工程或业务条件。如果只是因为母板或显示管在物理上仅限于在某个特定的地区使用,将不能成为无法 工作的原因。

当然,自动化同样适用于查看器端;我在自己的桌面上启动了一些例程,它们会自动连接到我在全球监视的服务器上的会话。我倾向于在查看器端使用一些选项——有时我更改颜色深度来降低带宽要求,有时我会更改输入或共享配置。出于“长期”使用的目的,我特别喜欢关闭指针和键盘事件,以使我的查看器变为只读的。这样可防止我在不经意间覆盖数据或以其他方式影响远程计算机,但我仍然可以监视它所执行的各种操作。

AIX 专家应该了解的另一个工具是 x11vnc。x11vnc 是一个紧密绑定到物理硬件的 VNC 服务器。它着重于提高性能,这表现在:它不仅可用于通过 VNC 连接来查看 3D OpenGL 图形,其可移植性还允许它通过网络摄像机、电视谐调器及其他不寻常的硬件提供服务。x11vnc 可与目前 AIX 硬件上的大多数或全部 GXT*P 视频适配器兼容。

作为开发平台的 VNC

并非所有基于 VNC 的潜在附件都已编写完毕。您很可能遇到所需工具尚不存在的情况,例如罕见硬件上的查看器、有助于存档屏幕快照的录制和播放工具、支持电话会议的专用视频效果、或在建立 VNC 连接之前需要控制台批准的简单的通知小工具。

开源 VNC 的丰富实现意味着,您可以学习他人是如何编写 RFB 的服务器和客户端的。另外,还有一些类似 tclRFB(请参见参考资料)的工具包可简化 VNC 编程。

tclRFB 的 0.5 版包括一个示例查看器,其中提供了 500 行代码。只需添加另外几行代码,您就可以让查看器每隔 10 秒便自动保存一次远程连接的映像(请参见清单 1)。

清单 1. 在示例 tclRFB 查看器中添加记录工具
	  proc save_snapshot_and_repeat {canvas_name destination_file delay} {
	      set suffix [clock seconds]
	      $canvas_name postscript -file $destination_file$suffix.ps
	      after $delay [list \
		   save_snapshot $canvas_name $destination_file $delay]
	  }

	  set display_canvas .vp.fb     
	  set file           my_snapshot
	  set interval       10000            ; # Ten seconds.
	  save_snapshot_and_repeat $display_canvas $file $interval

虽然此示例将快照的格式设置为 PostScript,但通过其他可免费获得的库还可以生成 MPEG 和动画 GIF 等格式。

我在此处提到的大多数功能本应在五年前就已实现:VNC 也类似于 Expect、screen 及其他工作效率方面的奇迹,这表现在:几乎它的所有功能在其创立之初便已昭然若揭,而之后的工作却仅限于细化。VNC 世界的所有新闻几乎都与小幅改进或修正有关。

尽管如此,它最近还是取得了一些重大进展,您应该对此有所了解:

  • Synergy 是一种允许多台计算机共享一个鼠标和键盘的软件。这是一种不同于 VNC 的技术,但它将引起某些现在正使用 VNC 的管理员和开发人员的兴趣,进而使他们改弦更张。
  • NX 是由某个盈利公司开发的一种开源终端服务器。其作用是加快远程 X11、VNC 或其他一些受支持的技术的传输。如果您的远程查看性能不尽人意,何不尝试一下 NX。

总结

所有这些研究只有一个目的,即让您了解 VNC。您最终将找到最适合您的细化方式。开始体验 VNC 时,请注意以下问题:请不要让您与自己或他人要查看的计算机显示器之间出现物理距离。一旦您开始使用 VNC,就再也离不了它了。另外,正如本文所描述的,您只需稍做准备即可开始体验。

参考资料

学习

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文
  • Productivity tips”(developerWorks,2006 年 9 月):这篇文章重点介绍了可为日常工作带来重大变化的技术,例如 VNC。
  • Expect exceeds expectations”(developerWorks,2002 年 4 月):了解如何自动处理很多通常仅被视为交互式的任务。
  • 请阅读以下有关安全 Shell (SSH) 的文档:
  • GNU Screen:GNU Screen 的命令行连接功能与 VNC 的视觉显示功能大体相同。通过 screen,您可以使用单个甚至慢速的命令行连接来管理多个面向字符的窗口。您可以浏览这些窗口,也可以断开连接并在以后从其他位置重新连接等等。您会发现,screen 与 VNC、ssh 和 Expect 类似,也是一个不可或缺的程序。
  • RFB:RFB 是一个用于从远程访问图形用户界面的简单协议。作为一项公开发布的协议,RFB 具有多种实现,包括专有版本和免费版本。
  • IBM AIX Toolbox:此网页包括 VNC 以及其他多种有用的软件应用程序。
  • Bull 免费软件:此网站包含可选的 VNC 服务器。
  • 此 Usenet 线程:不同的 AIX 系列具有不同的图形硬件。此讨论说明,只要您愿意,可以方便地将 VNC 服务绑定到主机的主控制台。
  • Create a VNC system with tclRFB”(developerWorks,2003 年 8 月):这篇文章介绍了作为 VNC 编程工具包的 tclRFB。
  • x11vnc:x11vnc 是一个 VNC 服务器,它内置有各式各样的功能,包括 UNIX 帐户和密码支持、服务器端伸缩、文件传输功能和 OpenGL 兼容性。
  • Synergy:Synergy 允许多台计算机方便地共享一个鼠标和键盘。
  • NX:NX 是一种终端服务器,它在提高传输性能方面取得了长足的发展,例如传输 VNC。
  • Remote computing with a Linux application server farm”(developerWorks,2007 年 2 月):这篇文章向 developerWorks 报告了 VNC 的巨大作用:为大学实验室节省了大量资金。
  • SSL secures VNC applications”(developerWorks,2007 年 1 月):请阅读此文章,了解为什么通常都通过 SSH 建立 VNC“通道”来保护连接的安全。
  • AIX and UNIX:“AIX and UNIX developerWorks”专区提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • New to AIX and UNIX:访问“New to AIX and UNIX”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX 5L™ Wiki:AIX 相关技术信息的协作环境。
  • 查看 Cameron Laird 撰写的其他文章和教程:
  • 按主题搜索“AIX and UNIX”库:
  • Safari 书店:访问此电子参考资料库可查找特定的技术资源。
  • developerWorks 技术事件和网络广播:了解最新的 developerWorks 技术事件和网络广播。
  • Podcast:收听 Podcast 并与 IBM 技术专家保持同步。

获得产品和技术

  • IBM 试用软件:从 developerWorks 可直接下载这些试用软件,您可以利用它们开发您的下一个项目。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=210856
ArticleTitle=VNC 发展动态
publish-date=04192007