Client-Server-Modell

Das Client-Server-Modell ist ein wichtiger Bestandteil der Netzwerktechnik in der Informatik, da quasi alle Dienste im Web darauf aufbauen. Dies beginnt bei Webhosting und geht bis zu Onlinespielen bei denen die Spieldaten mithilfe von einem Server an alle Beteiligen verteilt werden.

Möchte man ein Netzwerk aufbauen bei dem jeder mit jedem Daten austauschen kann, so wäre die einfachste Option eine Client zu Client Verbindung. Vorteil dabei ist die direkte Verbindung, so werden die Daten direkt übertragen und können nur schwer mitgelesen werden.

Das Problem dabei ist, dass die Anzahl der Verbindungen quadratisch zur Anzahl der Clients steigt.

Dieser Sachverhalt lässt sich schön anhand eines vollständigen Graphen, also einer bei dem alle Knoten untereinander verbunden sind, veranschaulichen.

Graph_5_Knoten Graph_10_Knoten

Bei einem Graphen mit 5 Knoten ergeben sich bereits 10 Verbindungen, bei einem mit 10 Knoten erhält man 45.

Die Anzahl der Kanten abhängig von den Knoten lässt sich mit folgender Formel berechnen:

    \[ \Delta_{n-1} = \frac{n(n-1)}{2} = \frac{n^2-n}{2} = \frac{1}{2} n^2 - \frac{1}{2} n\]

Da die Kantenanzahl quadratisch zur Knotenanzahl wächst, erhält man bei entsprechend großen Graphen auch viele Verbindungen. Diese vielen Verbindungen kann ein Client mit seiner Leistung normalerweise nicht aufrechterhalten.

Hier ein Link zu der Webseite mit der ich die obenstehenden Graphen erzeugt habe. Sie ist gut um ein bisschen mit Graphen zu experimentieren.

Deshalb benutzt man das Client-Server-Modell um dieses Problem zu lösen.

Clientseitiges Spiel. Der Server ist nur für die Übermittlung der Daten zuständig. In diesem Fall sendet Client 1 einen String, wobei die anderen Clients wissen, dass dieser String vom ersten Client kommt.
Clientseitiges Spiel. Der Server ist nur für die Übermittlung der Daten zuständig. In diesem Fall sendet Client 1 einen String, wobei die anderen Clients wissen, dass dieser String vom ersten Client kommt.

Hier gibt es insgesamt nur so viele Verbindungen, wie auch Clients vorhanden sind. Die Anzahl wächst also linear. Jeder Client hat nur eine Verbindung und damit kein Problem mit dem Traffic. Beim Server allerdings muss meist eine bessere Hardware eingesetzt werden, da dieser die ganzen Clients stemmen muss.

In dem einfachsten Fall, wie oben gezeigt, ist der Server nur für die Übermittlung der Daten zuständig, wobei das Spiel auf den Clients selber läuft. Zu dieser Socket-Thematik habe ich bereits einen Artikel zu einem Chatserver in Python geschrieben.

Diese Technik wird allerdings fast nicht mehr verwendet, da die meisten Applikationen auf der Serverseite betrieben werden. Dabei schickt der Client seine Daten, wie z.B. die Position der eigenen Spielfigur, an den Server. Der prüft die Daten auf Korrektheit, verarbeitet sie und schickt ein Teil ggf. an die anderen Clients.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*