Graphical Remote Desktop Protocols RFB(VNC), RDP and x11

Hi all, in the first blog post I’m going to compare three popular GUI remote desktop protocols. Probably not with history and in detail specification. And I am trying to state them in a simple so that it wold be more readable and easy to distinguish.

1)Remote Frame Buffering (RFB) protocol.

This simple protocol is used in all VNC software and available for all windowing systems(x11, Windows, OSX) on all major operating systems. It basically works as follows

  1. host sends a picture of the desktop across the network
  2. client sends keyboard and mouse events to the host
  3. then wait for host to render image and send it back to client

Most of the free implementations are not integrated with session management. So that its hard to use with out a user at the host. Since this protocol is pixel based, frames (pictures) are transfered via network so that VNC softwares consumes much bandwidth thank other protocols.

Although there are some optimizations like sending only parts of the screen which have changed, this protocol does not work well in networks which has considerable latencies(like GSM and even on HSPA networks).

This would be very useful to share desktop simply with other users with in a LAN.

2)Remote Desktop Protocol (RDP)

This proprietary protocol is defined by microsoft and specification has been released under microsoft open specifications.Basically it works like this(I dont know how it is implemented in microsoft windows) The host machine sends a description of the window and how to render the image to the client machine, then the client machine is responsible for rendering an image and displaying it. Other processing rather than GUI would be done at the host.

since the client computer “understands” the image it has created for you, it can perform simple operations like moving windows without sending all mouse responses to the host and wait for the response.It can just calculate and draw the results for you right away. Which causes highly responsive remote desktop experience.

This protocol is integrated well with microsoft windows logons and sessions and data is transfered through a secure connection.Unfortunately usual microsoft windows does not support multiple user logins (windows server versions supports up to 2or 3 logins) and which restricts one major benefits which could have been achieved via remote desktop.

3)X11

This is an abstraction of GUI from other components of an operating system(kernel) in Unix like operating systems.This is specially designed to be used over network connections and provides the basic framework for building such GUI environments on other supported platforms(Windows Clients are available like CygwinX).

If it is explained in a simple way all graphics are rendered at client and host CPU and its programs are used remotely passing commands back and forth.

Unlike other protocols this has an application abstraction layer which supports 2D and 3D operations to be fully accelerated on the remote X server.Since X network protocol which is used for the communication is based on X command primitives (with GLX, OpenGL 3D primitives) , very little band width would be used to transfer commands.

X11 can be used with ssh tunnel in a more secure manner.

In the market there are several popular proprietary remote desktop protocols like TeamViewer. But the above three remains in the top because RFB for the simplicity and flexibility, RDP natively supported for windows with high performance and x11 natively supported for Linux and OSX as well as the architectural adaptability.