Da un punto di vista lessicale, la parola socket è di natura anglosassone e può essere tradotta in italiano come “presa”. Volendo semplificare al massimo, possiamo dire che attraverso un socket “qualcosa si connette a qualcos’altro” al fine di trasmettere e/o ricevere dati, siano essi componenti fisici o logici. I socket sono fondamentali nel mondo delle comunicazioni informatiche, poiché permettono la connessione tra computer e dispositivi, creando la base per applicazioni e servizi di rete.
Cos’è un socket?
Con il termine socket, in informatica, si fa riferimento a diversi concetti a seconda che ci si riferisca al mondo dell’hardware o del software:
- hardware: il socket è l’alloggiamento, presente sulla scheda madre, in cui viene posizionato il processore e che contiene i contatti elettrici per gestire lo scambio di dati tra quest’ultimo e la scheda madre;
- software: un socket è un oggetto software che consente lo scambio di dati tra host remoti (tramite una rete) o tra processi locali.
Socket e Reti
In questa sede approfondiremo il secondo concetto di socket in riferimento alle reti, ed in particolare, ad Internet. I socket svolgono un ruolo cruciale nelle comunicazioni, permettendo ai dispositivi di interagire tra loro in tempo reale e di condividere informazioni in modo efficace.
Definizione di socket
Col termine “socket” si identifica il punto terminale di una connessione a doppio senso tra due programmi (server-client) che si scambiano dati attraverso una rete come, ad esempio, una LAN o Internet. Questa definizione è fondamentale per comprendere come avviene la comunicazione tra dispositivi diversi.
In quest’ambito, il socket è definibile in questo modo:
socket = indirizzo IP + porta
Attraverso l’indirizzo IP, un terminale riesce a contattare un altro terminale e, attraverso l’indicazione della porta, riesce a “selezionare” il servizio di suo interesse (su quel terminale, infatti, possono “girare” diversi servizi come, ad esempio, server web, server FTP, server mail e così via). Questa configurazione permette ai dispositivi di funzionare in modo coerente e di ottimizzare la comunicazione.
Un esempio di socket
Volendo fare un esempio, supponiamo che un client contatti un server remoto per visualizzare una specifica pagina web. Per stabilire la connessione, il client dovrà risolvere l’hostname in un indirizzo IP (si veda, a tal proposito, questo articolo sui DNS) e dovrà stabilire con quest’ultimo una connessione su una ben specifica porta (che nel caso di HTTP è la 80 e di HTTPS la 443). Per stabilire questa connessione, quindi, il client dovrà utilizzare un socket composto, appunto, dall’indirizzo IP e dalla porta. Ad esempio:
123.123.123.123:80
Concludendo, possiamo dire che:
- nella logica client-server tipica delle Reti e di Internet, il socket è dato dall’indirizzo IP e dalla porta;
- l’indirizzo IP consente di identificare uno specifico nodo della Rete;
- la porta consente di selezionare uno specifico processo all’interno del nodo.
Attraverso il socket, client e server sono in grado di “parlarsi” e di scambiare dati a due vie, ricevendo e trasmettendo dati entrambi. Questo processo di comunicazione bidirezionale è ciò che rende possibile l’interazione tra applicazioni e servizi online, creando un’esperienza utente fluida e continua.

