Das Client-Server-Modell ist ein grundlegendes Architekturprinzip verteilter Systeme: Ein Client stellt Anfragen, ein Server verarbeitet sie und stellt Ressourcen oder Dienste über ein Netzwerk bereit.
Auch genannt: Client-Server-Architektur
In diesem Modell übernehmen zwei Rollen unterschiedliche Aufgaben: Der Client fordert etwas an – etwa eine Webseite oder eine Datei –, der Server hält die entsprechenden Ressourcen bereit und liefert eine Antwort. Diese Arbeitsteilung erlaubt es, dass ein einzelner Server viele Clients gleichzeitig bedienen kann, ohne dass jeder Client die gesamte Funktionalität selbst mitbringen muss.
Ein Client sendet über ein vereinbartes Protokoll eine Anfrage (Request) an einen Server, der über eine Netzwerkadresse erreichbar ist. Der Server verarbeitet die Anfrage – etwa durch Abruf von Daten oder Ausführung einer Berechnung – und schickt eine Antwort (Response) zurück. Die Rollen sind dabei nicht an bestimmte Hardware gebunden: Derselbe Rechner kann für einen Dienst als Server und für einen anderen Dienst gleichzeitig als Client auftreten.
Ein Webbrowser fungiert als Client, wenn er eine Webadresse aufruft: Er sendet eine Anfrage an den zuständigen Webserver, der die passende Webseite als Antwort zurücksendet und im Browser dargestellt wird.
Das Client-Server-Modell bildet die Grundlage des World Wide Web, von E-Mail-Diensten, Datenbankzugriffen, Cloud-Anwendungen und den meisten Programmierschnittstellen. Es strukturiert, wie Anwendungen Ressourcen zentral bereitstellen und von vielen Endgeräten aus nutzbar machen.
Nicht jede Netzwerkkommunikation folgt dem Client-Server-Modell: Bei Peer-to-Peer-Systemen kommunizieren gleichrangige Teilnehmer direkt miteinander, ohne feste Client- und Serverrolle. Ein weiteres Missverständnis ist, „Server“ stets mit einem einzelnen physischen Rechner gleichzusetzen – tatsächlich kann ein Serverdienst auf viele Systeme verteilt oder virtualisiert betrieben werden.
Nicht zu verwechseln mit dem Hypertext Transfer Protocol: Dieses ist ein konkretes Kommunikationsprotokoll, das im Web nach dem Client-Server-Modell arbeitet, aber nicht das Architekturprinzip selbst ist. Ebenfalls abzugrenzen ist Cloud Computing: Es beschreibt ein Bereitstellungsmodell für Rechenressourcen, das auf Client-Server-Kommunikation aufbaut, aber deutlich mehr umfasst als die reine Kommunikationsstruktur.