Porte, Socket e Indirizzamento al Livello Transport
Dal pacchetto IP al processo giusto: come il numero di porta identifica i servizi, come nasce un socket e perché un server gestisce migliaia di connessioni sulla stessa porta.
netstat e ss per visualizzare porte in ascolto e connessioni attive su un sistema Linux1. Il numero di porta — 16 bit che fanno tutto il lavoro
Una volta che il pacchetto IP raggiunge l'host corretto, chi decide a quale processo consegnarlo? Il numero di porta: un intero a 16 bit (range 0–65535) che identifica in modo univoco un processo o servizio all'interno di un host. È il meccanismo più semplice e più potente del livello Transport.
Il numero di porta è un intero non negativo a 16 bit (0–65535) che, abbinato all'indirizzo IP e al protocollo Transport, identifica univocamente un endpoint di comunicazione. È assegnato dall'IANA nella fascia 0–49151 e dal sistema operativo in modo dinamico nella fascia 49152–65535.
Apri due schede del browser: una su un sito HTTP (porta 80) e una su uno HTTPS (443) verso lo stesso IP. IP uguale, protocollo uguale, ma porte diverse → il kernel consegna i dati a socket diversi. È il demultiplexing Transport.
2. Le tre categorie IANA
L'IANA divide l'intero spazio delle porte in tre fasce con regole di assegnazione diverse. Ricordarle è fondamentale per l'esame e per la configurazione dei firewall.
Well-Known Ports
Assegnate a servizi standard. Richiedono privilegi di root per il binding. Es. 80 HTTP, 443 HTTPS, 22 SSH. Definite da RFC.
Registered Ports
Assegnate su richiesta a applicazioni specifiche (es. 3306 MySQL, 5432 PostgreSQL, 27017 MongoDB). Non servono privilegi root.
Dynamic / Ephemeral
Usate dal SO come porte sorgente effimere per i client. Scelte casualmente, breve durata. Es. browser apre 52341 → server 443.
Per ricordare i range fai: 0-1k = famosi, 1k-49k = registrati (aziende), 49k-65k = effimere (client). All'interrogazione disegna subito la linea 0 | 1023 | 49151 | 65535.
| Fascia | Range | Chi assegna | Privilegi |
|---|---|---|---|
| Well-Known | 0–1023 | IANA standard | root / admin |
| Registered | 1024–49151 | IANA su richiesta | utente normale |
| Dynamic/Ephemeral | 49152–65535 | SO dinamico | nessun binding fisso |
3. Porte notevoli dei protocolli applicativi
Alcune porte vanno sapute a memoria: sono le domande più frequenti nei test e nelle configurazioni firewall.
| Porta | Protocollo | Transport | Uso |
|---|---|---|---|
| 20/21 | FTP | TCP | Trasferimento file (20 data, 21 control) |
| 22 | SSH / SCP / SFTP | TCP | Accesso remoto sicuro |
| 25 | SMTP | TCP | Invio email |
| 53 | DNS | TCP/UDP | Risoluzione nomi |
| 67/68 | DHCP | UDP | Assegnazione IP automatica |
| 80 | HTTP | TCP | Web non cifrato |
| 110 | POP3 | TCP | Ricezione email |
| 143 | IMAP | TCP | Ricezione email evoluto |
| 443 | HTTPS | TCP | Web cifrato TLS |
Confondere 67/68 DHCP con 53 DNS o pensare che DNS usi solo UDP: DNS usa UDP per le query normali ma TCP per risposte >512 byte e zone transfer. All'esame specifica sempre TCP/UDP per DNS.
4. Socket — la 5-tupla che identifica una comunicazione
Il socket è l'endpoint di comunicazione definito dalla 5-tupla {protocollo, IP sorgente, porta sorgente, IP destinazione, porta destinazione}. Per UDP, senza connessione, il socket è identificato solo da (IP_dst, porta_dst).
Per TCP, ogni connessione è unica per la combinazione di questi 5 valori. Per questo un server può gestire migliaia di client contemporaneamente sulla stessa porta 443: cambiano IP sorgente e porta effimera del client, quindi la 5-tupla è diversa.
Connessione = 5-tupla completa
Socket identificato da tutti e 5 i campi. Ogni accept() crea un nuovo socket connesso, il listening resta libero.
Datagrammi sullo stesso socket
Tutti i datagrammi che arrivano su (dst_ip, dst_port) vanno allo stesso socket applicativo. No handshake.
5. Multiplexing lato server, comandi ss/netstat, flusso completo e sicurezza
Vediamo strumenti reali e il percorso completo di una richiesta.
Output tipico di ss -tlnp:
Ogni porta in LISTEN è un potenziale punto d'ingresso. Principio di minimizzazione: chiudi tutto con iptables / nftables e lascia aperto solo ciò che serve. ss -tlnp è il primo check post-installazione su qualsiasi server. Se vedi una porta che non hai aperto tu, indaga.
Il flusso completo: da applicazione a rete
Cosa succede quando il browser apre https://example.com?
Su una VM Linux lancia python3 -m http.server 8080 poi da un altro terminale ss -tlnp | grep 8080. Vedi LISTEN. Da un altro host curl http://<ip-vm>:8080 e poi ss -tunap per vedere la connessione ESTABLISHED con 5-tupla completa.
6. Verifica / Esercizio
🔬 Attività pratica
Analizza un server web locale.
- Quale comando mostra le porte in ascolto? Cosa indicano le colonne Local Address:Port e Process?
- Un server su 0.0.0.0:443 riceve due client: 10.0.0.2:50000 e 10.0.0.3:50000. Quanti socket di connessione esistono? Scrivi le 5-tuple.
- Perché DNS può usare sia UDP che TCP? Quando usa TCP?
- Classifica le porte 22, 3306, 53421 nelle tre categorie IANA e spiega chi le assegna.
- Spiega il rischio di lasciare aperta la porta 22 su Internet e una contromisura con firewall.
1) ss -tulnp (-t TCP, -u UDP, -l listening, -n numerico, -p process). Local = IP:porta locale, Process = daemon che ha fatto bind.
2) 2 socket connessi + 1 listening. T1={TCP,10.0.0.2:50000,server:443}, T2={TCP,10.0.0.3:50000,server:443} → IP sorgenti diversi, quindi 5-tuple diverse.
3) UDP per query veloci <512B; TCP per risposte grandi, AXFR/IXFR e quando truncated. RFC obbligatorio prevedere TCP.
4) 22 well-known (IANA standard, root), 3306 registered (MySQL, richiesta IANA), 53421 dynamic (effimera, SO).
5) 22 = SSH, superficie d'attacco brute-force. Contromisure: limita a IP noti con nftables/iptables, usa fail2ban, cambia porta o usa key-based auth, disabilita root login.
7. Riepilogo e concetti chiave
{protocollo, IP_src, porta_src, IP_dst, porta_dst}: identifica univocamente un endpoint di comunicazione.(dst_ip, dst_port); tutti i datagrammi arrivano allo stesso socket.ss -tulnp è il comando moderno per visualizzare porte in ascolto e connessioni; ogni porta LISTEN è superficie d'attacco da minimizzare.📚 Prossimo passo - TCP: caratteristiche principali e struttura del segmento
Nella prossima lezione entriamo nel cuore del TCP: bit di controllo, numeri di sequenza, finestra e struttura dell'header. Sapere cos'è una porta e un socket è il prerequisito per capire come TCP rende affidabile il flusso.