Sockets: Unterschied zwischen den Versionen

Aus Xinux Wiki
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