Was ist ein Unix® Domain Socket?
Ein Unix®-Domain-Socket ist ein spezieller Socket-Typ innerhalb des Unix®-Betriebssystems (OS), der Daten von einer Anwendung zu einer anderen überträgt. Im Gegensatz zu anderen Sockets, die normalerweise eine Verbindung zu anderen Systemen herstellen, ist der Unix®-Domain-Socket ein IPC-Socket (Inter-Process Communication), dh, er stellt nur eine Verbindung zu anderen Programmen auf dem Computer des Benutzers her. Strukturell ähnelt der Domain-Socket eher einer Named Pipe als einem Socket, obwohl er mehrere Funktionen aufweist, die eine Pipe nicht umfasst. Die Verwendung von Domain-Sockets ist sicher, da andere Netzwerke den Datenstrom nicht ausspionieren können und der Socket nicht einmal ein Netzwerk benötigt, um zu funktionieren.
Sockets werden in jedem Betriebssystem verwendet, um Bytes in einem bidirektionalen Fluss von einem Programm zu einem anderen zu übertragen. Dies bedeutet, dass beim Verlassen von Daten andere Daten eingehen. Dies wird normalerweise als Brücke für andere Server und Computer verwendet Nicht bei einem Unix® Domain-Socket. Über diese speziellen Sockets werden Daten aus dem Unix®-Dateisystem in ein anderes Programm und nicht in ein externes Netzwerk übertragen.
Während der Unix®-Domain-Socket viele Socket-bezogene Aufgaben und Fähigkeiten teilt, ähnelt er eher einer Named Pipe. Eine Named Pipe ist eine Möglichkeit für den Computer, Daten von einem Abschnitt zu einem anderen zu übertragen. Es wird Named Pipe genannt, weil der Pipe ein Name gegeben wird, genau wie der Unix®-Domain-Socket einen Namen hat - das Unix®-Dateisystem selbst fungiert als Name. Der Hauptunterschied zwischen diesen beiden besteht darin, dass Pipes nur Byte-Stream-Sequenzen anbieten können, in denen Daten beim Senden gelesen werden, während Domain-Sockets Byte-Stream und Datagramm anbieten, in denen Informationen als Paket gelesen werden. Byte-Stream ist sicherer, wohingegen Datagramm besser für Systeme geeignet ist, die fortlaufende Nachrichten senden.
Unix®-Domain-Sockets lassen sich nicht in externe Netzwerke integrieren, bieten jedoch viele praktische Funktionen für lokale Netzwerke, unabhängig davon, ob eine Person oder mehrere Personen den Computer verwenden. Durch die Verwendung des Unix®-Domain-Sockets anstelle anderer Socket-Typen können die Programme eine Authentifizierung oder Berechtigung erhalten, ohne dass der Benutzer diese manuell eingeben muss. Der Domain-Socket übernimmt auch die Regeln des Unix®-Systems. Dies ist hilfreich, wenn verschiedenen Benutzern unterschiedliche Zugriffsebenen zugewiesen werden, da diese Regeln auf das System geschrieben und beachtet werden können.
Ein Unix®-Domain-Socket ist sicherer als andere Sockets und Pipes. Über Domain-Sockets kann ein nicht vertrauenswürdiges Netzwerk den Datenstrom nicht abhören, und Remotecomputer können ohne Zugriff keine Verbindung zum Datenstrom herstellen. Alle Authentifizierungs- und Anmeldeinformationen befinden sich in der Unix®-Domäne, sodass der Benutzer niemals ein Kennwort oder einen Benutzernamen eingeben muss, um sich am Server anzumelden. Dies bedeutet, dass Programme, die Tastenanschläge anhören, diese Informationen nicht erhalten.