Sockets: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 53: | Zeile 53: | ||
* '''Beispiel:''' unix LISTENING /run/snapd.socket | * '''Beispiel:''' unix LISTENING /run/snapd.socket | ||
* '''Dateityp prüfen:''' ls -l /run/snapd.socket (Kennung 's' am Anfang: srw-rw-rw-). | * '''Dateityp prüfen:''' ls -l /run/snapd.socket (Kennung 's' am Anfang: srw-rw-rw-). | ||
| + | == Verbindung == | ||
| + | *Server ist im Listen Modus und hat einen festen Port | ||
| + | *Client kennt der Port und bekommt von OS einen beliebigen Port zugewiesen. | ||
| + | *Daraus leitet der Client den 3 Wege Handshake ein. | ||
| + | *Danach gilt die Verbindung als etabliert. | ||
| + | *Ihre Eindeutigkeit wird bestimmt durch die die Kombiantion von | ||
| + | **Client-IP | ||
| + | **Client-Port | ||
| + | **Server-IP | ||
| + | **Server-Port | ||
| + | **Protokoll: TCP oder UDP | ||
| + | {{#drawio:socket-socket}} | ||
Aktuelle Version vom 4. Juni 2026, 12:23 Uhr
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-).
Verbindung
- Server ist im Listen Modus und hat einen festen Port
- Client kennt der Port und bekommt von OS einen beliebigen Port zugewiesen.
- Daraus leitet der Client den 3 Wege Handshake ein.
- Danach gilt die Verbindung als etabliert.
- Ihre Eindeutigkeit wird bestimmt durch die die Kombiantion von
- Client-IP
- Client-Port
- Server-IP
- Server-Port
- Protokoll: TCP oder UDP



