AF_UNIX Domäne - warum nur lokale Dateinamen verwenden?

7
  

Wenn Sie Socket in der UNIX-Domäne verwenden, ist es ratsam, den Pfadnamen für das Verzeichnisverzeichnis zu verwenden, das auf der lokalen Festplatte bereitgestellt wird. Die UNIX-Domäne ermöglicht nur die Interprozesskommunikation für Prozesse, die auf demselben Computer ausgeführt werden.

Können Sie bitte die obige Zeile erklären? Es handelt sich um einen Socket in der UNIX DOMAIN.

Danke!

    
mawia 23.04.2009, 19:10
quelle

3 Antworten

12

Ein Unix-Domain-Socket oder IPC-Socket (Inter-Process Communication Socket) ist ein Datenkommunikationsendpunkt, der einem Internet-Socket ähnelt, aber kein Netzwerkprotokoll für die Kommunikation verwendet. Es wird in POSIX-Betriebssystemen für die Kommunikation zwischen Prozessen verwendet. Der korrekte POSIX-Standardbegriff ist POSIX Local IPC Sockets.

Unix-Domänenverbindungen werden als Byte-Streams angezeigt, ähnlich wie Netzwerkverbindungen, aber alle Daten bleiben auf dem lokalen Computer. UNIX-Domänen-Sockets verwenden das Dateisystem als Adressnamensraum, d. H. Sie werden von Prozessen als Inodes im Dateisystem referenziert. Dies ermöglicht zwei unterschiedlichen Prozessen, denselben Socket zu öffnen, um zu kommunizieren. Die eigentliche Kommunikation (der Datenaustausch) verwendet jedoch nicht das Dateisystem, sondern puffert im Kernel-Speicher.

Zusätzlich zum Senden von Daten können Prozesse Dateideskriptoren über eine Unix-Domain-Socket-Verbindung mit den Systemaufrufen sendmsg () und recvmsg () senden.

    
user39113 23.04.2009, 19:14
quelle
4

Die Endpunkte von UNIX-Domänen-Sockets werden durch Dateien im Dateisystem (anstelle von Host / Port) dargestellt.

Die Kommunikation zwischen Prozessen erfolgt jedoch innerhalb des lokalen Systems und führt nicht dazu, dass eine suchbare Datei irgendwo gespeichert wird.

Der Vorteil der Verwendung des Dateisystems als Namespace für die Endpunkte besteht darin, dass normale Dateiberechtigungen und ACLs angewendet werden können - wenn Sie den Endpunkt nicht öffnen können, den Sie nicht verbinden können. IP-Sockets haben keinen solchen Mechanismus.

    
Alnitak 23.04.2009 19:28
quelle
4

Wenn Sie einen AF_UNIX-Socket auf einem NFS-Datenträger erstellen, der von zwei Computern A und B gemeinsam genutzt wird, können Sie keinen Prozess auf A schreiben, der Daten in den Unix-Socket schreibt, und einen Prozess auf B, der Daten von diesem Socket liest.

Die Kommunikation findet auf Kernel-Ebene statt, und Sie können nur Daten zwischen Prozessen austauschen, die im selben Kernel liegen.

    
Stefano Borini 23.04.2009 19:44
quelle

Tags und Links