Che cos'è un socket Internet?
Una presa Internet è un termine usato 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 invece sono un concetto di software per computer. Con tale socket, tutti i dati necessari possono spostarsi 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 è anche usato per riferirsi a un'interfaccia di programmazione di applicazioni (API) che i programmatori di computer possono usare per creare tali applicazioni in grado di inviare e ricevere dati via 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 una presa Internet. Il socket è configurato 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 consentire al sistema operativo del computer di gestire le informazioni aggiuntive sul socket.
Come utilizzato comunemente 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 connessioni vengono anche definiti sessioni, poiché il socket viene chiuso dal server al termine del client. In questo modo, il server può creare un numero qualsiasi di socket simultanei con altri client, ognuno con il proprio identificativo univoco, e fornire dati univoci per ciascun client.
Pertanto, esistono tre tipi generali di prese Internet. Uno di questi tipi è il socket del datagramma. Si tratta di una connessione socket veloce che non richiede alcuna comunicazione aggiuntiva 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 specie di metodo "ignora e dimentica", in quanto non esiste un controllo della sequenza dei pacchetti o una correzione degli errori.
I socket orientati alla connessione, tuttavia, chiamati socket stream, eseguono alcuni passaggi aggiuntivi per stabilire il collegamento di comunicazione tra client e server. Questi usano TCP, o un altro protocollo noto come protocollo SCTP (Stream Control Transmission Protocol), per il trasporto. Questo tipo di presa Internet è più affidabile e ha mezzi per gestire errori come pacchetti mancanti.
Un altro tipo unico di presa Internet viene utilizzato principalmente per il routing della rete di computer. Questo tipo di socket salta il livello di trasporto dello stack IP, invece passa 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 prima con i pacchetti. Il protocollo ICMP (Internet control message protocol) utilizza tali socket non elaborati quando un computer vuole semplicemente "pingare" un altro.