Ein Socket Interface ist eine API für TCP/IP-Netzwerke, d.h. das Socket Interface definiert eine Reihe von Softwarefunktionen (Routinen), mit denen Programmierer Anwendungen für TCP/IP-Netzwerke entwickeln können.[9]
Folgende Aufgaben muß ein Socket Interface übernehmen können:
* Socket erzeugen.
* Socket konfigurieren
* Daten durch den Socket übertragen.
* Daten von einem Socket empfangen.
* Sockets innerhalb von Serverprogrammen verwenden
Das Socket Interface war in seinen Ursprüngen in das Unix-Betriebssystem integriert und wurde erst später als Softwarebibliothek auch für andere Betriebssysteme, wie Windows, .., implementiert. Die grundsätzlichen Aufgaben, wie ich sie oben aufgeführt haben, sind jedoch immer gleich und auch die API unterscheidet sich nur geringfügig. Somit ist eine Portierung mit nur geringfügigen Aufwand zu bewältigen.
In diesem Abschnitt beschränke ich mich auf die Beschreibung des wohl verbreitetsten Socket Interface, dem Berkeley Socket Interface. Es ist aufgrund seiner Anlehnung an das I/O-System von Unix von Entwickler sehr leicht zu verstehen.
Das Unix-Betriebssystem behandelt die System-I/O in der Form von "Öffnen-Schreiben/Lesen-Schließen"-Prozessen. Was bedeutet, daß eine Datei zuerst geöffnet werden muß, um dann Schreib/Lese-Operationen durchführen zu können. Nach Beendigung dieser Operationen muß die Datei wieder geschlossen werden. Der gleiche Vorgang wird bei Unix für Hardwareeinheiten benutzt, um sie anzusprechen. Um nun eine Datei oder ein Gerät zu öffnen, wird eine Systemfunktion benutzt, die einen Zeiger (sogenannten File Discriptor) zurückliefert. Dieser Zeiger zeigt auf eine Tabelle, die die Datei oder das Gerät beschreibt.
Da sich das Socket Interface nur an die Unix-System-I/O anlehnt, gibt es natürlich auch Unterschiede zwischen Netzwerk-I/O und Datei bzw. Geräte-I/O. Da die Netzwerkanwendungen dem Client/Server-Modell folgen, muß es möglich sein Serveranwendungen zu entwickeln, die passiv auf eine Client-Anfrage warten. Da die normale Unix-System-I/O eine passive I/O-Fähigkeit nicht bietet, mußte das Socket Interface um diese erweitert werden.
Des weiteren geht die Unix-System-I/O von festen Adressen aus, da ja Geräte und Dateien zu meist ihre Position nicht verändern. Bei verbindungsorientierter Netzwerkkommunikation kann dieses Konzept weitergeführt werden, soll jedoch eine verbindungsfreie Kommunikation stattfinden, wie es des öfteren in Netzwerken der Fall ist, mußte auch dort eine Erweiterung vorgenommen werden.
Def. Quelle: Internet Programmierung unter Windows Vlg. o´Reilly S. 177