Client-Server-Architektur

Aus dev.kaibel.net
Zur Navigation springen Zur Suche springen

Client-Server-Architektur

Die Client-Server-Architektur ist ein grundlegendes Kommunikationsmodell in der Informatik, bei dem Aufgaben und Dienste zwischen zwei Rollen aufgeteilt werden: dem Client (Anfragender) und dem Server (Dienstanbieter). Dieses Modell bildet die Basis vieler moderner Anwendungen wie Webdienste, E-Mail-Systeme oder Datenbanken.

Grundprinzip

Der Client stellt eine **Anfrage (Request)** an den Server, und der Server liefert eine **Antwort (Response)** zurück. Die Kommunikation erfolgt typischerweise über ein Netzwerk (z. B. TCP/IP).

Client → Anfrage → Server  
Client ← Antwort ← Server

Komponenten

Komponente Beschreibung
Client Ein Programm oder Gerät, das einen Dienst anfordert.

Beispiele: Webbrowser, E-Mail-Client, App.

Server Ein Programm oder System, das Anfragen verarbeitet und Ressourcen oder Dienste bereitstellt.

Beispiele: Webserver, Datenbankserver, Datei- oder Mailserver.

Eigenschaften

  • **Zentralisierte Struktur:** Der Server ist die zentrale Einheit für Daten und Dienste.
  • **Anfrage-Antwort-Prinzip:** Kommunikation erfolgt nach einem klaren Muster (Request/Response).
  • **Rollenverteilung:** Clients konsumieren, Server stellen bereit.
  • **Mehrbenutzerfähig:** Ein Server kann mehrere Clients gleichzeitig bedienen.
  • **Sicherheitskontrolle:** Zugriffsrechte und Authentifizierung werden zentral verwaltet.

Beispielhafte Kommunikation

Ein typischer Ablauf zwischen Webbrowser (Client) und Webserver:

1. Client: sendet HTTP-GET-Anfrage an Server
2. Server: empfängt Anfrage, sucht angeforderte Datei
3. Server: sendet HTTP-Response mit HTML-Daten zurück
4. Client: zeigt die Website an

Architekturvarianten

1. Zwei-Schichten-Architektur (2-Tier)

Client kommuniziert direkt mit dem Server.

Client ↔ Server

Beispiel: Datenbankanwendung, bei der ein Client direkt SQL-Abfragen an den DB-Server sendet.

2. Drei-Schichten-Architektur (3-Tier)

Trennung zwischen Präsentation, Logik und Datenhaltung.

Client ↔ Applikationsserver ↔ Datenbankserver

Beispiel: Webanwendungen (Browser – Webserver – Datenbank).

3. Mehrschichten-Architektur (n-Tier)

Erweiterung des 3-Tier-Modells mit zusätzlichen Schichten (z. B. Caching, Authentifizierung, Microservices).

Vergleich zu Peer-to-Peer-Architekturen

Merkmal Client-Server Peer-to-Peer
Struktur Zentralisiert Dezentral
Kontrolle Server verwaltet Ressourcen Alle Knoten gleichberechtigt
Ausfallsicherheit Gering (Server als Single Point of Failure) Hoch (Redundanz)
Skalierbarkeit Abhängig von Serverkapazität Sehr hoch (mit wachsender Teilnehmerzahl)
Verwaltung Einfach zentral steuerbar Komplex, da verteilt
Beispiele Web, E-Mail, Datenbanken BitTorrent, Blockchain, Skype (alt)

Vorteile

  • Zentrale Verwaltung von Daten, Sicherheit und Ressourcen
  • Einfachere Wartung und Kontrolle
  • Klare Rollenverteilung (Client = Anfrage, Server = Antwort)
  • Hohe Konsistenz durch zentrale Datenhaltung
  • Gut geeignet für Unternehmensnetzwerke und Webdienste

Nachteile

  • Abhängigkeit von der Serververfügbarkeit (Single Point of Failure)
  • Begrenzte Skalierbarkeit bei hoher Last
  • Erhöhter Ressourcenbedarf auf Serverseite
  • Potenzielle Engpässe bei Netzwerkbandbreite

Typische Anwendungen

  • **Webserver:** Bereitstellung von Webseiten über HTTP/HTTPS
  • **Datenbankserver:** Speicherung und Verwaltung strukturierter Daten
  • **Mailserver:** Versand, Empfang und Speicherung von E-Mails
  • **Dateiserver:** Gemeinsame Nutzung von Dateien im Netzwerk
  • **Anwendungsserver:** Ausführung von Geschäftslogik und Backend-Prozessen

Kommunikationsprotokolle

Protokoll Beschreibung Beispiel
HTTP / HTTPS Übertragung von Webinhalten Webbrowser ↔ Webserver
FTP / SFTP Dateiübertragung FileZilla ↔ FTP-Server
SMTP / POP3 / IMAP E-Mail-Kommunikation Outlook ↔ Mailserver
MySQL / PostgreSQL Datenbankabfragen Anwendung ↔ Datenbankserver
SSH / Telnet Remote-Verbindungen Terminal ↔ Server

Sicherheit

In der Client-Server-Architektur sind zentrale Schutzmechanismen wichtig:

  • **Authentifizierung:** Überprüfung der Identität (z. B. Benutzername/Passwort, Zertifikate)
  • **Autorisierung:** Kontrolle des Zugriffs auf bestimmte Ressourcen
  • **Verschlüsselung:** Schutz der Kommunikation (z. B. TLS/SSL)
  • **Firewalls:** Begrenzen den Zugriff auf Serverports
  • **Load Balancing:** Verteilung von Anfragen auf mehrere Server zur Lastreduzierung

Erweiterte Konzepte

  • **Cluster-Server:** Mehrere Server arbeiten zusammen, um Ausfallsicherheit zu erhöhen.
  • **Load Balancer:** Verteilt Anfragen auf mehrere Server-Instanzen.
  • **Microservices:** Zerlegung der Serverfunktionen in unabhängige Module.
  • **Cloud-Architekturen:** Serverdienste werden virtuell über Rechenzentren bereitgestellt.

Beispiel einer modernen Webarchitektur

[Browser]
   ↓
[Webserver / API Gateway]
   ↓
[Application Server]
   ↓
[Datenbankserver]

Fazit

Die Client-Server-Architektur ist das **dominante Kommunikationsmodell** moderner IT-Systeme. Sie bietet **Zentralisierung, Kontrolle und Einfachheit**, eignet sich aber weniger für hochverteilte oder ausfallsichere Systeme, bei denen **Peer-to-Peer** oder **verteilte Architekturen** Vorteile haben.

Siehe auch

Quellen