EMZETT.
Login

Sockets

Kurz: Ein Endpunkt einer Netzwerkverbindung, definiert durch die Kombination aus IP-Adresse und Port — die Programmierschnittstelle, über die Anwendungen tatsächlich Daten senden und empfangen.

Genauer: Ein Socket ist die konkrete Umsetzung dessen, was Betriebssysteme Programmen zur Verfügung stellen, um Netzwerkverbindungen aufzubauen (“Socket öffnen”, “Socket binden”). Auf Windows-Systemen übernimmt WinSock diese Aufgabe, auf Unix-Systemen die BSD-Socket-API.

Im Detail

Ein Socket wird durch fünf Werte eindeutig identifiziert: Protokoll (TCP oder UDP), lokale IP-Adresse, lokaler Port, entfernte IP-Adresse, entfernter Port — dieses “5-Tupel” unterscheidet jede einzelne Verbindung eindeutig vom Betriebssystem-Kernel. Für Programmierer stellt die Socket-API einige grundlegende Operationen bereit: socket() (einen neuen Socket erstellen), bind() (einen lokalen Port reservieren), listen()/accept() (auf eingehende Verbindungen warten, serverseitig), connect() (eine Verbindung zu einem Server aufbauen, clientseitig) sowie send()/recv() zum eigentlichen Senden und Empfangen von Daten.

Diese API ist die gemeinsame Grundlage, auf der praktisch jede höhere Netzwerkbibliothek aufbaut — wenn ein Programm z. B. eine HTTP-Anfrage stellt, öffnet die verwendete HTTP-Bibliothek intern einen TCP-Socket, verbindet ihn mit dem Zielserver und schickt den formatierten HTTP-Request als rohe Bytes darüber. Für Entwickler ist das meist unsichtbar, weil moderne Sprachen und Frameworks diese Low-Level-Details hinter komfortableren Abstraktionen verstecken.

Siehe auch: WinSock, Port