Le porte, e la quadrupla
Un computer solo fa parlare cento programmi insieme, e un server solo tiene aperte migliaia di conversazioni sulla stessa porta 443. Il trucco non è la porta: è la quadrupla. Qui apri schede e la guardi nascere — con la porta sorgente che non scegli tu, e che alla chiusura torna nel mazzo.
1 · Apri qualche conversazione
| IP sorgente | Porta sorgente | IP destinazione | Porta dest. | Stato |
|---|
Nessuna connessione aperta. È la «foto del prima»: chiudi il browser e su una macchina vera vedresti più o meno questo.
2 · Dove cade un numero di porta
3 · Bussa a una porta del server
Scegli una porta e guarda come risponde: la differenza fra le tre non è cosa dice, è quanto ci mette.
Come funziona
Il problema che le porte risolvono
L'indirizzo IP arriva fino al computer, e lì si ferma. Ma sul tuo computer, in questo momento, ci sono un browser con dodici schede, un client di posta, un aggiornamento in corso. Arriva un pacchetto: a chi lo consegna il sistema operativo? La porta è la risposta: un numero di 16 bit che fa da numero di interno dentro il palazzo.
La matematica: quante ne esistono
porte possibili = 2¹⁶ = 65.536 (da 0 a 65.535)
E sono divise in tre fasce dall'autorità che le governa, la IANA:
| Fascia | Intervallo | Quante | A cosa servono |
|---|---|---|---|
| Well-known | 0 – 1023 | 1.024 | servizi standard; su Unix solo l'amministratore può aprirle |
| Registrate | 1024 – 49151 | 48.128 | assegnate su richiesta a software specifici |
| Dinamiche o effimere | 49152 – 65535 | 16.384 = 2¹⁴ | sorteggiate al volo come porta sorgente dai client |
Nella pratica ogni sistema usa un intervallo suo per le effimere: Linux di norma 32768 – 60999. È il motivo per cui su macchine diverse i numeri sorteggiati cadono in fasce diverse.
La quadrupla: cos'è davvero una connessione
Qui sta il concetto centrale. Una connessione TCP non è identificata dalla porta, ma da quattro numeri insieme:
( IP sorgente , porta sorgente , IP destinazione , porta destinazione )
Apri due schede sullo stesso sito e ottieni due righe che differiscono per un solo elemento — la porta sorgente. Tanto basta: sono due conversazioni distinte, e le risposte non si mescoleranno mai. È questa la ragione profonda per cui la porta sorgente viene sorteggiata: non serve a te, serve a rendere unica la quadrupla.
Il mito dei «65.535 utenti al massimo»
Domanda che sembra un paradosso: come fa un server ad avere migliaia di utenti se ha una sola porta 443? Perché la porta 443 è solo uno dei quattro elementi. Le connessioni distinte che possono finire su quella singola porta sono:
2³² (IP client) × 2¹⁶ (porte client) = 2⁴⁸ ≈ 281.000 miliardi
Il limite vero di un server non è il numero di porte: è la memoria e la CPU per tenere lo stato di ogni connessione. Il tetto dei 65.535 riguarda un singolo client verso un singolo server, non il server.
TCP e UDP hanno due elenchi separati
La porta 53/TCP e la porta 53/UDP non sono la stessa porta: sono due spazi di numerazione indipendenti, perché il campo «porta» vive dentro l'intestazione TCP oppure dentro quella UDP, e a distinguerli è il campo Protocol del livello Rete (6 o 17). Un server DNS fa esattamente così: UDP per le domande normali, TCP per le risposte troppo grandi. Le «porte» di una macchina, quindi, non sono 65.536 ma 131.072.
Aperta, chiusa, filtrata
Tre stati che si distinguono per come risponde la macchina, non per cosa dice:
| Stato | Cosa succede | Cosa vede chi bussa |
|---|---|---|
| Aperta | un programma è in ascolto | SYN-ACK |
| Chiusa | nessun programma in ascolto | RST |
| Filtrata | un firewall scarta il pacchetto | nessuna risposta, fino al timeout |
La differenza fra chiusa e filtrata è tutta di sicurezza: una porta chiusa risponde «no», e così facendo conferma che la macchina esiste; una porta filtrata non conferma niente. È per questo che i firewall preferiscono il silenzio al rifiuto.
Le porte da conoscere
| Porta | Protocollo | Servizio |
|---|---|---|
| 20 / 21 | TCP | FTP (dati / controllo) |
| 22 | TCP | SSH — accesso remoto cifrato |
| 25 | TCP | SMTP — invio della posta fra server |
| 53 | UDP e TCP | DNS |
| 67 / 68 | UDP | DHCP server / client |
| 80 | TCP | HTTP |
| 110 / 143 | TCP | POP3 / IMAP — lettura della posta |
| 179 | TCP | BGP |
| 443 | TCP e UDP | HTTPS; su UDP è QUIC / HTTP3 |
| 587 / 993 | TCP | invio posta autenticato / IMAP su TLS |
| 3306 / 5432 | TCP | MySQL / PostgreSQL |
| 3389 | TCP | Desktop remoto Windows |
Provalo sul serio, in cinque minuti
Quello che vedi qui sopra si misura sulla tua macchina. Chiudi il browser, apri PowerShell e fotografa la situazione di partenza:
Get-NetTCPConnection -State Established | Format-Table LocalPort, RemoteAddress, RemotePort
Poi apri il browser su un sito e rilancia il comando: è comparsa una riga con RemotePort 443 e una LocalPort alta che non hai scelto tu. Apri una seconda scheda sullo stesso sito: seconda riga, stessa destinazione, altra porta locale. Chiudi tutto: spariscono, magari passando un attimo per TimeWait. Su Linux il comando è ss -tan, su Windows va bene anche netstat -ano.
La porta è anche la chiave che permette a tutta la casa di condividere un indirizzo solo: si vede in Il NAT. E le porte in viaggio dentro le buste si guardano in Viaggio nel TCP/IP.
Ripetizioni e tutoring con un docente di ruolo
Matematica, fisica e informatica. Un metodo, non solo esercizi: si parte da come funziona.