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.
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.
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.
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, un server ftp, un server mail e così via).
Un esempio di socket
Volendo fare un esempio si supponga che un client contatti un server remoto per visualizzare una data 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’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.