18.1 Porte e socket

Per i protocolli a livello di trasporto, viene introdotto il concetto di porta. Una porta (port) è un valore numerico specificato su 2 byte (da 0 a 65.535) che identifica un particolare canale utilizzabile per la comunicazione. In questo modo è possibile instaurare simultaneamente più comunicazioni, cosicché due applicazioni possono comunicare l’una con l’altra indipendente dal fatto che sulla rete stiano avvenendo altre comunicazioni: è sufficiente utilizzare porte diverse.

Si viene così a delineare il socket (v. RFC 793) che rappresenta un punto di connessione per una comunicazione, identificato univocamente da un indirizzo IP ed un numero di porta, ovvero da una coppia <indirizzo IP, porta>.

Un’applicazione che vuole comunicare con un’altra utilizzando un protocollo a livello di trasporto, deve creare un socket locale <indirizzo IP locale, porta locale>, comunicando al sistema operativo di voler utilizzare una determinata porta, in modo tale che tutti i pacchetti ad essa destinati le vengano recapitati. L’applicazione invierà i pacchetti ad un determinato socket di destinazione <indirizzo IP di destinazione, porta di destinazione>. I pacchetti verranno ricevuti dall’interfaccia di rete il cui indirizzo IP è quello specificato come destinazione all’interno dei pacchetti stessi ed il sistema ricevente recapiterà i pacchetti ricevuti all’applicazione a cui si riferisce la porta di destinazione.

È bene sottolineare il fatto che i numeri di porta sono relativi soltanto al protocollo considerato: una determinata porta per il protocollo TCP è diversa dallo stesso numero di porta per il protocollo UDP (si tratta effettivamente di porte diverse), anche se in genere viene utilizzato lo stesso numero di porta per un servizio che gestisce entrambi i protocolli.