# Terminalserver

Der Begriff Terminalserver steht für ein Funktionsprinzip der elektronischen Datenverarbeitung und für Server-Software und -Hardware. Bei einem Terminalserver sind Daten zentral auf einem „Server“ oder „Host“ gespeichert und die Programme werden dort ausgeführt, während die Ein- und Ausgabe dezentral auf Benutzerendgeräten (den Terminals oder der Clientsoftware) über ein Netzwerk stattfindet. In der Zeit der Großrechner (Mainframes) war dieses Funktionsprinzip der Normalfall. Auf dem Großrechner werden die Programme ausgeführt, auf dem Client oder Terminal nur der Bildschirm dargestellt, sowie Maus und Tastatureingaben an den Großrechner übermittelt.

## Historie

Mit dem Aufkommen von Computerbildschirmen und den nun möglich werdenden Dialoganwendungen bestand die Rechnerwelt aus „Hosts“ (Zentralcomputern, heute Server genannt, damals typischerweise Großrechner) und Endgeräten (Terminals). Die Terminals waren damals Text- oder alphanumerische Bildschirme. Demzufolge bildete das einzige Eingabegerät eine Tastatur. Der Benutzer gab per Tastatur Daten ein, die an den Host zur Verarbeitung geleitet wurden. Der Host lieferte das Ergebnis der Verarbeitung auf dem Bildschirm des Anwenders. Das erforderliche Netzwerk für eine solche Installation benötigte im Vergleich zu heute nur sehr geringe Übertragungskapazitäten (wenige KByte/sec) und war typischerweise nur mit einem Host verbunden. Ein Beispiel einer solchen Netzwerkarchitektur stellte die Systems Network Architecture (SNA) von IBM dar, einem der ersten Großrechnerhersteller. Waren die Endgeräte räumlich nah beieinander, wurden oft kostengünstige serielle Terminals verwendet, d. h., es gab kein Computer-Netzwerk im heutigen Sinne, sondern nur eine Reihe von seriellen Datenleitungen (wie RS-232- oder RS-485-Anschlüsse) zu den Endgeräten, die alle an einem Zentralrechner angeschlossen waren. Es war ebenso möglich, diese Verbindung per Modem über eine Telefonleitung zu führen. Diese Endgeräte waren bei Unix-Zentralrechnern weit verbreitet.
Mit steigender Verbreitung der Unix-Systeme, damals auch „Open Systems“ genannt (da es Varianten von mehreren Herstellern gab), wurde für dieses Betriebssystem (1984) eine Grafische Benutzeroberfläche entwickelt, das sogenannte X Window System. Diese Technik machte die Ausgabe von Grafiken auf die Computerbildschirme möglich. Die Besonderheit des X Window Systems (kurz X11 genannt), war es, Ausgaben auch über Computernetzwerke hinweg auf entfernte Terminals schicken zu können. Dazu wurde ein eigenes Netzwerkprotokoll entwickelt, auf TCP/IP ebenfalls X11 genannt. Das empfangende Terminal benötigte für die Darstellung ein sogenanntes X-Server-Programm. Diese Art von Terminals („X-Terminal“) genannt benötigten im Gegensatz zu den alten Text-Terminals einen eigenen, lokalen Prozessor und eine Grafikkarte für die Bildschirmsteuerung. Das X-Window-System hatte bereits 1984 alle Eigenschaften moderner GUIs wie Mausbedienung, Mehrfensterausgabe, skalierbare und horizontal- und vertikal rollbare Fenster. Der Begriff Terminalserver wurde mit den X-Terminals üblich.
Mit dem Aufkommen der Personal Computer wurden GUI und dezentrale Programminstallationen üblich und schließlich Standard. Damit waren auf jedem Arbeitsplatz auch leistungsfähige Prozessoren und Grafikkarten verfügbar, die Hardwaregrundlage für eine Terminalserver-Infrastruktur. Im kommerziellen Bereich konnten die PCs aber nie auf Server- bzw. Großrechnerprogramme verzichten, Terminalserver wurde nun zum Namen für Softwarelösungen, die die Darstellung solcher Programme auf PCs ermöglichte.

## Heutige Ausprägungen

Die immer mehr geforderte Grafikfähigkeit von Anwendungsprogrammen sorgte für stark steigende Bandbreitenanforderungen an die Computernetzwerke, wenn sie über Terminalserver genutzt wurden. Das X11-Protokoll war diesbezüglich ungünstig, da Grafikinformationen nicht komprimiert wurden. Eine neue Familie von Terminalserver-Protokollen wurden entwickelt, ein frühes und sehr leistungsfähiges war Independent Computing Architecture der Firma Citrix Systems, die Komprimierung, Caching, Verschlüsselung in die Protokolle einbrachten. Das Protokoll Virtual Network Computing wurde entwickelt und später als Open Source veröffentlicht und fand dadurch große Verbreitung in der Unix-Welt. Die Firma Citrix startete eine Kooperation mit Microsoft, um das Terminalserverprinzip auch unter dem damals neu entwickelten Windows NT zu ermöglichen. Windows NT war zu diesem Zeitpunkt (Version 3.1 bzw. 3.51) zwar mehrbenutzer-fähig, konnte aber nicht mehrere grafische Sitzungen („Multisession“-Fähigkeit) gleichzeitig ausführen. Citrix erweiterte den Windows-NT Kernel dahingehend, baute das ICA-Protokoll in Windows NT ein und durfte dieses „Citrix Terminal Server“ genannte Produkt zunächst exklusiv vertreiben. Microsoft kaufte Citrix später die Rechte an dieser Technologie (ohne ICA-Protokoll) ab und entwickelte ein eigenes Netzwerkprotokoll, das Remote Desktop Protocol (RDP). In späteren Windows-Server-Versionen war die Technologie als Windows Terminal Services direkt verfügbar. Windows Terminal Services heißt seit 2008 Remote Desktop Services. Der Seamless Desktop integriert eine auf dem lokalen Computer vorhandene grafische Oberfläche mit der auf einen entfernt gelegenen Server und mischt die beiden Desktops ineinander, indem er Icons und Fenster nur darstellt. Sowohl Seamless Desktop als auch X11/xdm sind fähig, einzelne fernausgeführte Anwendungen integriert in der lokalen Oberfläche darzustellen, wodurch eine lokale Installation der Software entfällt. Sofern der lokale und der entfernte Computer dasselbe Protokoll verwenden, kann eine Verbindung auch aufgebaut werden, obwohl die beiden Computer unterschiedliche Betriebssysteme nutzen. Seit Windows 2000 ist in der Professional Version von Windows vorgesehen, einem Benutzer gleichzeitig über RDP den Bildschirm zur Verfügung zu stellen. Es können sich mehrere Benutzer mit dem gleichen Terminal Server verbinden.
Im Sinne des Funktionsprinzips „Terminalserver“ können heutige Internet- und Cloud-Webanwendungen ebenso als „Terminal“- oder zentralisierte Programme angesehen werden. Auch die Virtualisierung von Arbeitsplatzrechnern wird als Terminalserver-Betrieb oder Virtual Desktop Infrastructure angesprochen. IP-Netze, über die VPN-Tunnel möglich sind, sind für den Fernzugriff auf Terminalservices einer Cloud-Webanwendung üblich. In einer Terminal Serverfarm stehen mehrere Terminalserver zur Verfügung, die auf gemeinsame Netzwerkressourcen zugreifen. Eine Lastenverteilung ist im Zuge der Anmeldung möglich, so dass sich der einzelne Benutzer mit dem Terminalserver verbindet, der in dem Moment am wenigsten Benutzer bedient.

## Wirtschaftlichkeit

Beim Aufbau mit vielen Arbeitsplätzen (Clients) und einem leistungsstarken zentralen System (Host) wird die Wirtschaftlichkeit in einem Gesamtmodell bewertet, das beispielsweise berücksichtigt:
* Anzahl der Clients für gleichzeitige Nutzung (Lizenzkosten)
* Leistung des Servers und Redundanz (Hardwarekosten)
* Aufwand für die Clients und lokale Sicherung (Wartungskosten der Hardware und Betriebskosten)
* Aufwand für Änderungen der Anwendung (Pflegekosten der Applikation)
* Auslegung des Netzwerks für die Transfers (Hardware- und Leitungskosten)
* Sicherung und Schutz der Datenbestände (Ausfall- und Missbrauchsrisiken)
* Zusammenfassung der Zugriffsmechanismen in einem gemeinsamen Konzept (Authentizität, Autorisierung und Missbrauchsrisiken)

### Vorteile

* Da die Datenhaltung und die Verarbeitung der Daten auf dem entfernten (remote) Server stattfindet, kann der lokale Arbeitsplatz (Client) mit dem Einsatz von Thin Clients kostengünstiger, einfacher und robuster sein als beim Einsatz von vollwertigen Desktop-Computern mit eigener Festplatte etc.
* Die Serverfunktion kann zudem mit einem leistungsfähigen Server (Host) für mehrere Serverfunktionen virtualisiert werden und erfordert keine eigene Hardware.
* Bei Verwendung optimierter Netzwerkprotokolle kann der Datenverkehr gegenüber dem Zugriff von Clients auf zentrale Daten, die lokal auf einem Personal Computer verarbeitet werden, deutlich sinken.
* Bei Ausfall, Diebstahl oder Virenbefall des lokalen Endgeräts (Client) gehen die auf dem Server gespeicherten Daten nicht verloren bzw. fallen nicht in unbefugte Hände.
* Die Arbeitsplatz-Einzelkosten (Total Cost of Ownership, TCO) sinken bei großen Installationen erheblich.
* Die Anwendungssoftware muss nur einmal auf dem Terminalserver installiert und gepflegt werden.
* Auf den lokalen PC-Systemen (Clients) ist lediglich die Terminal-Zugangssoftware zu installieren.
* Eine redundante Installation kann Ausfälle in einer Terminalserver-Farm vollständig überbrücken (Hot Swap).
* Es sind eine zentrale Administration und ein einfach zu steuerndes Sicherheitskonzept möglich, durch die die Daten die Serverumgebung nicht verlassen.

### Nachteile

* Zentralisierung: Der Anlagenverbund ist grundsätzlich vom Netzwerk abhängig.
* Bildschirminhalte sowie Eingaben, die über die Internetleitung übertragen werden, sind immer durch eine gewisse Latenz gekennzeichnet.
* Video-Streaming sowie die Darstellung oder Bearbeitung von hochauflösenden Grafikinhalten ist eingeschränkt.
* Der Anwender hat nicht alle Freiheiten, die er auf einem Personal Computer hat.
* Die Softwarekompatibilität und das Lizenzmodell müssen passen: Nicht jede Standardsoftware läuft auf einem Terminalserver.