Remote Desktop Protocol

Remote Desktop Protocol (RDP) is a proprietary protocol developed by Microsoft, which concerns providing a user with a graphical interface to another computer. The protocol is an extension of the ITU-T T.128 application sharing protocol. Clients exist for most versions of Microsoft Windows (including Windows Mobile), Linux, Unix, Mac OS X and other modern operating systems. By default the server listens on TCP port 3389.

Microsoft currently refers to their official RDP server software as Remote Desktop Services, formerly "Terminal Services". Their official client software is currently referred to as Remote Desktop Connection, formerly "Terminal Services Client".

History
Every Windows version beginning with Windows XP includes an installed Remote Desktop Connection (RDC) ("Terminal Services") client (mstsc.exe) whose version is determined by that of the operating system or last applied Windows Service Pack. The Terminal Services server is supported as an official feature on Windows NT 4.0 Terminal Server Edition, Windows 2000 Server, all editions of Windows XP except Windows XP Home Edition, Windows Server 2003, Windows Home Server, on Windows Fundamentals for Legacy PCs, in Windows Vista Ultimate, Enterprise and Business editions, Windows Server 2008 and Windows Server 2008 R2 and on Windows 7 Professional and above.

Microsoft provides the client required for connecting to newer RDP versions for downlevel operating systems. Since the server improvements are not available downlevel, the features introduced with each newer RDP version only work on downlevel operating systems when connecting to a higher version RDP server from these older operating systems, and not when using the RDP server in the older operating system.

Based on the ITU-T T.128 application sharing protocol (during draft also known as "T.share") from the T.120 recommendation series, the first version of RDP (named version 4.0) was introduced by Microsoft with "Terminal Services", as a part of their product Windows NT 4.0 Server, Terminal Server Edition. The Terminal Services Edition of NT 4.0 relied on Citrix's MultiWin technology, previously provided as a part of Citrix WinFrame atop Windows NT 3.51, in order to support multiple users and login sessions simultaneously. Microsoft required Citrix to license their MultiWin technology to Microsoft in order to be allowed to continue offering their own terminal services product, then named Citrix MetaFrame, atop Window NT 4.0. The Citrix provided DLLs included in Windows NT 4.0 Terminal Services Edition still carry a Citrix copyright rather than a Microsoft copyright. Later versions of Windows integrated the necessary support directly.

Version 5.0, introduced with Windows 2000 Server, added support for a number of features, including printing to local printers, and aimed to improve network bandwidth usage.

Version 5.1, introduced with Windows XP Professional, included support for 24-bit color and sound. The client is available for Windows 2000, Windows 9x, Windows NT 4.0. With this version, the name of the client was changed from Terminal Services Client to Remote Desktop Connection.

Version 5.2, introduced with Windows Server 2003, included support for console mode connections, a session directory, and local resource mapping. It also introduces Transport Layer Security (TLS) 1.0 for server authentication, and to encrypt terminal server communications.

Version 6.0 was introduced with Windows Vista and incorporated support for Windows Presentation Foundation applications, Network Level Authentication, multi-monitor spanning and large desktop support, and support for TLS 1.0 connections. Version 6.0 is available for Windows XP SP2, Windows Server 2003 SP1/SP2 (x86 and x64 editions) and Windows XP Professional x64 Edition.

Version 6.1 was released in February 2008 and is included with Windows Server 2008, as well as with Windows Vista Service Pack 1 and Windows XP Service Pack 3. It is also installable through KB952155 for Windows XP SP2. . In addition to changes related to how a remote administrator connects to the "console", this version incorporates new functionality introduced in Windows Server 2008, such as connecting remotely to individual programs and a new Terminal Services Easy Print driver, a new client-side printer redirection system that makes the client's full print capabilities available to applications running on the server, without having to install print drivers on the server.

Version 7.0 was released to manufacturing July 2009 and is included with Windows Server 2008 R2, as well as with Windows 7 . With this release, the server name was also changed from Terminal Services to Remote Desktop Services. This version incorporates new functionality such as Windows Media Player redirection, bidirectional audio, true multimonitor support, Aero glass support, enhanced bitmap acceleration, Easy Print redirection, Language Bar docking. The RDP 7.0 client is available on Windows XP SP3 and Windows Vista SP1/SP2. RDP 6.1 client and RDP 7.0 client are not supported on Windows Server 2003 x86 and Windows Server 2003 / Windows XP Professional x64 editions. RDP 7.0 clients also do not support connecting to terminal servers running Windows 2000 Server.

Most RDP 7.0 features like Aero glass remoting, bidirectional audio, Windows Media Player redirection, true multiple monitor support, Remote Desktop Easy Print are only available in Windows 7 Enterprise or Ultimate editions.

Features

 * 32-bit color support. 8-, 15-, 16-, and 24-bit color are also supported.
 * 128-bit encryption, using the RC4 encryption algorithm, as of Version 6. Older implementations suffer from a man-in-the-middle vulnerability, which can allow an attacker to decrypt the encrypted streams by recording the encryption key as it is transmitted.
 * Audio Redirection allows users to run an audio program on the remote desktop and have the sound redirected to their local computer.
 * File System Redirection allows users to use their local files on a remote desktop within the terminal session.
 * Printer Redirection allows users to use their local printer within the terminal session as they would with a locally or network shared printer.
 * Port Redirection allows applications running within the terminal session to access local serial and parallel ports directly.
 * The clipboard can be shared between the remote computer and the local computer.
 * Seamless Windows: Remote applications can run on a client machine that is served by a Remote Desktop connection. It uses virtual channel method, and available since RDP 5.

The following features were introduced with the release of RDP 6.0 in 2006:


 * Remote Programs: Application publishing with client-side file type associations.
 * Terminal Services Gateway: Enables the ability to use a front-end IIS server to accept connections (over port 443) for back-end Terminal Services servers via an https connection, similar to how RPC over https allows Outlook clients to connect to a back-end Exchange 2003 server.  Requires Windows Server 2008
 * Network Level Authentication
 * Support for remoting the Aero Glass Theme (or Composed Desktop), including ClearType font smoothing technology.
 * Support for remoting of Windows Presentation Foundation applications: Compatible clients that have .NET Framework 3.0 support will be able to display full Windows Presentation Foundation effects on a local machine.
 * Rewrite of device redirection to be more general-purpose, allowing a greater variety of devices to be accessed.
 * Fully configurable and scriptable via Windows Management Instrumentation.
 * Improved bandwidth tuning for RDP clients.
 * Support for Transport Layer Security (TLS) 1.0 on both server and client ends (set as default).
 * Multiple monitor support. Spread session across two monitors.

Non-Microsoft implementations
There are numerous non-Microsoft implementations of RDP clients and servers. The open-source command-line client rdesktop is the most commonly-used backend for the Remote Desktop Protocol on Linux/Unix operating systems. There are many GUI clients, like tsclient and KRDC, which are built on top of rdesktop.

An open-source implementation of a Remote Desktop Protocol server on Linux is xrdp. One can use Windows' Remote Desktop Connection client to connect to a server running xrdp.