Es ist aus dieser Antwort:
https://stackoverflow.com/questions/2482411/is-this-pdo-bug-fixed-now/2482424#2482424
Es ist aus dieser Antwort:
https://stackoverflow.com/questions/2482411/is-this-pdo-bug-fixed-now/2482424#2482424
Antworten:
Ein UNIX-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-Domain-Sockets 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.
Mit dem folgenden Befehl können Sie Ihre eigenen lokalen Unix-Sockets auflisten:
netstat -a -p --unix
Habe Spaß!
netstat
funktioniert jedoch unter Windows.
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 aus lokaler IP, lokalem Port, Remote-IP und Remote-Port identifiziert. Ein empfangsbereiter TCP-Socket wird durch den lokalen Port und möglicherweise die lokale IP identifiziert. AIUI zumindest auf Linux-TCP / IP-Sockets führt immer zur Generierung und Dekodierung von TCP / IP-Paketen, auch wenn sich Client und Server auf demselben Computer befinden.
Ein Unix-Domain-Socket (manchmal abgekürzt als Unix-Socket) kann dagegen auf einem einzelnen Computer ausgeführt werden. 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 über einen Unix-Socket annimmt, die Benutzer-ID des Prozesses ermitteln, der die Verbindung herstellt. Dies kann die Notwendigkeit eines Authentifizierungsschritts vermeiden. Anstatt ein Kennwort für Ihren Datenbankserver zu generieren und eine Kopie davon in den Code Ihrer Webanwendung aufzunehmen, können Sie dem Datenbankserver nur mitteilen, dass der Benutzer, der die Webanwendung ausführt, Zugriff auf das entsprechende Benutzerkonto in der Datenbank hat.
TCP-Sockets werden auch von Unix behandelt?
Na sicher
TCP-Sockets sind Teil der TCP-Protokollspezifikation
Internetprotokollspezifikationen betreffen in der Regel nur das, was auf der Leitung geschieht. Die TCP-Spezifikation enthält eine Definition von Socket, die jedoch nicht mit der Definition übereinstimmt, die der Begriff von der "Sockets-API" verwendet.
Die "Sockets-API", wie wir sie kennen, wurde von BSD eingeführt, aber später überall kopiert und ist Teil des posix-Standards. Das grundlegende Material für TCP- und UDP-Sockets ist in der Regel auf verschiedenen Plattformen ähnlich, aber fortgeschritteneres Material und Material, das mit anderen Teilen des Betriebssystems interagiert, variiert. Auf Unix-ähnlichen Systemen wird ein Socket beispielsweise durch ein Datei-Handle identifiziert und kann von den Datei-APIs gelesen / geschrieben werden, ist dies unter Windows nicht der Fall.
Einige Erweiterungen der Sockets-API wurden in RFCS dokumentiert, aber diese RFCs sind nur "informativ".
oder ein Protokoll könnte IP-Sockets verwenden?
Wenn eine Anwendung explizit einen Socket mit der Funktion "socket" erstellt (Sockets werden auch von der Funktion accept erstellt), werden die drei Parameter "domain", "type" und "protocol" übergeben. Zwischen diesen drei Parametern können viele verschiedene Socket-Typen ausgewählt werden.