虚拟网络计算
虚拟网络计算 (VNC) 是一款来自 AT&T 剑桥实验室 的远程访问应用程序,是用于远程桌面查看和操作的绝佳工具。它的核心功能是允许用户使用 VNC 客户端连接到运行 VNC 服务器的主机,并远程使用服务器的桌面。键盘和鼠标更新被发送到服务器,服务器桌面的快照被压缩并通过 VNC 协议发送回客户端。VNC 的一些最引人注目的功能包括:出色的平台可移植性、开源代码库、保守的带宽使用和极佳的定价(免费!)。
在本次评测中,我主要从三个方面评估了 VNC:稳定性、性能和可移植性。下面,我还将 VNC 与 X 进行了比较,以说明它们各自的适用范围。 在本次评估中,我使用了以下测试场景
<il>局域网:在 K6-2 400 (Linux) 和 PIII 560 (Linux, Win2k) 之间通过 100Mbps 以太网连接
<il>宽带:在 PIII 650 (Linux, Win2k) 和 K6-2 400 (Linux) 之间通过 768kbps DSL 连接
<il>调制解调器:在 P133 (Linux, Win98) 和 K6-2 400 (Linux) 之间通过 33.6kbps 调制解调器连接
我测试了所有涉及的机器作为服务器和客户端,在所有已安装的操作系统下。在 Linux 下,我的测试应用程序是 xterm、Netscape 4.7、KDE、StarOffice 5 和 GIMP。在 Windows 下,我的测试应用程序是 command.com(或 cmd.exe,如果适用)、Internet Explorer 5.5、Microsoft Word 2000 和 Adobe Photoshop。两个平台都使用了当前版本 VNC 3.3.3r2/3.3.3r9 (Linux/Windows) 的未修改副本,两者都可以在网站上找到。结果在某种程度上是可以预测的。
在 Linux 上安装 VNC 服务器非常简单;如果需要,您可以直接从构建目录运行它。服务器的配置通过编辑 vncserver Perl 脚本以匹配您的系统配置,编辑 VNC 的 xstartup 脚本以匹配您首选的桌面配置,以及运行 vncpasswd 以设置 VNC 服务器的密码来实现(如果没有密码,它将拒绝运行,考虑到应用程序的性质,这是一件好事)。请注意,如果您将 Linux 系统用作客户端,则无需进行任何比将 vncviewer 程序复制到您路径上的方便位置更多的安装。在启动服务器之前,您应该配置一些事项,最重要的是密码、启动脚本以及分辨率和颜色深度。您还应该确保 VNC 加载的默认桌面不使用像素图作为其桌面,因为这会大大降低性能。
安装 Windows VNC 服务器类似于其 Linux 对应版本的安装步骤;解压缩安装文件,运行安装程序即可完成。与 Linux 版本一样,如果您只想使用查看器,则只需将 vncviewer.exe 复制到方便的位置,而无需安装服务器。对于大多数人来说,Windows 服务器的用户界面将更容易配置(可以通过任务栏上的图标进行配置)。在 Windows 平台上显现出来的一个重要限制是,连接到 Windows VNC 服务器会将您连接到控制台上可见的现有桌面,而不是为 VNC 创建的虚拟桌面。这是由于 Windows UI 固有的单用户性质,除了运行像 NT 终端服务器版这样的 Windows 版本之外,没有简单的方法可以解决这个问题。总的来说,在 Windows 系统上安装 VNC 应该不会遇到什么麻烦。
我的第一个测试使用了我的局域网配置。在这种设置下(K6-2 上的 Linux 与 PIII 上 Linux 和 Win2k 之间通过快速以太网,分辨率为 1024x768 真彩色),无论从哪个方向连接,性能都非常好,无论是 Linux 连接到 Linux 还是使用 Windows 作为客户端或服务器(在所有情况下,性能似乎都是相同的)。虽然屏幕更新存在轻微但明显的延迟,但所有测试应用程序都非常可用(正如人们所期望的那样,考虑到通过快速以太网的连接)。xterm 感觉就像本地一样快,StarOffice 加载并完美显示文档,Netscape 运行良好,GIMP 运行缓慢但可用。Windows 应用程序的功能类似,但有一个例外,这将在本评测的末尾解释。总而言之,局域网性能是完全可以接受的。
我的第二个测试是在宽带配置下进行的。此测试的参数(K6-2 上的 Linux 与 PIII 上 Linux 和 Win2k 之间通过 768k DSL,分辨率为 1024x768 真彩色)既常见,并且如下详述,对于大多数应用程序来说也足够了。反映最常见使用模式的应用程序——StarOffice 和 MS Word——在 DSL 上都能接受地运行。命令行环境(xterm 中的 bash 和 cmd.exe)都运行良好,Web 浏览器也相当可用。这大大提高了 VNC 的实用性,因为许多小型(以及不那么小型)企业以及相当多的家庭用户都依赖 DSL 或类似的链接进行连接。我发现无法接受地运行的应用程序是 GIMP 和 Photoshop。两者在编辑时都阻塞了连接,考虑到 1024x768x24 的全屏位图照片超过 2MB,并且编辑照片涉及重复重绘屏幕,这很有道理。然而,除了照片编辑问题外,我发现 VNC 在 DSL 上非常可用。对于访问大多数办公效率应用程序,VNC 在宽带上的性能是可以接受的。
第三个也是最后一个测试配置包括前面提到的 K6-2 通过 33.6kbps 调制解调器连接到 Pentium 133。由于我在 DSL 连接方面的经验,我认为 1024x768 真彩色很可能带宽密集,在调制解调器速度下无法很好地工作。由于 Pentium 机器是一台配备 800x600 屏幕的笔记本电脑,我选择使用 800x600 16 位彩色作为首选屏幕模式。在我深入探讨本轮测试的细节之前,让我给您一个词的总结:慢。为了保持理智,我不建议花费大量时间通过调制解调器运行 VNC。话虽如此,基本应用程序运行没有实际问题。StarOffice、Word 和两个命令行都在合理程度上可用。除此之外的任何事情都涉及大量的等待。我尝试运行 Netscape 和 Internet Explorer,虽然两者都运行了,但它们加载页面的速度如此之慢,以至于早期的 Mozilla 版本相比之下似乎快如闪电。底线是,虽然 VNC 在一定程度上可以通过调制解调器运行,但我不建议将其用作您访问所需远程计算机的正常方式的最后手段备份。
在阅读了以上内容后,我确信许多读者想知道,当几乎所有 Linux 发行版都以某种形式包含另一个出色的远程访问工具 X Window System 时,他们为什么要费心使用 VNC。这是一个很好的问题,答案也很简单。在某些情况下,VNC 在跨平台支持、安全性、客户端无状态性和客户端资源使用方面比 X 具有几个强大的优势。首先,跨平台支持很简单。虽然 X 服务器存在于许多平台上,但它们通常既不是免费的,也不是任何开源的变体。
您可能需要对您的使用习惯进行一些修改以提高您的工作效率,主要是在滚动方面。由于 VNC 是一种抽象协议,并且不链接到底层图形系统(即,在加速器级别),因此它将屏幕仅视为像素图,并且不跟踪 X 或 Windows GDI 正在执行的操作。因此,您必须重绘屏幕的所有更改区域,即使您只是简单地滚动文档。因此,我建议您习惯于按页而不是按行滚动,以最大限度地减少重绘屏幕所花费的时间(每页一次,而不是每滚动一行一次)。这会产生很大差异的常见情况包括在包含图表和示意图的电子表格或文字处理文档中分页、在 GIMP 或 Photoshop 中滚动浏览图像,或者如果您如此着迷,通过 VNC 浏览 Web。在许多尝试使用 Windows 平滑滚动功能的 Windows 应用程序中,这也会成为一个问题;由于 GDI 加速此功能的方式,VNC 无法正确跟踪当前屏幕图像,并且将无法正确绘制屏幕。对此的第二个解决方法是在显示属性控制面板中关闭图形加速,该面板位于高级设置屏幕的“疑难解答”选项卡下(可通过“设置”选项卡下的“高级”按钮访问)。虽然这会在 Windows 机器控制台上工作时大大降低视频性能,但 VNC 能够更好地使用这些设置正确显示和刷新屏幕。类似地,拥有快速显卡——或者任何显卡——在 Linux 下对您没有帮助。事实上,您不需要 Linux VNC 主机上的任何类型的显示适配器,因为 VNC 会创建自己的虚拟显示器。