it-swarm.com.de

Was ist der Unterschied zwischen Unix-Socket und TCP / IP-Socket?

136
apache

Ein NIX-Socket ist ein prozessübergreifender Kommunikationsmechanismus, der den bidirektionalen Datenaustausch zwischen Prozessen ermöglicht, die auf demselben Computer ausgeführt werden.

IP-Sockets (insbesondere TCP/IP-Sockets) sind ein Mechanismus, der die Kommunikation zwischen Prozessen über das Netzwerk ermöglicht. In einigen Fällen können Sie TCP/IP-Sockets verwenden, um mit Prozessen zu kommunizieren, die auf demselben Computer ausgeführt werden (mithilfe der Loopback-Schnittstelle).

UNIX-Domänensockets wissen, dass sie auf demselben System ausgeführt werden, sodass sie einige Überprüfungen und Vorgänge (z. B. Routing) vermeiden können. Das macht sie schneller und leichter als IP-Sockets. Wenn Sie also mit Prozessen auf demselben Host kommunizieren möchten, ist dies eine bessere Option als IP-Sockets.

Bearbeiten: Gemäß Nils Toedtmanns Kommentar : UNIX-Domain-Sockets unterliegen Dateisystemberechtigungen, während TCP-Sockets nur auf Paketfilterebene gesteuert werden können.

218
pQd

Mit dem folgenden Befehl können Sie Ihre eigenen lokalen Unix-Sockets auflisten:

netstat -a -p --unix

Habe Spaß!

31

Was ist der Unterschied zwischen Unix-Socket und TCP/IP-Socket?

Ein TCP/IP-Socket wird für die Kommunikation über TCP/IP-Netzwerke verwendet. Ein verbundener TCP Socket wird durch die Kombination von lokaler IP, lokalem Port, Remote-IP und Remote-Port identifiziert. Ein Listening TCP Socket wird durch lokalen Port und identifiziert möglicherweise lokale IP. AIUI zumindest unter Linux-TCP/IP-Sockets führt immer zur Generierung und Dekodierung von TCP/IP-Paketen, selbst wenn sich Client und Server auf demselben Computer befinden.

Ein Unix-Domain-Socket (manchmal auch als Unix-Socket abgekürzt) arbeitet dagegen auf einem einzelnen Computer. Listening-Sockets befinden sich in der Dateisystemhierarchie, und der Zugriff darauf kann über Dateisystemberechtigungen gesteuert werden.

Darüber hinaus kann ein Prozess, der eine Verbindung auf einem Unix-Socket akzeptiert, die Benutzer-ID des Prozesses ermitteln, der eine Verbindung herstellt. Dadurch kann die Notwendigkeit eines Authentifizierungsschritts vermieden werden. Anstatt ein Kennwort für Ihren Datenbankserver zu generieren und eine Kopie davon in den Code Ihrer Webanwendung aufzunehmen, können Sie dem Datenbankserver einfach mitteilen, dass der Benutzer, der die Webanwendung ausführt, Zugriff auf das entsprechende Benutzerkonto in der Datenbank hat.


TCP-Sockets werden auch von Unix verarbeitet?

Na sicher

TCP-Sockets sind Teil der Protokollspezifikation TCP)

Internetprotokollspezifikationen betreffen in der Regel nur das, was auf dem Kabel geschieht. Die Spezifikation TCP enthält eine Definition von Socket, aber diese Definition entspricht nicht der Verwendung des Begriffs durch die "Sockets-API".

Die "Sockets API", wie wir sie kennen, wurde von BSD eingeführt, aber später überall kopiert und ist Teil des Posix-Standards. Die grundlegenden Dinge für TCP und UDP-Sockets sind auf verschiedenen Plattformen in der Regel gleich, aber fortgeschrittenere Dinge und Dinge, die mit anderen Teilen des Betriebssystems interagieren, variieren, beispielsweise auf Unix-ähnlichen Systemen a Socket wird durch ein Dateihandle identifiziert und kann von den Datei-APIs gelesen/geschrieben werden. Dies ist unter Windows nicht der Fall.

Einige Erweiterungen der Sockets-API wurden in rfcs dokumentiert, aber diese RFCs sind nur "informativ".

oder könnte irgendein Protokoll IP-Sockets verwenden?

Wenn eine Anwendung explizit einen Socket mit der Funktion "Socket" erstellt (Sockets werden auch von der Funktion accept erstellt), werden drei Parameter übergeben: "Domäne", "Typ" und "Protokoll". Zwischen diesen drei Parametern können viele verschiedene Socket-Typen ausgewählt werden.

  • domäne wählt die Familie der verwendeten Protokolle/Adressen aus, z. AF_INET für ipv4, AF_INET6 für ipv6, AF_Unix für Unix-Dateisystempfade usw.
  • typ wählt die Kommunikationssemantik aus, wobei die wichtigsten Datagramme und Streams sind, aber es gibt auch andere spezialisiertere Typen.
  • protokoll wählt das zu verwendende Protokoll aus. Wenn es auf 0 gesetzt ist, wird ein Standardprotokoll für die Kombination von Domäne und Typ verwendet.
15
Peter Green