Das am häufigsten verwendete Modell bei der Entwicklung von verteilten Anwendungen ist das Client/Server-Modell. Im Client/Server-Modell fordern Client-Anwendungen Dienste von einer Server-Anwendung an. Dies impliziert die bereits in "Grundlagen von SOCKETS(POSIX)" beschriebene Asymmetrie beim Aufbau von Verbindungen zwischen Client und Server. Das vorliegende Kapitel geht anhand von Beispielen näher auf die Interaktion zwischen Client und Server ein und zeigt einige Probleme und deren Lösung bei der Entwicklung von Client/Server-Anwendungen.
Bevor ein Service gewährt und angenommen werden kann, erfordert die Kommunikation zwischen Client und Server eine für beide Seiten bekannte Menge von Übereinkünften. Diese Übereinkünfte sind in einem Protokoll festgelegt, das auf beiden Seiten einer Verbindung implementiert sein muss. Je nach Situation kann das Protokoll symmetrisch oder asymmetrisch sein. In einem symmetrischen Protokoll können beide Seiten die Server- oder die Client-Rolle übernehmen. Bei einem asymmetrischen Protokoll wird die eine Seite unveränderlich als der Server angesehen und die andere Seite unveränderlich als der Client.
Unabhängig davon, ob ein symmetrisches oder ein asymmetrisches Protokoll für einen Service verwendet wird, gibt es beim Zugriff auf einen Service einen Client und einen Server.
Die folgenden Abschnitte beschreiben:
den verbindungsorientierten Server
den verbindungsorientierten Client
den verbindungslosen Server
den verbindungslosen Client