VNC shorts for Virtual Network Computing which is based on Remote Frame Buffer (RFB) protocol. VNC enable any VNC compatible clients running on any platform to access remotely, in graphical mode, to any VNC compatible server running on any platform!
For example, a VNC client running on Windows XP able to remote access to the Redhat Linux X windows via VNC daemon running on Redhat Linux, or the Redhat Linux VNC client able to access to Windows XP and run the Windows program in Windows XP via the VNC session.
The term daemon is normally refers to Linux/Unix-based server application/process. So as here. And the term "server" is then refers to a Windows-based server application/process.VNC provides not only GUI remote access but also persistent desktop where the long running program or unfinished editing works could be kept running while VNC session is closed. User could reconnect back later at some other places and straight away continue to work on the incomplete tasks.
However, there is a different in handling convention VNC session between Linux to Windows and Windows to Linux. When access from Linux VNC client to Windows VNC server, the screen seen in Linux VNC client is the same as one see in front of the real physical GUI console. When a Windows VNC client connects to Linux VNC daemon such as VNC Server, the screen seen in Windows VNC client is different from the real physical GUI console. This happens because the Linux X windows use the default :0 display (X server screen number) on startup and the port is not sharable with other sessions. The work around is by using x11vnc or the Redhat bundled Vino as VNC daemon.
Vino allow legacy VNC client access directly to the :0 display. For example, Redhat Enterprise Linux ES 4 comes with vino RPM package. Once installed, the Vino is called Remote Desktop and normally grouped under Preference menu. Its simple GUI configuration make it easier to startup the Vino's VNC daemon!
VNC Server is bundled with all Redhat Linux distribution. Once installed, start the VNC Server by typing vncserver at command prompt. The vncserver command, is actually a shell scripts file, bring up the first VNC Server daemon listening to TCP port 5801 & 5901 by default. To bring up second VNC Server daemon, specify a port number other than the default. For example, type vncserver :2 to bring second daemon listening to TCP port 5802 & 5902. Port number starting from 5801 is meant for Java-enabled web browser connection, while port number starting from 5901 is meant for legacy VNC client connection. Although VNC Server could not directly connecting to :0 display by default as Vino or x11vnc do, this feature could be enabled by using VNC loadable module for the X Window system or upgrade to VNC Server version 4.x.
x11vnc works like Vino but has much more features bundled such as built-in SSL encryption/authentication, file transfer, etc. x11vnc is written in plain C language and uses only standard libraries. So, there is no compatibility and performance issues by using x11vnc as VNC daemon, indeed!
Connecting from VNC client of any platform to Windows VNC server is quite straightforward. Just type the IP address of the Windows VNC server in VNC client will do. However, a combination of IP address and display port is used to connecting VNC client of any platform to Linux VNC daemon. The display port number is taken from the last 2 digits of Linux VNC daemon listening port number (ignore leading zero if any). For example, type http://10.170.46.111:5801 at any Java-enable web browser in order to connect to a Linux VNC daemon that listening to port 5801 or type 10.170.46.8:1 at any legacy VNC client in order to connect to Linux VNC daemon listening to port 5901.