Wie hängen Unix-Domain-Sockets mit dem Netzwerk zusammen?

3

Ich verstehe, dass das Netzwerk auch Sockets verwendet, aber ich frage mich, ob IPC-Sockets (Unix Domain) in irgendeiner Weise mit der Netzwerkschicht zusammenhängen. Wenn ja, nutzt dies irgendwie Netzwerk-HW? Funktioniert es wie ein Loopback? Wenn nicht, warum werden sie netstatin Linux aufgelistet ?

Arkonix
quelle

Antworten:

2

Unix-Domain-Sockets haben die gleiche Semantik wie normale Sockets, aber das war's auch schon. Der zugrunde liegende Code hat nichts mit der Netzwerkschicht zu tun. Sie bieten ein effizientes Kommunikationsmittel für Prozesse auf demselben Host (IPC), bei denen eine netzwerkähnliche Semantik wünschenswert ist (Listen, Connect ...).

Siehe Was ist die Kosten - Verbindung aufzubauen Unix Domain Sockets vs TCP Sockets zum Beispiel:

Nachrichten, die über TCP-Sockets gesendet werden, müssen den gesamten Weg durch den Netzwerkstapel zur Loopback-Schnittstelle (ein virtuelles Netzwerkschnittstellengerät, das auf Unix-Systemen normalerweise als "lo" bezeichnet wird) und anschließend zum empfangenden Socket zurückkehren. Der Netzwerk-Stack-Code greift TCP- und IP-Header an, trifft Routing-Entscheidungen, leitet ein Paket über "lo" an sich selbst weiter, führt dann mehr Routing durch und entfernt die Header wieder. Da TCP ein Netzwerkprotokoll ist, hat der Teil des Verbindungsaufbaus alle Arten von zusätzlicher Komplexität, um mit verworfenen Paketen umzugehen. Am wichtigsten für Sie ist, dass TCP nur drei Nachrichten senden muss, um die Verbindung herzustellen (SYN, SYN-ACK und ACK).

Bei Unix-Sockets kann der Kernel all dies umgehen und die Daten einfach zwischen den beiden Prozessen übertragen, sodass weniger Overhead entsteht.

Wenn Sie herum googeln, stoßen Sie möglicherweise auf einige Benchmarks .

Zitronenpresse
quelle
Meinetwegen. Also gibt es nur die Semantik, aber sonst überhaupt nichts damit zu networktun, oder? Warum sind sie also Teil des netstatOutputs?
Arkonix
1
Aus der Sicht der Vernetzung mag es in der Tat seltsam erscheinen, aber Sie könnten auch sehen netstat, wie man aktive Sockets auflistet, und eifrig erzählt es auch von Unix-Sockets. Sie können es wieder auf die Strecke bringen mit netstat --tcp --udpobwohl ...
Zitronenquietsche