Sockets: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 70: Zeile 70:
  
 
==UNIX Sockets==
 
==UNIX Sockets==
* [[UNIX Sockets]]
+
===Allgemein===
 +
*Socket besteht aus speziellen Datei
 +
*Dateiart bezeichnet man als Socket
 +
*Über diese Datei können lokale Prozesse kommunizieren
 +
*Beispielsweise Webserver mit einer Datenbank
 +
*Man kann sowohl "stream" als auch "datagram" nutzen.
 +
===Schaubild===
 +
{{#drawio:unix-socket}}
 +
===Beispiel===
 +
Der Socket besteht aus der Datei /run/snapd.socket
 +
Wahrscheinlich ist sie der snapd Service zugewiesen
 +
;<nowiki>unix LISTENING /run/snapd.socket</nowiki>
 +
*ls -l /run/snapd.socket
 +
srw-rw-rw- 1 root root 0 Jun 21 17:45 /run/snapd.socket

Version vom 29. März 2026, 11:15 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.
  • Über ein Socket können Daten sowohl empfangen als auch gesendet werden.

Funktionsprinzip

  • Sockets bilden eine plattformunabhängige, standardisierte Schnittstelle zwischen der Netzwerkprotokoll-Implementierung des Betriebssystems und der Anwendungssoftware.
  • Ein Computerprogramm fordert einen Socket vom Betriebssystem an.
  • Das Betriebssystem verwaltet alle benutzten Sockets sowie die zugehörigen Verbindungsinformationen.

Internet-Sockets

  • Internet-Sockets ermöglichen die Kommunikation über bestimmte Netzwerkprotokolle.
  • Man unterscheidet zwischen Stream-Sockets und Datagram-Sockets.
  • Stream-Sockets kommunizieren über einen kontinuierlichen Datenstrom.
  • Datagram-Sockets über einzelne, in sich geschlossene Nachrichten.
  • In der Netzwerkkommunikation verwenden Stream-Sockets meist TCP.
  • Datagram-Sockets üblicherweise UDP.
  • Ein Socket ist die Verbindungsstelle zu einem bestimmten entfernten Programm, repräsentiert durch dessen Adressinformation (z. B. IP-Adresse und Portnummer).
  • Jedem Socket ist auch die eigene Adressinformation (lokale IP-Adresse und Portnummer) zugeordnet.

Server

  • Ein Server wartet auf Anfragen auf einer oder mehreren Adressen.
  • Wenn der Server eine Anfrage von einem Client erhält, wird die Verbindung geklont, sodass der Server weitere Anfragen bedienen kann.
  • Unter Unix heißt diese Vorgehensweise Forking.
  • Der ursprüngliche Server-Socket bleibt erhalten und wartet weiterhin auf neue Verbindungen.
  • Der geklonte Prozess wird nur für die Kommunikation mit diesem einen Client verwendet.
  • Er bleibt bestehen, bis die Verbindung zum Client von einer der beiden Seiten beendet wird.

TCP Status

Es gibt zwei verschiedene Zustände:

listening

  • Ein Server, der auf eingehende Verbindungen wartet.
  • Er ist noch nicht verbunden.
  • Dieser Socket stellt nur die grundsätzliche Möglichkeit einer Verbindung bereit.

connected

  • Eine konkrete Instanz einer Verbindungsanfrage.
  • Der Server-Prozess wurde geforkt.
  • Ein konkreter Client wird bedient.

Es gibt drei Arten von Sockets

TCP Sockets

Eigenschaften

  • Socket besteht aus einer Kombination von IP Adresse und Port
  • Der Socket ist einem Service zu gewiesen
  • Es wird eine Verbindung genutzt die etabliert wird
  • Diese Verbindung wird auch wieder abgebaut

Schaubild

Beispiel

Der Socket mit der IP Adresse 192.168.4.1 und dem Port 80 ist dem Service named zugewiesen.

tcp 192.168.4.1:80 LISTEN httpd

UDP Sockets

Allgemein

  • Socket besteht aus einer Kombination von IP Adresse und Port
  • Der Socket ist einem Service zu gewiesen
  • Ist verbindunglos

Schaubild

Beispiel

Der Socket mit der IP Adresse 0.0.0.0 und dem Port 5353 ist dem Service avahi-daemon zugewiesen.

0.0.0.0 bedeutet er ist jeder auf dem Rechner konfigurierten IP Adresse zugewiesen.

udp 0.0.0.0:5353 avahi-daemon

UNIX Sockets

Allgemein

  • Socket besteht aus speziellen Datei
  • Dateiart bezeichnet man als Socket
  • Über diese Datei können lokale Prozesse kommunizieren
  • Beispielsweise Webserver mit einer Datenbank
  • Man kann sowohl "stream" als auch "datagram" nutzen.

Schaubild

Beispiel

Der Socket besteht aus der Datei /run/snapd.socket Wahrscheinlich ist sie der snapd Service zugewiesen

unix LISTENING /run/snapd.socket
  • ls -l /run/snapd.socket
srw-rw-rw- 1 root root 0 Jun 21 17:45 /run/snapd.socket