next up previous contents
Next: HTTP Up: Kommunikationsprotokolle Previous: Transmission Control Protocol (TCP)

   
Sockets

Die Socket-Schnittstelle dient als standardisierte Programmierschnittstelle zwischen dem Anwendungsprogramm und TCP/IP. Neben der rechnerübergreifenden Kommunikation von Prozessen über TCP/IP, wird sie auch zur lokalen Interprozesskommunikation genutzt.
Die Socket-Schnittstelle kommt aus der UNIX-Welt. Mit dem 4.2BSD2.20 wurden die Sockets in UNIX2.21 eingeführt. Eine allgemein verfügbare Spezifikation, die auf den UNIX-Sockets basiert, wurde von der Firma Mircosoft unter der Bezeichnung WinSock in das WOSA2.22 aufgenommen und wurde damit ein etablierter Standard.
Ein großer Vorteil der Verwendung von Sockets ist ihre Homogenität, d. h. eine Kommunikation über Sockets ist unabhängig von dem Standort der Prozesse, dem Betriebssystem, der Rechnerarchitektur und dem Übertragungsmedium.
Der Aufbau einer TCP/IP Verbindung aus einem Anwenderprogramm wird durch die Verwendung von Sockets sehr einfach. Der Anwendungssoftware stehen die in Tabelle 2.2 gezeigten TCP-Systemaufrufe zur Verfügung.
Zum Aufbau einer Verbindung werden vom Client und Server mit Hilfe des Funktionsaufrufes socket() eine Instanz der Socket-Schnittstelle erstellt und das Transportprotokoll festgelegt. Durch den Systemaufruf bind() legt der Server den lokalen Host und den lokalen Port fest. Damit ist die Adresse festgelegt, auf welcher der Server dem Client antwortet. Nach dem Aufruf der Funktionen listen() und accept() wartet der Server auf ein connect() des Clients. Der Client bekommt mit dem connect()-Aufruf implizit eine lokale Adresse zugewiesen und übergibt sie dem Server. Die Verbindung ist nun aufgebaut und Client und Server können mit read()- und write()-Funktionen bidirektionalen, byteorientierten Datenaustausch betreiben. Durch den Systemaufruf close() wird die Verbindung abgebaut.
Tabelle 2.2 vergleicht eine Socket-Verbindung zwecks Anschaulichkeit mit einem Telefongespräch.
Ausführliche Grundlagen und Programmbeispiele zur Socketprogrammierung sind in [3] zu finden. Hier wurde die Socket-Schnittstelle nur so weit beschrieben, wie es zum Verständnis der Zusammenhänge in dieser Diplomarbeit erforderlich ist.
 
 
Tabelle 2.2: Analogie zwischen dem Nutzen einer Socket-Schnittstelle und Telefonieren
Prozess 1 Prozess 2 Funktion Analogie beim Telefonieren
Server Client    
socket() socket() Socket erstellen Telefonhörer abheben
bind()   Adresse dem Socket zuweisen Telefonnummern zuweisen
listen ()   Erlaubnis erteilen, mit dem Erlaubnis erteilen, an-
    Socket Verbindung aufzunehmen gerufen zu werden
  connect() Verbindungswunsch mitteilen Telefonnummer wählen
accept()   Verbindung komplett aufbauen Anruf beantworten
write() write() Daten über die Schnittstelle senden Reden
read() read() Daten empfangen Zuhören
close() close() Socket schließen Auflegen


Quelle: [27], Seite 223


next up previous contents
Next: HTTP Up: Kommunikationsprotokolle Previous: Transmission Control Protocol (TCP)
Thorsten Thormaehlen
2000-03-27