Sockets

Aus Xinux Wiki
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.
  • Ü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