i

Fachkonzept - Client-Server-System

Anbieter und Kunde

Ein Client-Server-System besteht aus zwei Kommunikationspartnern, einem Server, der bestimmte Dienste zur Verfügung stellt, und einem Client, der angebotene Dienste des Servers in Anspruch nimmt.

Client und Server

Ein Server kann auch mehrere Clients gleichzeitig bedienen.

Fünf Clients und Server

Bei einer Client-Server-Anwendung nimmt ein Client Kontakt mit dem Server auf. Damit das auch möglich ist, muss der Server stets auf eine solche Kontaktaufnahme vorbereitet sein.

Auf Ebene der Transportschicht müssen Client und Server bei ihrer Kommunikation zwei Grundprobleme lösen: Der Aufbau einer Verbindung und die Regelung eines zuverlässigen Transports der einzelnen Datenpakete.

Aufbau einer Client-Server-Kommunikation

Das Drei-Wege-Handschlag-Verfahren wird auch bei Protokollen wie TCP zum Verbindungsaufbau zwischen einem Client und einem Server benutzt. Dabei tauschen Client und Server drei speziell gekennzeichnete Pakete aus, was man sich wie eine Verabredung per Messenger vorstellen kann:

  1. "Können wir uns morgen um 18:00 Uhr im Kino treffen?" (SYN)
  2. "Ja, gute Idee." (SYN+ACK)
  3. "Also, dann bis morgen!" (ACK)

Drei-Wege-Hanschlag

Im Detail läuft das 3-Wege-Handschlag-Verfahren folgendermaßen ab:

Drei-Wege-Hanschlag

In einem ersten Schritt sendet der Client-Prozess ein SYN-Datenpaket ("SYNchronize sequence numbers"). In diesem Datenpaket wird dem Server-Prozess zur Synchronisation eine Anfangssequenznummer x mitgeteilt, von welcher ausgehend alle weiteren Pakete nummeriert werden, die der Client-Prozess in dieser TCP-Sitzung sendet.

In einem zweiten Schritt sendet der Server-Prozess dem Client-Prozess ebenfalls ein SYN-Datenpaket und eine eigene Anfangssequenznummer y. Zudem bestätigt der Server-Prozess die Anfangssequenznummer x des Client-Prozesses, indem er die nächste erwartete Sequenznummer ACK=x+1 eines vom Client gesendeten Datenpakets zurückschickt ("ACKnowledgement").

In einem dritten Schritt antwortet der Client-Prozess mit einer Bestätigung der Anfangssequenznummer y des Server-Prozesses, indem er die nächste erwartete Sequenznummer ACK=y+1 eines Datenpakets vom Server zurückschickt.

Regelung eines zuverlässigen Datentransports

Beim Datenaustausch zwischen Client und Server kann jeder der beiden die Rolle des Senders annehmen. Das im folgenden beschriebene Protokoll zur Transportkontrolle ist an TCP angelehnt und behandelt vier Situationen, die beim Transport zwischen Sender und Empfänger auftreten können:

Situation 1: Wenn kein Datenpaket verloren geht, dann lässt sich der Datentransport wie im folgenden Sequenzdiagramm beschreiben.

Sequenzdiagramm

Ein Sender verschickt Datenpakete an einen Empfänger. Die Datenpakete sind mit Sequenznummern durchnummeriert. Wenn der Empfänger ein Datenpaket erhält, dann schickt er eine Bestätigungsdatenpaket (ACK) mit der als nächstes erwarteten Sequenznummer an den Sender zurück. Der Sender schickt anschließend das nächste Datenpaket an den Empfänger.

Situation 2: Ein Datenpaket geht verloren. Der Empfänger kann in einem solchen Fall natürlich kein Bestätigungsdatenpaket an den Sender zurückschicken. Der Sender merkt das, indem er beim Versenden einen Timer startet und nach einer voreingestellten Wartezeit registriert, dass er immer noch keine Bestätigung für das gesendete Datenpaket erhalten hat. Der Sender schickt daraufhin eine Kopie des verlorengegangenen Datenpakets an den Empfänger.

Sequenzdiagramm

Situation 3: Natürlich kann auch ein Bestätigungsdatenpaket verloren gehen. In diesem Fall erhält der Sender ebenfalls keine Bestätigung und verschickt noch einmal eine Kopie des Datenpakets an den Empfänger. Der Empfänger stellt an der Sequenznummer fest, dass er jetzt ein Duplikat eines Datenpakets erhalten hat. Er ignoriert das Datenpaket und sendet erneut ein Bestätigungsdatenpaket.

Sequenzdiagramm

Situation 4: Es kann auch der Fall eintreten, dass ein Bestätigungsdatenpaket verzögert beim Sender eintrifft. Auch in diesem Fall wird das Datenpaket erneut verschickt. Der Empfänger erkennt das an der Sequenznummer und ignoriert das Datenpaket. Der Sender ignoriert zudem ein erneut erhaltenes Bestätigungsdatenpaket des Empfängers.

Sequenzdiagramm

Suche

v
10.6.2.3
dev.inf-schule.de/rechnernetze/filius/clientserver/konzept_clientserver
dev.inf-schule.de/10.6.2.3
dev.inf-schule.de/@/page/LGvG7CnMYs6QvZoP

Rückmeldung geben