Che cos’è un socket di dominio Unix®?

Un socket di dominio Unix® è un tipo di socket speciale all’interno del sistema operativo (OS) Unix® che trasferisce i dati da un’applicazione all’altra. A differenza di altri socket, che in genere si collegano ad altri sistemi, il socket di dominio Unix® è un socket di comunicazione tra processi (IPC), il che significa che si connette solo ad altri programmi sul computer dell’utente. Strutturalmente, il socket di dominio è più simile a una named pipe che a un socket, sebbene abbia diverse funzionalità che una pipe non include. L’uso dei socket di dominio è sicuro, perché altre reti non possono spiare il flusso di dati e il socket non ha nemmeno bisogno di una rete per funzionare.

I socket, in ogni sistema operativo, vengono utilizzati per trasmettere byte da un programma a un altro in un flusso bidirezionale, il che significa che mentre i dati stanno uscendo, altri dati stanno entrando. Questo viene normalmente utilizzato come bridge per altri server e computer, ma non nel caso di un socket di dominio Unix®. Questi socket speciali vengono utilizzati per inviare dati dal filesystem Unix® a un altro programma piuttosto che a una rete esterna.

Sebbene il socket del dominio Unix® condivida molte attività e abilità relative al socket, è più simile a una named pipe. Una named pipe è un modo per il computer di trasmettere i dati da una sezione all’altra. Si chiama pipe con nome perché alla pipe viene dato un nome, proprio come ha un nome il socket del dominio Unix®: il filesystem Unix® stesso funziona come nome. La principale differenza tra questi due è che le pipe possono offrire solo sequenze di flussi di byte, in cui i dati vengono letti mentre vengono inviati, mentre i socket di dominio offrono flussi di byte e datagrammi, in cui le informazioni vengono lette come un pacchetto. Il flusso di byte è migliore in termini di sicurezza, mentre il datagramma è migliore per i sistemi che inviano messaggi continui.

I socket di dominio Unix® non sono fatti per integrarsi con reti esterne, ma offrono molte comode funzioni per le reti locali, sia che una persona o più persone utilizzino il computer. Utilizzando il socket del dominio Unix® invece di altri tipi di socket, i programmi possono ottenere l’autenticazione, o il permesso, senza che l’utente debba inserirli manualmente. Il socket del dominio assume anche le regole del sistema Unix®, il che è utile se a utenti diversi vengono dati livelli di accesso diversi, perché queste regole possono essere scritte nel sistema e verranno rispettate.

Più di altri socket e pipe, un socket di dominio Unix® è sicuro. I socket di dominio non consentiranno a una rete non attendibile di ascoltare il flusso di dati e i computer remoti non possono connettersi al flusso senza accesso. Tutte le informazioni di autenticazione e login si trovano nel dominio Unix®, quindi l’utente non dovrà mai inserire una password o un nome utente per accedere al server. Ciò significa che i programmi che ascoltano i tasti premuti non otterranno queste informazioni.