2013-02-17 4 views
5

Ich mache eine Studie über Unix-Domain-Socket. Vor allem, wie es funktioniert. Ich habe viele Male mit vielen Keywords gegoogelt, aber die Ergebnisse drehen sich um API, Systemaufrufe, wie man es benutzt, Beispiele .... Ich habe auch über Pipe und FIFO gelesen, weil der Unix Domain Socket mit Pipe und FIFO identisch sein soll, aber ich möchte immer noch mehr über das Konzept/die Prinzipien von Unix Domain Socket wissen. Wie funktioniert es? (Vielleicht auf der Kernel-Ebene, weil Wiki sagt dies: "Dies ermöglicht zwei Prozesse, um den gleichen Socket zu öffnen, um zu kommunizieren. Allerdings erfolgt die Kommunikation vollständig innerhalb des Betriebssystemkerns."Prinzip des Unix-Domain-Sockets. Wie funktioniert es?

Ich frage mich immer noch, warum Unix-Domain Socket-Dokumentationen weniger als Rohr oder FIFO? Vielleicht, weil es vor so vielen Jahren geboren wurde?

mir jemand irgendwelche Ideen oder welche Bücher/Links?

im Voraus

Dank lesen konnten zeigen!

+0

Für ein Buch, versuchen Sie * Unix Network Programming, Volume 1 * von W. Richard Stevens. Die dritte Ausgabe ist die neueste, aber eine gebrauchte Kopie der zweiten Edition kostet viel weniger und ist ausreichend, wenn Sie sie nicht in Ihrer lokalen Bibliothek finden können. –

+0

Dank @robmayoff für Ihre Bücher, lese ich es. Aber es spricht über UDS API :(. Ich brauche Informationen über, vielleicht, wie Daten gesendet werden oder in Kernel-Ebene erhalten. So etwas wie über Pipe hier sprechen: http://www.tldp.org/LDP/lpg/node10 .html # SECTION00721000000000000000 Vielen Dank! – leokaka

+0

[* TCP/IP Illustriert, Band 3: TCP für Transaktionen, HTTP, NNTP und die UNIX-Domänenprotokolle *] (http://amzn.com/0201634953), auch von W Richard Stevens –

Antwort

16

Unix-Sockets sind wie alle anderen Socket-Typen verwendet, dh für diese werden Socket-Systemaufrufe verwendet Unterschied zwischen FIFOs und Unix-Sockets ist, dass FIFO sys-Aufrufe von Dateien verwendet, während Unix-Sockets Socket-Aufrufe verwenden.

Unix-Sockets werden als Dateien adressiert. Es ermöglicht die Verwendung von Dateiberechtigungen für die Zugriffssteuerung.

Unix-Sockets werden von Socket-Systemaufruf erstellt (während FIFO von mkfifo erstellt wurde). Wenn Sie den Client-Socket benötigen, rufen Sie connect auf und übergeben ihm die Server-Socket-Adresse. Wenn Sie einen Server-Socket benötigen, können Sie eine Bindung zur Zuweisung der Adresse vornehmen. Während für FIFO wird offener Ruf verwendet. Die IO-Operation wird durch Lesen/Schreiben ausgeführt.

Unix-Socket kann seine Clients unterscheiden, während FIFO nicht ist. Info über den Peer wird durch den Accept Call bereitgestellt, er gibt die Adresse des Peers zurück.

Unix-Sockets sind bidirektional. Dies bedeutet, dass jede Seite sowohl Lese- als auch Schreibvorgänge ausführen kann. Während FIFOs unidirektional sind, hat es einen Writer-Peer und einen Leser-Peer.

Unix-Sockets schaffen weniger Overhead und die Kommunikation ist schneller, als von Localhost IP-Sockets. Paket muss nicht wie bei Localhost Sockets durch den Netzwerkstack gehen. Und da sie nur lokal existieren, gibt es kein Routing.

Wenn Sie weitere Informationen darüber benötigen, wie Unix-Sockets auf Kernel-Ebene arbeiten, schauen Sie sich bitte die net/unix/af_unix.c-Datei in der Linux-Kernel-Quelle an.

+0

Wenn Sie mit meiner Antwort zufrieden sind, stellen Sie es bitte als beste Antwort ein Oder fügen Sie zum Kommentar hinzu, was noch erklärt werden muss: –

+0

Vielen Dank für Ihre Informationen, aber ich habe bereits über diese Informationen gelesen :(Könnten Sie mir bitte weitere Informationen darüber geben, wie Daten gesendet und empfangen werden?/O Danke s! – leokaka

+0

Unix-Sockets verwenden die gleiche API wie andere Socket-Typen.Sie werden vom sys-Socket-Aufruf erstellt und Sie können dann eine Verbindung zum Server-Socket herstellen, indem Sie den Aufruf verbinden oder ihn binden (wenn Sie den Server-Socket benötigen). Lese-/Schreibaufrufe können zum Ausführen von IO verwendet werden. –

Verwandte Themen