Le porte del protocollo TCP/IP

20 marzo 2006

Le porte sono il mezzo essenziale che permette ai protocolli TCP e UDP di gestire flussi multipli di dati attraverso una unica connessione fisica alla rete.

Per fare un paragone con la vita reale immaginiamo di spedire una lettera ad un amico. Se il destinatario vivesse in una abitazione indipendente e ne fosse l’unico inquilino, sulla busta sarebbe sufficiente indicare il suo indirizzo. Questa situazione è però piuttosto inusuale in quanto, più probabilmente, egli vivrà in un palazzo con altri condomini oppure condividerà l’abitazione con altri parenti. Ognuno di questi può ricevere posta al medesimo indirizzo e quindi per individuare univocamente il destinatario sarà necessario specificare anche il suo nome completo. Allo stesso modo indicheremo sulla busta le informazioni riguardanti il mittente per poter ricevere una risposta.

Una cosa analoga avviene per le comunicazioni in rete attraverso il protocollo TCP/IP. Ogni macchina sarà individuata sulla rete da un indirizzo IP ma poiché molteplici possono essere i servizi offerti dal sistema e molte le connessioni contemporanee è necessario un metodo per separare i singoli flussi di dati ed indirizzarli verso il corretto programma di gestione. A chi non è capitato per esempio di navigare e contemporaneamente di scaricare la posta elettronica o usare un programma peer to peer? Come fa il sistema a riconoscere a chi sono diretti i dati in arrivo?
Il problema viene risolto attraverso le porte che, in un paragone con l’esempio precedente, fanno le veci del nome del mittente e del destinatario. Flussi di dati distinti all’interno della stessa macchina sono caratterizzati da porte diverse.
Una connessione tra due computer viene quindi univocamente identificata dalla coppia IP:porta del mittente e del destinatario.

Modello Client-Server

Le porte sono indicate con un numero intero compreso tra 0 e 65.535 e possono essere assegnate al protocollo TCP o al protocollo UDP. Questo fa si che possano esistere in totale 131.072 porte diverse. In linea di principio i numeri di porta potrebbero essere scelti arbitrariamente durante la connessione tra due computer ma, come vedremo dall’analisi che segue, la cosa si rivela decisamente poco pratica.

Ogni comunicazione sulla rete presume che inizialmente una delle due macchine coinvolte nello scambio di dati non faccia altro che attendere un contatto dall’esterno. Questa macchina viene indicata con il nome di server. Un sistema che contatta il server viene invece definito client. Sarà sempre il client quindi a fare il primo passo per instaurare una connessione.

Come detto in precedenza, se un computer collegato ad un rete desidera comunicare con un altro sistema deve necessariamente sapere l’indirizzo completo della macchina remota. In questo caso quindi il client deve essere a conoscenza sia dell’ l’IP sia della porta su cui il server si aspetta di ricevere i dati relativi al servizio di interesse. Se il server scegliesse la porta in modo casuale nessuno saprebbe come raggiungerlo.
Per questo motivo nasce l’esigenza di standardizzare e rendere pubblici i numeri di porta relativi ai più comuni servizi disponibili su internet. In questo modo un client che volesse accedere ad un qualsiasi server HTTP saprebbe a priori di doversi collegare alla porta TCP numero 80. Un server di posta SMTP sarà sempre raggiungibile sulla sua porta TCP 25 così come un server FTP userà la TCP 21 e un DNS la porta UDP 53.

Contrariamente al caso precedente il client non ha mai l’esigenza di rendere pubblico il suo indirizzo completo prima della connessione perché questo verrà automaticamente comunicato al server nel momento in cui verrà contattato. In questo caso quindi il numero di porta del client può essere scelto arbitrariamente dal sistema tra quelli al momento disponibili.

Se vuoi aggiornamenti su Le porte del protocollo TCP/IP inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Le porte del protocollo TCP/IP

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy