Unix Socket - Client Server Modell
Die meisten Netzanwendungen verwenden die Client-Server-Architektur, die sich auf zwei Prozesse oder zwei Anwendungen bezieht, die miteinander kommunizieren, um einige Informationen auszutauschen. Einer der beiden Prozesse fungiert als Client-Prozess und ein anderer Prozess als Server.
Client-Prozess
Dies ist der Prozess, bei dem normalerweise Informationen angefordert werden. Nach Erhalt der Antwort wird dieser Prozess möglicherweise beendet oder es wird eine andere Verarbeitung ausgeführt.
ExampleDer Internetbrowser fungiert als Clientanwendung, die eine Anfrage an den Webserver sendet, um eine HTML-Webseite abzurufen.
Serverprozess
Dies ist der Prozess, der eine Anfrage von den Clients entgegennimmt. Nachdem Sie eine Anfrage vom Client erhalten haben, führt dieser Prozess die erforderliche Verarbeitung durch, sammelt die angeforderten Informationen und sendet sie an den Client des Anforderers. Sobald dies erledigt ist, kann ein anderer Kunde bedient werden. Serverprozesse sind immer aufmerksam und bereit, eingehende Anforderungen zu bearbeiten.
Example - Der Webserver wartet ständig auf Anfragen von Internetbrowsern. Sobald er eine Anfrage von einem Browser erhält, nimmt er eine angeforderte HTML-Seite auf und sendet sie an diesen Browser zurück.
Beachten Sie, dass der Client die Adresse des Servers kennen muss, der Server jedoch weder die Adresse noch die Existenz des Clients kennen muss, bevor die Verbindung hergestellt wird. Sobald eine Verbindung hergestellt ist, können beide Seiten Informationen senden und empfangen.
2-Tier- und 3-Tier-Architekturen
Es gibt zwei Arten von Client-Server-Architekturen:
2-tier architecture- In dieser Architektur interagiert der Client direkt mit dem Server. Diese Art von Architektur kann einige Sicherheitslücken und Leistungsprobleme aufweisen. Internet Explorer und Webserver arbeiten mit einer zweistufigen Architektur. Hier werden Sicherheitsprobleme mit Secure Socket Layer (SSL) gelöst.
3-tier architectures- In dieser Architektur befindet sich eine weitere Software zwischen dem Client und dem Server. Diese mittlere Software heißt "Middleware". Middleware wird verwendet, um alle Sicherheitsüberprüfungen und den Lastausgleich bei hoher Last durchzuführen. Eine Middleware nimmt alle Anforderungen vom Client entgegen und leitet diese Anforderung nach Durchführung der erforderlichen Authentifizierung an den Server weiter. Anschließend führt der Server die erforderliche Verarbeitung durch und sendet die Antwort an die Middleware zurück. Schließlich gibt die Middleware diese Antwort an den Client zurück. Wenn Sie eine dreistufige Architektur implementieren möchten, können Sie jede Middleware wie Web Logic oder WebSphere-Software zwischen Ihrem Webserver und Ihrem Webbrowser aufbewahren.
Servertypen
Es gibt zwei Arten von Servern:
Iterative Server- Dies ist die einfachste Serverform, bei der ein Serverprozess einen Client bedient und nach Abschluss der ersten Anforderung eine Anforderung von einem anderen Client entgegennimmt. Währenddessen wartet ein anderer Kunde weiter.
Concurrent Servers- Dieser Servertyp führt mehrere gleichzeitige Prozesse aus, um viele Anforderungen gleichzeitig zu bearbeiten, da ein Prozess möglicherweise länger dauert und ein anderer Client nicht so lange warten kann. Der einfachste Weg , um einen gleichzeitigen Server unter Unix zu schreiben , ist zu gabeln ein Kind Prozess jeden Kunden separat zu behandeln.
Wie erstelle ich Client
Die Systemaufrufe zum Herstellen einer Verbindung unterscheiden sich für den Client und den Server etwas, aber beide beinhalten das grundlegende Konstrukt eines Sockets. Beide Prozesse richten ihre eigenen Sockets ein.
Die Schritte zum Einrichten eines Sockets auf der Client-Seite sind wie folgt:
Erstellen Sie einen Socket mit dem socket() Systemaufruf.
Verbinden Sie den Socket mit der Adresse des Servers connect() Systemaufruf.
Daten senden und empfangen. Es gibt eine Reihe von Möglichkeiten, dies zu tun, aber die einfachste Möglichkeit ist die Verwendung vonread() und write() Systemaufrufe.
Wie erstelle ich einen Server?
Die Schritte zum Einrichten eines Sockets auf der Serverseite sind wie folgt:
Erstellen Sie einen Socket mit dem socket() Systemaufruf.
Binden Sie den Socket mit dem an eine Adresse bind()Systemaufruf. Bei einem Server-Socket im Internet besteht eine Adresse aus einer Portnummer auf dem Host-Computer.
Achten Sie auf Verbindungen mit dem listen() Systemaufruf.
Akzeptieren Sie eine Verbindung mit dem accept()Systemaufruf. Dieser Aufruf blockiert normalerweise die Verbindung, bis ein Client eine Verbindung zum Server herstellt.
Senden und Empfangen von Daten mit dem read() und write() Systemaufrufe.
Client- und Server-Interaktion
Das folgende Diagramm zeigt die vollständige Client- und Server-Interaktion.