Sockets
Zur Navigation springen
Zur Suche springen
Allgemein
- Ein Socket ist ein vom Betriebssystem bereitgestelltes Objekt, das als Kommunikationsendpunkt dient.
- Ein Programm verwendet Sockets, um Daten mit anderen Programmen auszutauschen.
- Das andere Programm kann sich dabei auf demselben Computer (Interprozesskommunikation) befinden oder auf einem anderen, über das Netzwerk erreichbaren Computer.
- Die Kommunikation über Sockets erfolgt in der Regel bidirektional (Senden und Empfangen).
Funktionsprinzip
- Sockets bilden eine plattformunabhängige Schnittstelle zwischen der Netzwerkprotokoll-Implementierung des Betriebssystems und der Anwendungssoftware.
- Ein Computerprogramm fordert einen Socket vom Betriebssystem an; dieses verwaltet alle benutzten Sockets und Verbindungsinformationen.
Multiplexing und das 5-Tupel
- Ein einzelner Server-Port kann tausende Verbindungen gleichzeitig bedienen.
- Das Betriebssystem unterscheidet die Pakete anhand des 5-Tupels: {Quell-IP, Quell-Port, Ziel-IP, Ziel-Port, Protokoll}.
- Solange ein Wert abweicht, wird das Paket einer eindeutigen Verbindung zugeordnet.
Internet-Sockets
- Man unterscheidet Stream-Sockets (kontinuierlicher Datenstrom, meist TCP) und Datagram-Sockets (geschlossene Nachrichten, meist UDP).
- Ein Socket repräsentiert die Verbindungsstelle durch Adressinformationen (IP und Port) sowohl der lokalen als auch der entfernten Seite.
Privilegierte Ports unter Unix/Linux
- Ports von 0 bis 1023 sind privilegiert; nur Prozesse mit Root-Rechten dürfen diese binden.
- Dies verhindert, dass unbefugte Benutzer Standard-Dienste (wie SSH oder HTTP) fälschen.
Server-Logik
- Ein Server wartet auf Anfragen; bei Erfolg wird die Verbindung oft geklont (Forking), damit der Haupt-Socket weiter auf neue Anfragen warten kann.
- Der geklonte Prozess bedient nur diesen einen Client, bis die Verbindung beendet wird.
Ephemeral Ports und TIME_WAIT
- Clients nutzen zufällige, kurzlebige Ports (Ephemeral Ports) für ausgehende Verbindungen.
- Nach dem Schließen verbleibt ein Socket oft kurz im Zustand TIME_WAIT, um verspätete Pakete der alten Verbindung abzufangen.
TCP Status
- listening: Der Server wartet auf eingehende Anfragen; der Socket ist noch nicht fest verbunden.
- connected: Eine konkrete Instanz einer Verbindung; ein Client wird aktiv bedient.
Die drei Arten von Sockets
TCP Sockets
- Kombination aus IP-Adresse und Port, einem Service fest zugewiesen.
- Nutzt eine etablierte Verbindung (Aufbau/Abbau).
- Beispiel: tcp 192.168.4.1:80 LISTEN httpd
UDP Sockets
- Kombination aus IP-Adresse und Port, verbindungslos.
- Beispiel: udp 0.0.0.0:5353 avahi-daemon (0.0.0.0 bedeutet Bindung an alle lokalen IPs).
UNIX Sockets
- Kommunikation lokaler Prozesse über eine spezielle Datei im Dateisystem.
- Unterstützt sowohl "stream" als auch "datagram".
- Beispiel: unix LISTENING /run/snapd.socket
- Dateityp prüfen: ls -l /run/snapd.socket (Kennung 's' am Anfang: srw-rw-rw-).


