3 Das Client-Server-Prinzip


3.1 Das klassische Client-Server-Netz
3.2 Das Peer-To-Peer-Netz
3.3 Ein Beispiel: Chatten
3.4 Geräte, Algorithmen, Schnittstellen

Zum vorigen Kapitel Zum Inhaltsverzeichnis Zum nächsten Kapitel


3.1 Das klassische Client-Server-Netz

In einem Computernetz gibt es eine Vielzahl verschiedener Geräte, die miteinander über den Hub Informationen austauschen können. Die Geräte haben gelegentlich sehr unterschiedliche Aufgaben, und entsprechend verschieden ist auch ihr Verhalten im Netz:

Man teilt nun ganz allgemein die "Geräte" in einem Netz nach dem Grad ihrer Eigeninitiative in zwei Klassen ein:

  1. Ein "Client" (engl. the client = der Kunde) ist ein Gerät, das im Netz aktiv werden kann: es nimmt "von sich aus" (d.h. in der Regel aufgrund von Benutzer-Eingaben!) Kontakt mit anderen Geräten im Netz auf und sendet diesen Arbeitsaufträge.

  2. Ein "Server" (engl. to serve = bedienen) ist ein Gerät, das im Netz seine Dienstleistungen anbietet, dabei aber passiv bleibt, bis es von einem anderen Gerät einen Auftrag bekommt. Es ist sozusagen durch den Auftraggeber fremd-gesteuert.


Der oben angeführte Netzwerk-Drucker ist ein Musterbeispiel für einen Server: er verhält sich zunächst gänzlich passiv und harrt still der Druckaufträge, die da kommen werden. Solange kein Druck-Job kommt, tut er nichts (außer warten); wenn ein Druckauftrag ankommt, nimmt er die Daten entgegen und druckt sie aus. Danach fällt der Netzwerk-Drucker wieder in die passive Haltung zurück und beschränkt sich darauf, seine "Druck-Dienste" anzubieten.

Auch der "Server-Rechner" eines Netzes ist in diesem Sinne ein Server, denn er wird ebenfalls nie "von sich aus" aktiv: er wartet darauf, dass er von den Client-Stationen Auträge bekommt, welche er dann ausführt. So werden in einem Firmennetz zum Beispiel die an den Client-Stationen anfallenden Daten üblicherweise zentral "auf dem Server" gespeichert. Dieser stellt dazu entsprechende "Datei-Verwaltungsdienste" zur Verfügung.

Ganz anders verhält sich die "Arbeitsstation": hier werden Daten erzeugt und bearbeitet. Immer wenn bei diesem Prozess die lokal vorhandenen Fähigkeiten der Arbeitsstation nicht ausreichen, wird ein entsprechender Auftrag an einen passenden Server geschickt:
Die Initiative geht dabei stets vom Client aus! Dies genau ist die Client-Server-Rollenverteilung:
der "Kunde"(Client) sagt, was er will, der "Dienstleister" (Server) erbringt (daraufhin) die gewünschte Leistung.

Es folgt eine Liste von üblichen Server-Arten und beschreibt die von diesen angebotenen Dienste:

Server-Art Angebotener Dienst
File-Server Speichert Dateien und liefert sie zurück
Web-Server Liefert HTML-Seiten aus
FTP-Server Liefert Dateien aus (und nimmt evtl. Dateien an)
Mail-Server Speichert einkommende Email und liefert sie aus
Proxy-Server Liefert Internet-Dienste für mehrere Rechner
CDRom-Server Verwaltet mehrere CD-Laufwerke und liefert Daten
Print-Server Führt Druckaufträge aus
Chat-Server Verteilt Online-Nachrichten an die Teilnehmer
DHCP-Server Teilt neuangemeldeten Rechnern gültige IP-Adressen zu




3.2 Das Peer-To-Peer-Netz

Wenn nun die Kommunikation zwischen Computern immer so abläuft, dass ein "Client" bei einem "Server" einen Dienst anfordert und der entsprechende Server seinerseits aber nur aufgrund dieser Anfrage tätig wird, dann könnte es möglicherweise so erscheinen, als wäre die Kommunikation zwischen zwei gewöhnlichen Arbeitsplatz-Rechnern völlig ausgeschlossen.

Dies ist jedoch eine falsche Folgerung: "Client sein" und "Server sein" sind nämlich eigentlich keine Beschreibungen von Rechnern, sondern viel eher Beschreibungen für ein bestimmtes Verhalten von Programmen, die auf den so bezeichneten Rechnern laufen. Und so wird eben ein Rechner, auf dem vorwiegend "Programme mit Server-Verhalten" laufen, kurz als "Server" bezeichnet; auf einer typischen Arbeitsstation hingegen laufen fast nur "Programme mit Client-Verhalten".

Es gibt jedoch auch Ausnahmen. Ein solcher Fall sind die sogenannten Peer-To-Peer-Netze (engl. the peer = der Ebenbürtige). So bezeichnet man ein Netz aus Rechnern, die alle "gleichartig" sind, d.h. dasselbe Verhalten im Netz zeigen. In einem solchen Netz gibt es keinen ausgezeichneten Server. Trotzdem findet die Kommunikation zwischen den Rechnern nach demselben Client-Server-Prinzip statt! Hierzu laufen nun auf jedem Rechner sowohl Client-artige als auch Server-artige Programme, sodass jeder Rechner gleichzeitig beide Rollen spielen kann, nämlich: als Client Dienste von den anderen Rechnern anfordern und seinerseits als Server den anderen Rechnern Dienste anbieten.

Und wie bietet nun ein Computer in einem solchen Peer-To-Peer-Netz seine Server-Dienste an? Indem er seine lokalen Geräte den anderen Computern zur Verfügung stellt! Unter Windows heißt dieser Vorgang "Freigabe". Solche "freigegebenen" Geräte können dann von den anderen Computern im Netz ebenfalls genutzt werden. Ist zum Beispiel an eine Arbeitsstation ein teurer Laserdrucker angeschlossen, dann kann dieser auch für die anderen Arbeitsstationen verfügbar gemacht werden, indem er "freigegeben" wird. Danach erscheint er in der "Netzwerk-Umgebung" aller Arbeitsstationen dieses Netzes.

Man beachte aber, dass sich durch den Vorgang der Freigabe überhaupt nichts am Gerät "Laserdrucker" geändert hat! Die Freigabe bedeutet lediglich, dass ein Server-Programm gestartet wurde, das die Druckdaten, die eventuell von den anderen Rechnern ankommen, erfolgreich zum lokalen Laserdrucker weiterleiten kann. Funktional wurde der Laserdrucker damit also in die Hülle eines "Software-Gerätes" gesteckt, wodurch er für die anderen Arbeitsstationen verfügbar gemacht wird.

Vor diesem Hintergrund bekommen die Definitionen von "Client" und "Server" aus dem vorigen Abschnitt nachträglich einen ganz anderen Zungenschlag: dort haben wir diese Vokabeln als Beschreibungen von "Geräten mit bestimmtem Verhalten" eingeführt, und vermutlich haben wir dabei zunächst "Gerät" mit "Computer" gleichgesetzt. Nun erscheint der Computer eher als eine Maschine, die sich aus vielen einzelnen Geräten zusammensetzt. Nicht umsonst heißt das zentrale Programm für die Hardware-Einstellungen in der Windows-Systemsteuerung "Geräte-Manager"! Aber was für das Verhalten des Computers im Netz noch viel wichtiger ist als die Hardware, das sind die "Software-Geräte", d.h. die aktiven Programme!






3.3 Ein Beispiel: Chatten

Ein Standard-Beispiel für die Rechner-Kommunikation ist ein Chat-Programm: dieses Programm überträgt meine Eingaben zu allen anderen am Chat Teilnehmenden und zeigt umgekehrt die Eingaben der Anderen auf meinem Bildschirm an. Für den Benutzer sieht es so aus, als finde hier eine direkte Kommunikation zwischen verschiedenen Client-Rechnern statt. Jedoch wird die gesamte Kommunikation über einen Server abgewickelt: dieser repräsentiert den "chat room"! Die folgende Tabelle verdeutlicht das Zusammenspiel zwischen Clients und Server:

Oberfläche Funktionalität
Ich gehe in den chat room. Mein Chat-Client nimmt Verbindung mit dem Chat-Server auf und meldet sich/mich an.
Ich sende einen Beitrag ab. Mein Chat-Client beauftragt den Chat-Server, den Text meines Beitrags an alle aktiven Clients zu übertragen.
Ich empfange einen Beitrag. Mein Chat-Client erhält vom Chat-Server den Text eines Beitrags eines anderen Teilnehmers übermittelt und zeigt ihn mir an.
Ich verlasse den chat room. Mein Chat-Client meldet sich/mich beim Chat-Server ab, die Verbindung wird unterbrochen.

Normalerweise verschwindet die rechte Spalte hinter einer benutzer-freundlichen Oberfläche des "chat rooms". Damit Ihnen die Funktionsweise eines Chat deutlich und klar wird, sollen Sie die folgende Aufgabe mit einem ganz einfachen Chat-Programm bearbeiten:


  1. Chat as chat can:


  2. Am Lehrerarbeitsplatz läuft ein Chat-Server (ChatServ.exe). Starten Sie an Ihrem Arbeitsplatz einen Chat-Client (ChatClie.exe), und melden Sie sich beim Server an. Dann können Sie mit allen anderen Angemeldeten chatten.

    Wenn Sie wollen, können Sie einen eigenen chat room aufmachen, indem Sie auf Ihrem Rechner ebenfalls einen Chat-Server starten (ChatServ.exe). Veröffentlichen Sie Ihre IP-Adresse, damit die Kollegen an den anderen Rechnern Ihren chat room auch finden können!





3.4 Geräte, Algorithmen, Schnittstellen

In den vorangegangenen Ausführungen kommt auffallend häufig das Wort "Gerät" vor. Werfen wir noch einmal einen genaueren Blick darauf, was das eigentlich ist:

Ein Gerät ist ein Hilfsmittel, das dazu dient, eine genau spezifizierte Aufgabe zu erledigen. Im Kontext der Informatik handelt es sich dabei stets um die Transformation eines Eingangsdatenstroms in einen Ausgangsdatenstrom. Ein paar Beispiele dazu:


Das folgende Bild veranschaulicht die strukturelle Gemeinsamkeit der obigen Beipiele und stellt damit dar, was ein "Gerät" ist:

Gerät

Diese Veranschaulichung sollte Ihnen bekannt vorkommen: es ist dasselbe Diagramm, das wir benutzt haben, um den Begriff des Algorithmus darzustellen! Und tatsächlich läßt sich ein Gerät (wie z.B. unser Drucker) auffassen als ein "implementierter Algorithmus". Im Falle eines physischen Geräts ist der Algorithmus sozusagen "in Hardware gegossen" oder "realisiert"; im Falle eines "virtuellen" Software-Geräts wird der Algorithmus durch ein Programm verwirklicht.

Interessanterweise ist es einem Client ziemlich egal, ob der Server aus Hardware oder Software besteht. Wichtig ist lediglich, wie der Eingangsdatenstrom für den Server beschaffen sein muss, damit er die gewünschte Aufgabe erledigt, d.h. den gewünschten Ausgangsdatenstrom erzeugt. Für den Client ist also der Server durch sein Input-Output-Verhalten schon vollständig beschrieben. Die Stellen, an denen die Informationen in ein Gerät hinein- und wieder herausfließen, nennt man die Schnittstellen des Gerätes. Um den Server sinnvoll nutzen zu können, muss der Client nur diese Schnittstellen kennen; wie der Server eigentlich im Detail implementiert ist, muss den Client nicht interessieren. Diesen Sachverhalt nennt man Kapselung:

Die folgende Tabelle enthält eine Übersicht über die Analogie zwischen einem Computer-Gerät und einem durch eine Prozedur dargestellten Algorithmus:

EDV-Gerät Algorithmus (Prozedur)
Schnittstelle(n) Deklaration der Prozedur (Prozedurkopf mit Parameterliste)
Eingangsdatenstrom Werteparameter ("Input-Parameter")
Ausgangsdatenstrom Variablenparameter ("Output-Parameter")
Interner Aufbau Implementierung der Prozedur
Gerät aktivieren Prozedur aufrufen







Zum vorigen Kapitel Zum Inhaltsverzeichnis Zum nächsten Kapitel