So what's VNC? Here's the blurb:
VNC stands for Virtual Network Computing. It is, in essence, a remote display system which allows you to view a computing 'desktop' environment not only on the machine where it is running, but from anywhere on the Internet and from a wide variety of machine architectures.
...and they ain't kidding, either.
By analogy, VNC is similar in respects to an X terminal emulator (more properly, an X server for an arbitrary platform), or products such as PC Anywhere. As with both of these products, VNC allows remote graphical access to a system. And then there are the differences:
- VNC is stateless.
- VNC is cross-platform -- like X but unlike PC Anywhere. Servers are available for Linux, Solaris, MS Windows, and OSF1/Alpha. Viewers are available for all of these, plus Mac (68k and PPC), MS Windows CE 2.x, and java clients which can be run in a browser window or Java VM.
- VNC is stateless.
- The entire session is maintained on the server. The viewer client is typically small (150 KB for MS Windows).
- Sessions are portable. You can fire up a session, attach to it from one host, move to another location, and reconnect to the same session.
- Multiple access to the same session is possible. You can access a session from several sites at the same time.
- Did I mention that VNC is stateless? Unlike X Windows, the entire state is on the server (which, incidentally, includes X server code, for the *nix versions). The viewer itself is simply getting and sending graphical events. This means that a session, once started on a host, persists until killed on that host -- regardless of what happens at the client (viewer) sites -- you can close viewers, re-open them, crash the system -- all without affecting your VNC session. For anyone who's worked on a very stable Unix box from an unstable, legacy desktop system <g>, this is something you'll appreciate. VNC eliminates the "weakest link" problem of X, which dies if there are problems at either the remote or local end. Under VNC, only a remote-host problem will affect state.
I've been playing with this over the past couple of days. Think of VNC as the equivalent of the 'screen' utility -- a text-console detachment tool for Linux -- for the GUI.
Among the uses I see are providing Linux access to non-technical users at a small, Linux-friendly start-up, without providing them with an extra box, or shelling out $10k in X server licenses for Windows. To boot, they get a stable platform on which they can do their work.
A slight downside of VNC is that, unlike X, the VNC session is its own seperate window. Most modern PC X servers allow a mode in which X applications are locally managed, appearing like any other Windows application on the desktop. This can be convenient for providing locally and remotely served applications simultaneously. VNC does not offer this same seamless integration, AFAIK. And while connecting to an established session is trivial (click on the viewer icon, specify session, enter password), launching a remote session requires getting to the host and invoking it somehow. Not tough for a techie, but your admin staff may not appreciate the task. And while I haven't run metrics, it would seem that placing the entire session load -- X server and clients -- on the remote server would increase total load. However the impacts of serving a KDE session via VNC on my box weren't grossly evident.
Other features -- VNC can be tunnled through SSH for secure, encrypted sessions, as with X, though this isn't a clean "one-click" trick at present. While bandwidth requirements aren't excessive, I'm still puzzling over whether there are options to apply compression to the video stream. SSH compression is available, but X-based compression such as lbxproxy would seem to be precluded, as the server is remotely based (you'd just increase latency and load on the server).
While an obvious application is serving Linux/Unix desktops to Windows users, you can serve any supported platform (list above) similarly. On Linux/Unix, you can serve multiple sessions (Windows boxes only allow serving a single one -- this ain't a Citrix replacement), and you can either split operations or serve and view from the same system.
If you haven't checked this out yet, do your self a favor and do. The Windows version runs under Install Shield, and both RPMs and debs are available for Linux.