Virtual Network Computing
From Wikipedia, the free encyclopedia
Virtual Network Computing (VNC) is a graphical (GUI) desktop sharing system which uses the RFB (Remote FrameBuffer) protocol to remotely control another computer. It transmits the keyboard and mouse events from one computer to another, relaying the graphical screen updates back in the other direction, over a network.
VNC is platform-independent — a VNC viewer on any operating system can usually connect to a VNC server on any other operating system. There are clients and servers for almost all GUI operating systems and for Java. Multiple clients may connect to a VNC server at the same time. Popular uses for this technology include remote technical support and accessing files on one's work computer from one's home computer.
VNC was originally developed at AT&T. The original VNC source code and many modern derivatives are open source under the GNU General Public License.
Contents |
[edit] History
VNC was created at the Olivetti & Oracle Research Lab, which was then owned by Olivetti and Oracle Corporation. In 1999 AT&T acquired the lab, and in 2002 closed down the lab's research efforts.
The name originates from a thin client asynchronous transfer mode (ATM) network computer called the Videotile, which was essentially an LCD with a pen input and a fast ATM connection to the network. VNC is essentially a software-only version of this "ATM Network Computer".
Developers who worked on VNC while still at the AT&T Research Lab are:
- Andy Harter (co-inventor and project leader)
- Tristan Richardson (co-inventor)
- Quentin Stafford-Fraser
- James Weatherall
- Ken Wood
- Andy Hopper
- Charlie McLachlan
- Paul Webster
[edit] Operation
A VNC system consists of a client, a server, and a communication protocol.
- The VNC server is the program on the machine that shares its screen.
- The VNC client (or viewer) is the program that watches and interacts with the server.
- The VNC protocol is very simple, based on one graphic primitive: "Put a rectangle of pixel data at the specified X,Y position".
Note that on some machines, the server does not necessarily have to have a physical display. Xvnc is the Unix VNC server, which is based on a standard X server. Xvnc can be considered to be two servers in one; to applications it is an X server, and to remote VNC users it is a VNC server. Applications can display themselves on Xvnc as if it were a normal X display, but they will appear on any connected VNC viewers rather than on a physical screen.[1]
The server sends small rectangles of the framebuffer to the client. In its simplest form, the VNC protocol can use a lot of bandwidth, so various methods have been devised to reduce the communication overhead. For example, there are various encodings (methods to determine the most efficient way to transfer these rectangles). The VNC protocol allows the client and server to negotiate which encoding will be used. The simplest encoding, which is supported by all clients and servers, is the raw encoding where pixel data is sent in left-to-right scanline order, and after the original full screen has been transmitted, only transfers rectangles that change. This encoding works very well if only a small portion of the screen changes from one frame to the next (like a mouse pointer moving across a desktop, or text being written at the cursor), but bandwidth demands get very high if a lot of pixels change at the same time, such as for scrolling a window or even for full-screen video.
VNC by default uses TCP ports 5900 through 5906, each port corresponding to a separate screen (:0 to :6). A Java viewer is available in many implementations such as RealVNC on ports 5800 through 5806, allowing clients to interact through, among other things, a Java-enabled web browser. Other ports can be used as long as both client and server are configured accordingly. Generally, Windows computers can only use a single port (by default 5900), because Windows is not a multisession operating system.
[edit] Security
By default, VNC is not a secure protocol. While passwords are not sent in plain-text (as in telnet), brute-force cracking could prove successful if both the encryption key and encoded password are sniffed from a network. For this reason it is recommended that a password of at least 8 characters be used. On the other hand, there is also an 8-character limit on some versions of VNC; if a password is sent exceeding 8 characters, the excess characters are removed and the truncated string is compared to the password.
However, VNC may be tunnelled over an SSH or VPN connection which would add an extra security layer with stronger encryption. SSH clients are available for all major platforms (and many smaller platforms as well); SSH tunnels can be created from UNIX clients, Windows clients, Macintosh clients (including Mac OS X and System 7 and up) — and many others.
UltraVNC supports the use of an open-source encryption plugin which encrypts the entire VNC session including password authentication and data transfer. It also allows authentication to be performed based on NTLM and Active Directory user accounts.
RealVNC offers high-strength encryption as part of its commercial package.
Workspot released AES encryption patches for VNC.
[edit] Comparison of VNC software
Some of these features only work if you use the same software for client and server.
VNC software | Client | Server | Runs on Windows | Runs on Mac OS X | Runs on Linux | Open Source | Java viewer | Encryption | File Transfer | Multiple Sessions |
---|---|---|---|---|---|---|---|---|---|---|
RealVNC Free | Yes | Yes | Yes | No | Yes | Yes | Yes | No | No | |
RealVNC Personal | Yes | Yes | Yes | No | No | No | Yes | Yes | Yes | |
RealVNC Enterprise | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | |
TightVNC | Yes | Yes | Yes | No | Yes | Yes | Yes | No | Yes (Windows) | |
UltraVNC | Yes | Yes | Yes | No | No | Yes | Yes | Yes (with plugin) | Yes | |
Chicken of the VNC | Yes | No | No | Yes | No | Yes | ||||
Vine Server (OSXvnc) | No | Yes | No | Yes | No | Yes | ||||
Apple Remote Desktop | Yes | Yes | No | Server bundled | No | No | No | Yes | Yes | Yes |
Idokorro Mobile Desktop | Yes | No | No | No | No | No |
[edit] References
- ^ AT&T Laboratories Cambridge (1999). X-based VNC server. Virtual Network Computing. Retrieved on March 24, 2007.
- Tristan Richardson (Jan/Feb 1998). "Virtual Network Computing" (PDF) 2 (1): 33–38.
[edit] See also
[edit] External links
- VNC - archive of original AT&T Virtual Network Computing site
- Gentoo-wiki/VNC - An overview and a set of guides to the various flavours of VNC
- RFB 3.8 Protocol Standard
Remote administration software |
---|
Apple Remote Desktop | Back Orifice | Back Orifice 2000 | Citrix Presentation Server | CrossLoop Microsoft Systems Management Server | NetBus | Remote Desktop Protocol | Sub7 | Timbuktu | Virtual Network Computing |