Virtual Network Computing, or VNC, is an open-source, cross-platform software product which enables viewing and controlling GUI desktops on remote machines on a network, either within a LAN or over a WAN/Internet connection. The machine that the user is sitting at is referred to as the client, and the remote machine being controlled is referred to as the server. Viewing entails sending screen updates from the server to the client; controlling sends mouse and keyboard from the client to the server.
The nature of VNC connections is such that any machine – running any operating system – may act as either client or server simply by running the appropriate executable program, and the client and server do not need to be running the same operating system. Although a number of configuration options exist for both server and client, for most installations, a simple install of the software is all that is required to get started with VNC. Since it is an open source software product, there are several widely-used implementations available, including TightVNC1 and RealVNC.2 The availability of source code provides the ability to extend and customize the code, which has resulted in additional implementations. Notable among these is UltraVNC,3 which adds the ability to use a Windows username and password to restrict access to the remote machine, rather than requiring an administrator to specifically create (and subsequently maintain) a password for VNC access.
In its simplest form, VNC is a frame-buffer update program. Normally, a screen update is sent to a video driver (software) or directly to some hardware. This so-called “framebuffer” update is redirected or copied by VNC to its own driver, sending it across the network to the client. There are various compression schemes included for increasing performance of these updates, but the basic mechanism is the updating of the framebuffer on the remote machine.
This document is in PDF format. To view it click here.