# Remote Desktop Protocol

Das Remote Desktop Protocol (RDP) ist ein Netzwerkprotokoll von Microsoft für den Fernzugriff auf Computer. Es ermöglicht die Übertragung grafischer Bildschirminhalte eines entfernten Rechnersystems sowie die Bereitstellung von Peripheriefunktionen eines Arbeitsplatzes (Tastatur, Maus, Audio-Ein-/Ausgabe, Videoeingabe sowie sitzungsbezogenen Datenaustausch wie Textpuffer (engl. Clipboard), Druckerkopplung und Dateisystembereitstellung). Das Protokoll definiert die Zusammenarbeit zwischen einer Serverkomponente (bei MS Windows Remote Desktop Services, vormals Terminal Services) und der Clientkomponente. Der Dienst hört nach Standard auf Port 3389/TCP sowie 3389/UDP. Die Nutzung der UDP-Übertragung wird bei Microsoft ab Windows 8 und Windows Server 2012 hinzugefügt (RDP Version 8), ist aber nicht zwingend erforderlich.

## Geschichte

Microsoft lizenzierte von Citrix die Technik Multiwin, um im Jahr 1998 das darauf aufbauende Produkt Windows Terminal Server zu veröffentlichen. Multiwin ermöglichte die gleichzeitige Ausführung mehrerer Benutzersitzungen.
Das Protokoll ICA, das Citrix beim eigenen Produkt WinFrame verwendete, war nicht Bestandteil der Lizenzierungsvereinbarung. Stattdessen entwickelte Microsoft das Protokoll RDP als Erweiterung des Protokolls T.Share (T.Share war die Bezeichnung für das Protokoll T.128 in dessen Entwurfsphase).

## Funktionsweise

Rechnersysteme werden von sogenannten Konsolen bedient, was im Minimum eine Eingabefunktion (Tastatur) und eine Ausgabefunktion (Drucker, Bildschirmgerät) darstellt. Diese Ein-/Ausgabegeräte und ihr Bediener können aber nicht immer physisch am Gerät angeschlossen sein und dort arbeiten. Zur Fernbedienung wurden Möglichkeiten gesucht, wie man diese Funktionen über IP-Netzwerke abbilden kann. Dazu wurde ein Serverdienst entwickelt, der den Bildwiederholspeicher der Grafikkarte (engl. Framebuffer) auslesen konnte oder ihn simulierte. Diese Inhalte wurden dann per Netzwerk auf das zugehörige Clientprogramm übertragen und dort typischerweise in eigenem Bildschirmfenster dargestellt. Umgekehrt wurden die Informationen der Peripheriegeräte des Clients per Netzwerkübertragung an die zugehörige Sitzung des Serverdienstes übertragen.
In Konkurrenz zum als Open Source entwickelten VNC-Protokoll entwickelte Microsoft das RDP-Protokoll, das ursprünglich nicht öffentlich dokumentiert war. Das seit den 1990er Jahren bei UNIX-Betriebssystemen für ähnliche Zwecke weit verbreitete X11-Protokoll hat eine stark abweichende technische Implementierung, aber ein ähnliches Ziel.
RDP besteht aus einer Serverkomponente, einer Clientkomponente und einem verbindenden Netzwerkprotokoll. Arbeiten mehrere Personen gleichzeitig mit mehreren RDP-Clients auf einem System, bezeichnet man dieses als Terminalserver. Aufgrund besonderer technischer Herausforderungen ist die Funktion Terminalserver eine spezielle Betriebsart von Windowsservern.
Der Zugang zu solchen Terminalservern erfolgt entweder mit einem RDP-Clientprogramm oder mit spezialisierten Benutzerendgeräten (engl. ThinClient); die Tastatur, Bildschirmanschluss, Maus und evtl. Mikrofon, Lautsprecher und Kamera für einen eingebauten RDP-Client haben.
Die Bildschirmausgabe einer Sitzung erfolgt auf einem virtuellen Bildschirm (Hauptspeicherbereich) innerhalb des Terminalservers und der Terminalclient erhält lediglich eine Kopie der Ausgabe.
Neben Bildschirmausgaben sowie Tastatur- und Maus-Eingaben kann mit RDP auch die Tonausgabe der Sitzung zum Terminalclient umgeleitet werden. Außerdem ist die Nutzung eines Druckers und der Zugriff auf lokale Speichermedien des Terminalgerätes möglich.
Je nach Einsatzzweck wird der Benutzer des Terminalclients dadurch in die Lage versetzt, einen virtuellen Arbeitsplatz an einem Terminalserver zu bedienen.
RDP basiert auf dem ITU-Protokoll T.120 und ist ein Protokoll der Ebenen 4–7 des OSI-Modells. Es benutzt grundlegend das Transmission Control Protocol (TCP) für den Sitzungsaufbau und die Datenübertragung. Zur Verringerung der Latenzen (z. B. Multimediainhalte, Telefon- und Videokonferenzen) wird nach Möglichkeit ein paralleler Kanal mit User Datagram Protocol (UDP) verwendet. Die Sitzungskommunikation wird gegen unbefugte Kenntnisnahme mit Transport Layer Security (TLS) verschlüsselt.

## RDP-Server

Als Serverbetriebssysteme für RDP werden Windows NT 4.0 (nur in der später erschienenen Terminal Server Edition), Windows Server 2000, 2003, 2008, 2012, 2016, 2019 sowie 2022, NetMeeting, und in allen Professional- oder höheren Varianten von Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10 und Windows 11 verwendet. Daneben gibt es kommerzielle Remote Desktop Software für Windows von Drittanbietern, z. B. Thinstuff XP/VS Server, Thinsoft Winconnect Server und AADS Terminal Server.
RDP wird seit Windows XP standardmäßig für die Fernwartung von Windows-Rechnern (Remoteunterstützung) verwendet.
Auf der Messe CeBIT wurde im März 2005 der erste kommerzielle RDP-Server für Linux präsentiert (Thinstuff LX Server). Diese Software ermöglicht den Einsatz von RDP-Clients zur Verbindung zu Linux-Servern. Heutzutage gibt es eine Vielzahl von Open-Source-RDP-Servern unter Linux z. B. Xrdp oder ogon-project.
Die Virtualisierungssoftware VirtualBox von Oracle besitzt einen eigenen RDP-Server, der mit rdesktop und dem Microsoft Client kompatibel ist.

### Microsoft-Versionen
#### 4.0–5.2

Seit Windows XP Service-Pack 1 ist die RDP-Version 5.1 verfügbar. Remote Desktop Protocol 5.2 ist eine Komponente von Windows XP Professional SP2.

#### 6.0

Mit der Einführung von RDP Version 6.0, welches ein Bestandteil von Windows Vista ist, wurde der Funktionsumfang zum Teil erheblich verändert sowie die Verschlüsselung überarbeitet. Unter anderem wurden
* Schriftglättung
* Unterstützung von Multi-Monitor-Systemen mit maximal 4096 (w) × 2048 (h) Pixeln, Aero (Glass) und WPF-Funktionen
* sowie ein neues Script-System
eingeführt.

#### 7.0

Seit Oktober 2009 ist die RDP-Version 7.0 für Windows XP SP3, Windows Vista SP1 und Windows Vista SP2 verfügbar. Diese Version fügt über 10 neue Funktionen hinzu, welche bei Verbindungen zu Windows 7 bzw. Windows Server 2008 R2 verfügbar sind. Davon stehen 4 Funktionen ab Windows 7 auf dem Client-PC zur Verfügung. Aktuelle Client-Programme sind für Windows XP, Windows Server 2003, Windows Vista, Windows 7 und Mac OS X verfügbar. Die maximale Auflösung pro Monitor bleibt unverändert, darf sich aber jetzt zu 32766 × 32766 Pixel aufsummieren.

#### 8.0–8.1

Diese Version erschien zusammen mit Windows 8 und Windows Server 2012. Ende Oktober 2012 hat Microsoft die Remote Desktop Protocol 8.0 Updates für Windows 7 SP1 und Windows Server 2008 R2 veröffentlicht (auch via Windowsupdate und MS download center (KB2592687) und (KB2574819)), das dort die Nutzung der neuen Funktionen beim Zugriff auf einen Windows Server 2012 sowie auf ein Windows 8 (pro, enterprise) erlaubt. Die Remote-Desktop-Anwendung (mstsc.exe) wurde dabei auf Version 6.2.9200 aktualisiert und unterstützt damit die Remote Desktop Version 8.0. Mit dem Update KB2923545 wurde die Version auf 8.1 erhöht. Die maximale Auflösung pro Monitor erhöht sich auf 8192 × 8192 Pixel.

#### 10

Diese Version ist erstmals im Windows 10 1511 Update sowie in der Windows Server 2016 Technical Preview 4 enthalten und beinhaltet neue Features wie AutoSize, Zoom sowie Verbesserungen der Grafikkompression mit Hilfe von H.264/AVC.

## RDP-Clients

Auf den meisten Windows-Betriebssystemen gibt es bereits einen vorinstallierten Remote Desktop Client von Microsoft (mstsc.exe).
Für Linux, FreeBSD, macOS, AmigaOS, MorphOS, Android, Apple iOS und Chrome OS existieren jeweils Clients, die den Zugriff auf Windows-RDP-Server erlauben.
Auf der CeBIT wurde im Jahr 2000 der erste Java-Client (HOBLink JWT) für RDP präsentiert. Damit wurde mit Hilfe der Java-Plattform der Zugriff auf RDP-Server unter zahlreichen Betriebssystemen ermöglicht. Mittlerweile gibt es weitere kommerzielle Java-Clients, die auf unterschiedlichen Betriebssystemen einsetzbar sind.
Für viele grafische Benutzeroberflächen von UNIX-Betriebssystemen wie GNOME oder KDE sind RDP-Clients als Open Source verfügbar, einer der ersten war xrdp. Auch das FreeRDP Projekt ist ein bekannter RDP-Client.
Microsoft hat seit einiger Zeit die Spezifikationen des Netzwerkprotokolls und des Clients offengelegt, womit die funktionelle Kompatibilität von Fremdentwicklungen besser sichergestellt werden kann. Da Windows-Server für jede Clientverbindung eine sogenannte Client Access License benötigen, ist das Geschäftsmodell von Microsoft durch die Offenlegung nicht gefährdet.
Es gibt zahlreiche Nicht-Microsoft-Implementierungen von Remote Desktop Clients für eine Reihe von Plattformen. Die am häufigsten verbreiteten sind:
* FreeRDP - Open Source unter Apache license
* rdesktop für Linux/Unix und Microsoft Windows
* Remmina für Linux (auf FreeRDP basierend)
* Thincast Client für Linux, macOS und Windows
Microsoft profitiert selbst von dieser Offenlegung und verwendet unter anderem auch FreeRDP im Windows Subsystem für Linux.

## Risiken

Remote-Desktop-Verbindungen können bei schlecht abgesicherten Servern ein gefährliches Sicherheitsrisiko darstellen: Über (z. B. durch Phishing) erbeutete oder im Darknet gekaufte Zugänge können Angreifer auf diese Server gelangen, dadurch weiter in deren lokale Netzwerke, um von dort aus nicht nur Spam zu versenden, sondern Ransomware auszuführen.