Socket (reti)
Da Wikipedia, l'enciclopedia libera.
Nei sistemi operativi moderni, un socket è un'astrazione software progettata per poter utilizzare delle API standard e condivise per la trasmissione e la ricezione di dati attraverso una rete. È il punto in cui il codice applicativo di un processo accede al canale di comunicazione per mezzo di una porta. Dal punto di vista di un programmatore, un socket è un particolare oggetto sul quale leggere e scrivere i dati da trasmettere o ricevere.
Ci sono due tipi fondamentali di socket:
- I socket tradizionali su protocollo IP, usati in molti sistemi operativi per le comunicazioni attraverso un protocollo di trasporto (quali TCP o UDP).
- Gli Unix domain socket (detti anche socket locali), usati nei sistemi operativi Posix per le comunicazioni tra processi residenti sullo stesso computer.
Esistono due tipi di socket su IP:
- listen, che rappresentano la possibilità di ricevere nuove connessioni. Un socket di questo tipo è identificato dalla terna protocollo di trasporto, indirizzo IP del computer, numero di porta.
- established, che rappresentano una particolare connessione attiva. Un socket di questo tipo è identificato dalla quintupla protocollo di trasporto, indirizzo IP sorgente, indirizzo IP destinazione, numero di porta sorgente, numero di porta destinazione.
I socket sono stati introdotti nel 1983 in BSD e poi sono stati ripresi da praticamente tutti gli altri sistemi operativi. Per questo motivo solitamente le funzioni di programmazione dei socket vengono chiamate Berkeley socket API.