What's the difference between RDP vs VNC?

RDP is semantic. The RDP is aware of controls, fonts, and other similar graphical primitives. This means that when rendering a screen across a network, this information is used to compress the data stream significantly. For instance, if you know that this region of the screen if occupied by a button, with the color grey, then you don't need to send an image of the button across the network, but merely information such as location of this button, size and color.

VNC is "dumb" in this respect, and largely functions by sending the actual images across the network.

RDP is tightly coupled to the Windows platform whereas VNC is available for most platforms. RDP is also seen as far more performant than VNC, due to the semantic advantage.


RDP stands for Remote Desktop Protocol, and is a proprietary protocol developed by Microsoft. (More from Wikipedia)

VNC stands for Virtual Network Computing, and is platform-independent. (More from Wikipedia)

Although I've seen the terms interchanged, RDP is usually used to refer to connecting to a Windows PC. Windows PCs have the RDP built into them, but there are clients for both Mac and Linux. Linux users can use rdesktop to connect to a Windows computer.

VNC requires a separate client running on a PC, but is platform-independent, so I can have a VNC client on my PC and connect to a Linux box running a VNC server. VNC programs can usually inter-connect with one another, and often include other features that RDP doesn't, like file-sharing/transfers and chatting with the person on the other computer.

Our very own Jeff Atwood even has a Coding Horror article from 2005 about the two protocols.


RDP logs you into the remote system just like being at the console (just with lag and DirectX support isn't that good)... VNC just transmits keystrokes and mouse inputs blindly and receives the desktop in what amounts to a streaming video.