Terminal Server correspond au composant serveur du Service de Terminal. Il gère les opérations d'authentification des clients et rend les applications disponibles à distance. Il s'occupe également de restreindre les accès clients en fonction du niveau d'accès qui leur est attribué. Le serveur de Terminal respecte les stratégies de restriction logicielle en place, comme la limitation d'accès à certain logiciels à un groupe spécifique d'utilisateurs. Les informations de la session distante sont stockées dans un dossier spécifique appelé Session Directory qui est localisé sur le serveur. Les dossiers de session sont utilisés afin de stocker l'état de la connexion distante et peuvent être utilisés pour reprendre une session interrompue. Le serveur de Terminal doit également gérer ces dossiers. Les serveurs de Terminal peuvent également être utilisés en mode cluster.
Dans Windows Server 2008, le Service de Terminal a été grandement amélioré. Lors de l'ouverture de session, si l'utilisateur a ouvert une session sur le poste client local avec un compte utilisateur de domaine, alors les mêmes informations d'ouverture de session peuvent être utilisées pour ouvrir la session distante. Cependant cela requiert que Windows Server 2008 soit le système d'exploitation du serveur de Terminal et que celui du poste client soit Windows Server 2008 ou Windows Vista. De plus, le serveur de Terminal peut fournir l'accès à une application unique plutôt qu'au bureau distant complet, et ce en utilisant une fonctionnalité appelée . L'accès Web au service de Terminal (TS Web Access) permet d'accéder à une session de type RemoteApp via un Navigateur web. Windows 2008 inclut également le module de contrôle TS Web Access Web Part qui maintient la liste d'applications de type RemoteApps déployée sur le serveur et maintient également cette liste à jour. Une session d'un serveur de Terminal peut également être encapsulée dans un tunnel au travers d'une passerelle via le service Passerelle Terminal Server (TS Gateway). Il permet l'accès au serveur de Terminal depuis l'Internet par l'encapsulation du protocole RDP dans un tunnel sécurisé HTTPS. Windows Server 2008 ainsi que Windows Server 2003, y compris Windows Home Server peuvent agir en tant que passerelle Terminal Server. Le serveur de Terminal peut également incorporer le gestionnaire de ressources Windows (en) afin d'affiner l'utilisation des ressources par les applications distantes
Le serveur de Terminal est géré par le composant enfichable MMC Gestionnaire de Serveur de Terminal (Terminal Server Manager). Il peut être utilisé afin de configurer les pré-requis d'ouverture de session ainsi que pour forcer une instance unique de session distante. Il peut également être configuré via une stratégie de sécurité ou bien via WMI. Il n'est cependant pas disponible sur les versions clientes des systèmes d'exploitation où les serveurs sont pré-configurés pour n'autoriser qu'une seule session distante et où les droits de l'utilisateur sont forcés avec aucune modification possible.
Le composant serveur du service de Terminal (Terminal Server) écoute sur le port réseau TCP 3389 (termdd.sys
. Lorsqu'un client RDP se connecte au serveur sur ce port, il se voit attribué une ID de session unique (SessionID) et se voit associer à une nouvelle console de session (Session 0, clavier, souris et interface utilisateur uniquement). Le sous-système d'ouverture de session (winlogon.exe) et le sous-système graphique GDI sont ensuite initialisés et gèrent ensuite l'opération d'authentification et de présentation de l'interface utilisateur graphique (GUI). Ces binaires sont exécutés dans une nouvelle session plutôt que la session Console. Lors de la création d'une nouvelle session, les pilotes graphique et clavier/souris sont remplacés par des pilotes RDP spécifiques: RdpDD.sys
et RdpWD.sys
. Le fichier RdpDD.sys
correspond au pilote de périphérique et encapsule les opérations de l'interface utilisateur dans un format qui est transmissible via le protocole RDP. RdpWD.sys
agit comme le pilote de la souris et du clavier; il perçoit les entrées clavier et souris au travers de la connexion TCP et les présente au serveur comme des entrées clavier/souris. Il permet également la création de tunnels virtuels, qui permet à d'autres périphériques tels que les lecteurs, l'audio, les imprimantes, et les ports COM d'être redirigés (i.e.: le tunnel se substitue à ces périphériques. Le tunnel se connecte au client au travers de la connexion TCP; lorsque le tunnel est accédé pour des données, le client est informé de la requête qui est ensuite transmise au travers de la connexion TCP à l'application. Ce processus est entièrement réalisé par le client et le serveur de Terminal avec l'aide du protocole RDP négociant le transfert correctement, et est entièrement transparent pour l'application). Les communications RDP sont chiffrées à l'aide de du chiffrement RC4 128-bit. Avec l'arrivée de Windows Server 2003, Le service de Terminal peut utiliser un schéma de chiffrement compatible FIPS 140.
Une fois qu'un client initie une connexion et est informé du succès de l'invocation de la couche de service de Terminal sur le serveur, il charge les périphériques ainsi que les pilotes clavier et souris. Les données de l'interface utilisateur reçues au travers de la connexion RDP sont décodées et retranscrites en Interface Utilisateur tandis que les entrées clavier et souris au niveau du client sont récupérées par le pilote et transmises via RDP au serveur. Il crée également les autres tunnels virtuels et met en place les redirections de périphériques. Les connexions RDP peuvent être chiffrées avec un niveau de chiffrement bas, moyen ou élevé. Avec un chiffrement bas, seuls les tunnels transmettant des données critiques, comme des mots de passes, sont chiffrés. Avec un chiffrement moyen, les paquets de l'Interface Utilisateur sont également chiffrés. Enfin avec le chiffrement élevé, les entrées clavier et souris sont aussi chiffrées.