Als Client bezeichnet man eine Software, den Teil einer Hardware oder die Hardware selbst, die innerhalb eines Client-Server-Modells Dienste oder Daten von einem Server anfordert. Im Wesentlichen soll der Client durch seine Programmierung, die Einhaltung spezieller Protokolle oder die Verwendung bestimmter Ports den Zugriff auf den Server und dessen Funktionen ermöglichen. Dabei kann er durchaus eigene Operationen ausführen, etwa Daten darstellen, Eingaben verarbeiten oder Inhalte lokal zwischenspeichern.
Der Begriff Client stammt aus dem Englischen und bedeutet wörtlich übersetzt Klient. Damit soll deutlich werden, dass er in einer bestimmten Kommunikationsbeziehung Leistungen eines Servers in Anspruch nimmt. Welche Aufgaben der Client selbst übernimmt und welche der Server ausführt, hängt von der jeweiligen Architektur ab.
Verschiedene Arten von Clients
Ein frühes Beispiel für Client-Server-Kommunikation ist das Telnet-Protokoll, das über eine Kommandozeile und einen passenden Telnet-Client verwendet werden kann. Telnet gehört zu den frühen Client-/Serverprotokollen und wurde am Ende der 60er-Jahre entwickelt, um entfernte Rechner über ein Netzwerk zu bedienen. Das Protokoll enthält wichtige Grundfunktionen für eine textbasierte Sitzung. Welche Programme ein Anwender darüber ausführen kann, hängt von den Berechtigungen und der Konfiguration des Servers ab.
Obwohl Telnet für damalige Verhältnisse revolutionär war und viele Anwendungsmöglichkeiten erlaubte, gab es nur rudimentäre Sicherheitsvorkehrungen. So wurden Passwörter beispielsweise im Klartext an den Server übertragen. Durch das Abhören der Kommunikation konnte es deshalb möglich sein, sich unberechtigten Zugriff zu verschaffen. Für administrative Zugriffe über unsichere Netze wird Telnet daher üblicherweise durch verschlüsselte Verfahren wie SSH ersetzt.
Ein weiteres Beispiel für einen wesentlich moderneren Client ist der Webbrowser. Obwohl dieser zunächst nicht immer mit Clients in Verbindung gebracht wird, ist das HTTP-Protokoll Teil einer Client-/Serverkommunikation. Der Webbrowser entspricht deshalb einem Client, weil er Anfragen an einen Server sendet und die übermittelten Daten, beispielsweise HTML-Dokumente, Stylesheets oder JavaScript-Code, verarbeitet und darstellt. Es ist heute üblich, zahlreiche Aufgaben auch dem Browser zu überlassen. Dazu gehören etwa Berechnungen, Formularprüfungen und die dynamische Veränderung einer Seite durch JavaScript. Frühere Plug-ins wie Flash oder Java erweiterten diese lokalen Möglichkeiten, sind für moderne Webanwendungen jedoch nicht mehr maßgeblich. Der Support für den Flash Player endete 2020, und die Ausführung von Flash-Inhalten wurde 2021 blockiert. Prinzipiell bleibt der Browser ein Client, auch wenn er umfangreiche lokale Funktionen oder Offline-Funktionen bereitstellt. Das gilt ebenfalls, wenn ein virtueller Server auf derselben Hardware läuft, die auch der Client verwendet.
Auch bei vielen E-Mail-Programmen handelt es sich um Clients. Hier werden statt HTTP spezielle Protokolle verwendet, beispielsweise POP3 oder IMAP zum Abrufen und Verwalten von Nachrichten sowie SMTP zum Versenden von E-Mails.
Auch beim Onlinegaming hat sich der Begriff Client durchgesetzt, wenn beispielsweise von sogenannten Massively Multiplayer Onlinegames (MMO) die Rede ist. Der Client ist dabei die Software, die der Anwender auf seinem Computer installiert und die schließlich die Kommunikation mit dem Server übernimmt. Rein fachlich ist jedoch nur ein Teil des Programms für diese Kommunikation zuständig, da die Berechnung der Grafik, das Abspielen von Soundeffekten und die Interpretation von Benutzereingaben häufig komplett oder überwiegend vom lokal gespeicherten Programm übernommen werden.
Abgrenzung von Rich-Client und Thin-Client
Da heute eine Vielzahl von verschiedenen Clients inklusive einiger Mischformen existiert, wurde eine feinere Kategorisierung nötig, die reine Request-/Response-Clients von solchen abgrenzt, die dem Nutzer zum Teil auch ohne Serverkommunikation Funktionen zur Verfügung stellen. Man spricht hier unter anderem von Rich-Clients und Thin-Clients.
Bei Rich-Clients handelt es sich meist um umfangreiche Programme oder modulare Systeme, die teilweise auch offline arbeiten können und bei denen viele der zur Verfügung gestellten Funktionen direkt auf der Nutzerhardware ausgeführt werden. Rich-Clients, manchmal auch Smart-Clients genannt, können beispielsweise Daten lokal verarbeiten und bestimmte Aufgaben bei Bedarf auf einen Server auslagern. Die genaue Verteilung hängt von der Anwendung und ihrer Architektur ab.
Thin-Clients hingegen sollen möglichst schlank sein und die meisten Aufgaben dem Server überlassen. Dies kann zum Beispiel eine für einen Remote-Desktop verwendete Terminalsoftware sein, mit der entfernte Systeme bedient oder überwacht werden können, oder ein Programm, das einem Server Rechenoperationen über Kommandozeilenparameter übermittelt.
Zudem gibt es hardwarebasierte Thin-Clients, die allgemein auch als Terminal bezeichnet werden. Hierbei handelt es sich um einen Computer mit begrenzter lokaler Rechenleistung, der hauptsächlich die vom Server übermittelten Daten darstellt und Benutzereingaben an diesen weiterleitet. Oft spricht man hierbei auch von einem virtuellen Desktop, da das eigentliche Betriebssystem oder die Arbeitsumgebung vom Server bereitgestellt wird.
Ein in diesem Zusammenhang häufig verwendeter Begriff ist das sogenannte Cloud-Computing, das sich auch diese Art von Clients zunutze macht. Das Auslagern von Rechenleistung und Anwendungen kann besonders für Unternehmen Vorteile bieten, weil Systeme zentral verwaltet und Ressourcen bedarfsgerecht bereitgestellt werden können. Hinzu kommt, dass die hier benutzten Thin-Clients wegen ihrer geringeren lokalen Belastung je nach Hardware und Einsatzgebiet eine längere Nutzungsdauer als leistungsstarke Desktop-Systeme erreichen können. Dem stehen die Abhängigkeit von Netzwerk und Server sowie mögliche Anforderungen an Datenschutz, Verfügbarkeit und Zugriffsschutz gegenüber.
Eine besonders stark reduzierte Variante ist der Zero-Client. Ein solcher Client besitzt in der Regel kein vollwertiges lokales Betriebssystem und ist für eine bestimmte Remote-Desktop-Infrastruktur ausgelegt. Die für die Serverkommunikation nötigen Funktionen können weitgehend in der Firmware oder auf spezialisierten Komponenten untergebracht sein. Dadurch kann der lokale Wartungsaufwand sinken, während die Abhängigkeit von der vorgesehenen Serverumgebung steigt.
Ein großes Problem dieser Technologie kann die geringe Flexibilität des Systems sein. Entscheidet sich ein Unternehmen für eine solche Lösung, kann es sich stärker an eine bestimmte Infrastruktur oder ein bestimmtes Übertragungsprotokoll binden. Vor der Auswahl sollten deshalb unter anderem Kompatibilität, Erweiterbarkeit, Ausfallsicherheit und die Möglichkeit eines späteren Anbieterwechsels geprüft werden.
Zustandsspeicherung bei Client-Konzepten
Eine wichtige Frage bei der Verarbeitung von Daten ist die Zustandsspeicherung. Unter Umständen muss ein System wissen, welche Daten ein Client zuletzt abgefragt hat, welcher Request gestellt wurde und womit der Nutzer gearbeitet hat. Diese Aufgabe wird noch komplexer, wenn mehrere Nutzer dasselbe Client-Gerät oder dieselbe Anwendung verwenden.
Einzelne Kommunikationsprotokolle können zustandslos arbeiten. Ein wichtiges Beispiel ist HTTP: Jeder Request ist zunächst eine eigenständige Anfrage. Webanwendungen können trotzdem einen Zustand abbilden, etwa über Cookies, Sitzungskennungen, lokale Browser-Speicher oder Daten auf dem Server. Grundsätzlich lassen sich Zustandsinformationen daher serverseitig oder clientseitig speichern. Häufig werden beide Methoden kombiniert.
Bei der clientseitigen Zustandsspeicherung liegen Informationen auf dem Gerät oder in der Anwendung des Nutzers. Das kann den Server entlasten und bestimmte Offline-Funktionen ermöglichen. Solche Daten können jedoch gelöscht, verändert oder von anderen Personen mit Zugriff auf das Gerät eingesehen werden. Sicherheitsrelevante Angaben sollten deshalb nicht ungeprüft als vertrauenswürdig behandelt werden. Ob ein Login erforderlich ist, hängt nicht allein vom Speicherort ab, sondern von der Anwendung und davon, ob ein Nutzer eindeutig authentifiziert werden muss.
Bei der serverseitigen Zustandsspeicherung werden Rechenleistung und Speicherplatz des Servers zusätzlich beansprucht. Dafür lassen sich Daten zentral verwalten, kontrollieren und mehreren Endgeräten eines Nutzers bereitstellen. Serverseitige Speicherung ist jedoch nicht automatisch sicherer oder störungsfrei: Entscheidend sind unter anderem Zugriffskontrollen, Verschlüsselung, Datensicherung, Verfügbarkeit und eine angemessene Begrenzung der gespeicherten Daten. Welche Methode besser geeignet ist, richtet sich nach Schutzbedarf, Funktionsumfang, Skalierung und technischer Architektur.
Zusammenfassung
Ein Client ist eine Software oder Hardware, die Dienste oder Daten von einem Server anfordert und als Schnittstelle zu dessen Funktionen dient. Dabei können verschiedene Protokolle und Ports verwendet werden. Historisch gesehen gehörte Telnet zu den frühen Protokollen für die Client-Server-Kommunikation und ermöglichte die Bedienung entfernter Rechner.
Heute finden wir verschiedene Arten von Clients wie Webbrowser und E-Mail-Programme, die unterschiedliche Protokolle wie HTTP, IMAP, POP3 oder SMTP verwenden. Im Bereich des Online-Gamings und Cloud-Computing sind Clients ebenfalls entscheidend für die Kommunikation mit Servern.
Clients können unter anderem in Rich-Clients und Thin-Clients unterteilt werden. Rich-Clients können viele Funktionen auch offline bereitstellen, während Thin-Clients stärker auf die Ressourcen des Servers angewiesen sind. Zero-Clients reduzieren die lokalen Funktionen noch weiter und sind häufig eng an eine bestimmte Remote-Infrastruktur gebunden.
Die Zustandsspeicherung ist eine wichtige Aufgabe in Client-Server-Modellen. Hierbei gibt es grundsätzlich zwei Ansätze: die serverseitige und clientseitige Speicherung. Serverseitige Speicherung ermöglicht eine zentrale Verwaltung, benötigt aber entsprechende Serverressourcen. Clientseitige Speicherung kann den Server entlasten und Offline-Funktionen unterstützen, erfordert jedoch einen sorgfältigen Umgang mit veränderbaren oder schutzbedürftigen Daten.
Häufige Fragen und Antworten
Ein Client ist eine Software oder Hardware, die innerhalb eines Client-Server-Modells Dienste oder Daten von einem Server anfordert. Sie kann zugleich lokale Aufgaben übernehmen, etwa Inhalte darstellen, Eingaben verarbeiten oder Daten zwischenspeichern.
Es gibt verschiedene Arten von Clients, wie zum Beispiel Webbrowser, E-Mail-Programme und Clients für Online-Gaming. Sie verwenden jeweils passende Kommunikationsprotokolle, um mit einem Server zu interagieren. Nach der Verteilung der Aufgaben lassen sich außerdem Rich-Clients, Thin-Clients und Zero-Clients unterscheiden.
Rich-Clients können viele Funktionen lokal und teilweise auch offline bereitstellen. Thin-Clients sind stärker darauf angewiesen, dass der Server Anwendungen, Daten oder Rechenleistung bereitstellt, und benötigen daher meist weniger lokale Ressourcen.
