3 VNC

Virtual Netowrk Computer (VNC) is a networking protocol that allows a VNC client program interact with a VNC server to accomplish remote desktop/GUI control. In VNC, the client is the one that needs to have access to a graphical display and GUI input devices, while the server can run in a system that has no graphics card nor mice/keyboard.

Compared to X11, as a networking protocol, VNC is much more bandwidth efficient. VNC offers a few compression algorithms, including “hex” and “tight”. The former is one of the best trade off between bandwidth requirement and clarify, while the latter can sacrifice display quality for network bandwidth efficiency.

In fact, VNC is efficient enough that one can run a VNC client written in Java completely in a web browser (HTTP client). This means any computer can serve as a VNC client!

VNC is also a insecure protocol. Even though VNC supports password authentication, it should not be used in a network environment where not all hosts can be trusted.

Note that VNC is not application based. While each X11 client program is an application program, a VNC server is merely echoing portions of a GUI environment to a VNC client. As a result, VNC can relay the screen of an individual application program, the entire desktop environment, or just a portion of the window of an application program.