Che cos’è una presa Internet?

Un socket Internet è un termine utilizzato per identificare un punto di connessione che qualsiasi programma software per computer può utilizzare per trasmettere dati su Internet. Non sono un costrutto fisico, come una presa elettrica a muro, ma sono invece un concetto di software per computer. Con un tale socket, tutti i dati necessari possono viaggiare avanti e indietro da un programma in esecuzione su un computer a un programma in esecuzione su un altro; in molti casi, questo è da e verso un client e un server. Il termine viene anche utilizzato per fare riferimento a un’interfaccia di programmazione di applicazioni (API) che i programmatori di computer possono utilizzare per creare tali applicazioni sensibili alla rete in grado di inviare e ricevere dati su Internet.

I socket funzionano ai livelli superiori dello stack del protocollo Internet (IP), noto come livello di trasporto, in cui i dati vengono passati da un’applicazione alla rete tramite il sistema operativo. Quando un’applicazione sul computer desidera inviare e ricevere dati da una connessione di rete, chiede al sistema operativo di aprire un socket Internet. Il socket è costituito dalle informazioni del protocollo, come il protocollo datagramma utente (UDP) o il protocollo di controllo della trasmissione (TCP), nonché gli indirizzi di invio e ricezione di entrambi i computer e il numero di porta IP per la connessione. È anche possibile creare un socket Internet che ignori il sistema operativo e invii i pacchetti non elaborati senza prima lasciare che il sistema operativo del computer si occupi delle informazioni aggiuntive sul socket.

Come comunemente usato su un server Internet, il software del server si avvia e apre un socket di ascolto. Quando il server riceve una richiesta di dati, crea quindi un socket univoco per il client richiedente, che utilizza quindi per trasmettere i dati richiesti. Questi tipi di connessione vengono anche definiti sessione, poiché il socket viene chiuso dal server una volta terminato il client. In questo modo, il server può creare un numero qualsiasi di socket simultanei con altri client, ciascuno con il proprio identificatore univoco, e fornire dati univoci a ciascun client.

Pertanto, ci sono tre tipi generali di presa Internet. Uno di questi tipi è il socket datagram. Si tratta di una connessione socket veloce che non richiede comunicazioni aggiuntive per stabilire una connessione dedicata prima di inviare pacchetti di dati. Per questo motivo, vengono spesso definiti socket senza connessione e utilizzano UDP come protocollo di trasporto. Sono una sorta di metodo “fire and forget”, in quanto non esiste alcun controllo della sequenza dei pacchetti o correzione degli errori.

I socket orientati alla connessione, tuttavia, chiamati stream socket, seguono alcuni passaggi aggiuntivi per stabilire il collegamento di comunicazione tra client e server. Questi utilizzano TCP, o un altro protocollo noto come protocollo di trasmissione del controllo del flusso (SCTP), per il trasporto. Questo tipo di socket Internet è più affidabile e ha i mezzi per gestire errori come pacchetti mancanti.

Un altro tipo unico di socket Internet viene utilizzato principalmente per il routing della rete di computer. Questo tipo di socket salta il livello di trasporto dello stack IP, passando invece il pacchetto dalla rete direttamente all’applicazione con le informazioni sul socket ancora intatte. Tali socket grezzi consentono una consegna molto più rapida dei pacchetti all’applicazione, dal momento che il sistema operativo del computer non riesce a farsi strada per primo con i pacchetti. Il protocollo dei messaggi di controllo Internet (ICMP) utilizza tali socket non elaborati quando un computer vuole semplicemente eseguire il “ping” di un altro.