Lezione 7 di 11

Sistemi e Reti 6

Modulo 6 — Protocolli di Trasporto e Applicazione | Hands on Stem
Modulo 6 di 10

Protocolli di Trasporto e Applicazione

TCP vs UDP, il three-way handshake, le porte well-known e i protocolli che usiamo ogni giorno: HTTP, DNS, DHCP, FTP, SMTP, SSH.

Prof. D. Bertolino Hands on Stem Sistemi e Reti

6.1 Il Livello Trasporto: il “postino affidabile”

Il livello 3 (Rete/IP) si occupa di far arrivare i pacchetti al dispositivo giusto, ma non garantisce nulla: i pacchetti possono perdersi, arrivare duplicati o in ordine sbagliato. Il livello 4 (Trasporto) aggiunge queste garanzie — o sceglie deliberatamente di non aggiungerle, in favore della velocità.

Compiti del livello Trasporto

Multiplexing/Demultiplexing — distingue le diverse applicazioni sullo stesso host tramite i numeri di porta.
Segmentazione — divide i dati in segmenti di dimensione gestibile.
Controllo flusso — regola la velocità di invio per non saturare il ricevente.
Controllo errori — rileva e ritrasmette i segmenti persi o corrotti (solo TCP).

6.2 I Numeri di Porta

Un indirizzo IP identifica il dispositivo; il numero di porta identifica l’applicazione su quel dispositivo. La combinazione IP + porta è chiamata socket (es. 192.168.1.10:443).

RangeNomeChi li usaEsempi
0 – 1023Well-knownServizi standard (assegnati da IANA)HTTP (80), HTTPS (443), DNS (53)
1024 – 49151RegisteredApplicazioni registrate (non riservate)MySQL (3306), RDP (3389)
49152 – 65535Dynamic / EphemeralPorte temporanee assegnate dal SO al clientPorta sorgente di una connessione
Analogia: IP = indirizzo dell’edificio, Porta = numero dell’ufficio

Se l’IP è l’indirizzo del palazzo, la porta è il numero dell’ufficio al suo interno. Il postino (router) consegna al palazzo giusto; la reception (livello trasporto) smista la posta all’ufficio corretto. Porta 80 = ufficio “Web”, Porta 25 = ufficio “Posta”.

Porte Well-Known da memorizzare

PortaProtocolloTrasportoFunzione
20-21FTPTCPTrasferimento file (20=dati, 21=controllo)
22SSHTCPShell remota sicura (crittografata)
23TelnetTCPShell remota non sicura (obsoleto)
25SMTPTCPInvio email (server → server)
53DNSUDP/TCPRisoluzione nomi → IP
67-68DHCPUDPAssegnazione automatica IP
80HTTPTCPWeb non crittografato
110POP3TCPRicezione email (scarica e cancella)
143IMAPTCPRicezione email (sincronizzata)
443HTTPSTCPWeb crittografato (TLS)
3389RDPTCPDesktop remoto (Windows)

6.3 TCP vs UDP — I Due Protocolli di Trasporto

TCP — Transmission Control Protocol
  • Orientato alla connessione (3-way handshake)
  • Affidabile: ACK, ritrasmissione, ordine garantito
  • Controllo di flusso (sliding window)
  • Controllo di congestione
  • Header 20+ byte (più overhead)
  • Più lento ma sicuro

Uso: HTTP, FTP, email, SSH — tutto ciò che non può perdere dati

vs
UDP — User Datagram Protocol
  • Senza connessione (connectionless)
  • Non affidabile: nessun ACK, nessun ordine
  • Nessun controllo di flusso
  • Nessun controllo di congestione
  • Header 8 byte (minimo overhead)
  • Velocissimo, bassa latenza

Uso: DNS, DHCP, VoIP, streaming, gaming — dove la velocità conta più della perfezione

Quando scegliere TCP vs UDP?

TCP quando i dati devono arrivare tutti e in ordine: pagine web, file, email, comandi. Se perdi un pezzo di un file ZIP, è inutilizzabile.
UDP quando la velocità è più importante della completezza: una videochiamata con un frame perso è meglio di una videochiamata in ritardo. Un pacchetto DNS perso si può semplicemente ritrasmettere a livello applicativo.

6.4 TCP in Dettaglio

Il Three-Way Handshake

Prima di inviare dati, TCP stabilisce una connessione con un rituale a 3 passi. È come una telefonata: prima ti assicuri che l’altro sia in linea, poi parli.

Apertura della connessione TCP
CLIENT
SYN → “Posso connettermi?”
SERVER
CLIENT
← SYN-ACK “Sì, anch’io voglio”
SERVER
CLIENT
ACK → “OK, iniziamo!”
SERVER

Dopo il handshake, la connessione è “established” e i dati possono fluire in entrambe le direzioni (full-duplex). La chiusura avviene con un processo a 4 passi (FIN → ACK → FIN → ACK).

Meccanismi di affidabilità TCP

Numeri di Sequenza e ACK

Ogni byte ha un numero di sequenza. Il ricevente invia un ACK con il numero del prossimo byte atteso. Se un ACK non arriva entro un timeout, il mittente ritrasmette il segmento.

Sliding Window

Il ricevente comunica quanti byte può accettare (window size). Il mittente invia al massimo quel numero di byte prima di aspettare un ACK. Questo regola il flusso ed evita di saturare il ricevente.

Header TCP vs UDP

CampoTCPUDP
Porta sorgente✓ (16 bit)✓ (16 bit)
Porta destinazione✓ (16 bit)✓ (16 bit)
Numero di sequenza✓ (32 bit)—
Numero di ACK✓ (32 bit)—
Flag (SYN, ACK, FIN…)✓ (6 bit)—
Window size✓ (16 bit)—
Checksum✓✓
Lunghezza— (calcolata)✓ (16 bit)
Dimensione header20-60 byte8 byte

6.5 Protocolli del Livello Applicazione

I protocolli applicativi sono quelli che usiamo quotidianamente — spesso senza saperlo. Ogni volta che apri un sito, mandi una email o ti connetti al Wi-Fi, uno o più di questi protocolli entrano in azione.

HTTP / HTTPS

HTTP (porta 80)

HyperText Transfer Protocol — il protocollo del Web. Basato su richieste (GET, POST, PUT, DELETE) e risposte con codici di stato (200 OK, 404 Not Found, 500 Server Error). Stateless: ogni richiesta è indipendente.

HTTPS (porta 443)

HTTP + TLS — identico a HTTP ma con un tunnel crittografato TLS (Transport Layer Security). Tutti i dati sono cifrati. Il lucchetto nel browser indica HTTPS. Oggi è lo standard obbligatorio.

Codici di stato HTTP da conoscere

200 OK — 301 Moved Permanently — 304 Not Modified (cache) — 400 Bad Request — 401 Unauthorized — 403 Forbidden — 404 Not Found — 500 Internal Server Error — 503 Service Unavailable

DNS — La “Rubrica” di Internet

Il DNS (Domain Name System, porta 53) traduce i nomi di dominio leggibili (come www.google.com) negli indirizzi IP corrispondenti. Senza DNS dovremmo memorizzare numeri come 142.250.184.46.

L’utente digita www.google.com nel browser
Il PC controlla la cache DNS locale. Se trova la risposta, la usa. Altrimenti…
Il PC interroga il DNS Resolver dell’ISP (o 8.8.8.8 di Google, 1.1.1.1 di Cloudflare)
Il resolver chiede al Root DNS Server (.) → viene indirizzato al server TLD
Il TLD Server (.com) indirizza al DNS autoritativo di Google
Il DNS autoritativo (google.com) risponde con l’IP: 142.250.184.46
Il resolver salva in cache e restituisce l’IP al PC. Il browser si connette.
Tipi di record DNS

A — nome → IPv4 (es. google.com → 142.250.184.46)
AAAA — nome → IPv6
CNAME — alias di un altro nome (es. www.example.com → example.com)
MX — server di posta del dominio
NS — server DNS autoritativi per il dominio
PTR — IP → nome (reverse DNS)

DHCP — Configurazione Automatica

Il DHCP (Dynamic Host Configuration Protocol, porte 67-68 UDP) assegna automaticamente IP, subnet mask, gateway e DNS a ogni dispositivo che si collega alla rete. Senza DHCP, ogni PC andrebbe configurato a mano.

Il processo DORA (Discover-Offer-Request-ACK)
CLIENT
DISCOVER → “C’è un DHCP?” (broadcast)
SERVER
CLIENT
← OFFER “Ti propongo 192.168.1.50”
SERVER
CLIENT
REQUEST → “Accetto quel .50!”
SERVER
CLIENT
← ACK “Confermato. Lease: 8 ore”
SERVER
Cosa fornisce il DHCP?

Non solo l’IP! Il DHCP assegna: indirizzo IP, subnet mask, default gateway, server DNS, e un lease time (durata della “concessione” — dopo quel tempo l’IP va rinnovato o viene riassegnato).

Altri Protocolli Applicativi

FTP — File Transfer Protocol

Porte 20-21, TCP. Trasferimento file tra client e server. Usa due connessioni: porta 21 per i comandi, porta 20 per i dati. Non crittografato: oggi si preferisce SFTP (FTP over SSH, porta 22) o FTPS (FTP over TLS).

SMTP — Simple Mail Transfer Protocol

Porta 25 (o 587 con autenticazione), TCP. Protocollo per l’invio delle email. Funziona in modalità push: il client “spinge” la mail verso il server. Per la ricezione si usano POP3 (110) o IMAP (143).

SSH — Secure Shell

Porta 22, TCP. Accesso remoto sicuro alla riga di comando. Tutto il traffico è crittografato. Sostituisce Telnet (porta 23) che invia tutto in chiaro. Usato per gestire server, router, switch da remoto.

ICMP — Internet Control Message Protocol

Nessuna porta (viaggia dentro IP). Non è un protocollo di trasporto: è usato per diagnostica e segnalazione errori. Comandi ping (Echo Request/Reply) e traceroute (TTL exceeded) usano ICMP.

6.6 Il Percorso di una Email

Inviare una email coinvolge più protocolli in sequenza. È uno degli esempi più completi di collaborazione tra livelli.

Composizione: l’utente scrive la mail nel client (Thunderbird, Gmail, Outlook)
SMTP (porta 587): il client invia la mail al server SMTP del mittente (es. smtp.gmail.com)
DNS (porta 53): il server SMTP interroga il DNS per trovare il record MX del dominio destinatario
SMTP (porta 25): il server del mittente trasferisce la mail al server del destinatario
Archiviazione: il server destinatario salva la mail nella casella dell’utente
IMAP (porta 143) o POP3 (porta 110): il destinatario scarica/sincronizza la mail nel suo client
POP3 vs IMAP

POP3 scarica le email e (di default) le cancella dal server. Ideale per un unico dispositivo.
IMAP mantiene le email sul server e le sincronizza tra più dispositivi. Leggere una mail sul telefono la segna come letta anche sul PC. Oggi IMAP è lo standard.

6.7 Tabella Riepilogativa

ProtocolloPortaTCP/UDPLivello OSIFunzione
HTTP80TCP7Web non crittografato
HTTPS443TCP7Web crittografato (TLS)
FTP20-21TCP7Trasferimento file
SSH22TCP7Shell remota sicura
Telnet23TCP7Shell remota (obsoleto)
SMTP25/587TCP7Invio email
DNS53UDP/TCP7Risoluzione nomi
DHCP67-68UDP7Assegnazione IP automatica
POP3110TCP7Ricezione email (download)
IMAP143TCP7Ricezione email (sync)
RDP3389TCP7Desktop remoto Windows
ICMP——3Diagnostica (ping, traceroute)

🧪 Verifica di Autovalutazione

01 Qual è la differenza fondamentale tra TCP e UDP?
02 Descrivi i 3 passi del three-way handshake TCP.
03 Cos’è un socket? Fai un esempio.
04 Perché il DNS usa UDP anziché TCP?
05 Descrivi il processo DORA del DHCP.
06 Qual è la differenza tra HTTP e HTTPS?
07 Un server web usa la porta 443: quale protocollo e quale livello OSI?
08 Perché SSH ha sostituito Telnet?
09 Qual è la differenza tra POP3 e IMAP?
10 Il comando ping usa TCP o UDP? Spiega.

Soluzioni

Domanda 01 — TCP vs UDP
TCP è orientato alla connessione, affidabile (ACK, ritrasmissione, ordine garantito), con controllo di flusso. UDP è senza connessione, non affidabile, senza garanzie di consegna o ordine, ma molto più veloce (header 8 byte vs 20+). TCP si usa quando i dati devono arrivare tutti; UDP quando la velocità è prioritaria.
Domanda 02 — Three-way handshake
1. SYN: il client invia un segmento con flag SYN attivo (“voglio connettermi”). 2. SYN-ACK: il server risponde con SYN+ACK (“accetto, anch’io voglio”). 3. ACK: il client conferma con ACK (“ok, iniziamo”). Dopo questi 3 passi la connessione è stabilita e i dati possono fluire.
Domanda 03 — Socket
Un socket è la combinazione di un indirizzo IP e un numero di porta, che identifica univocamente un endpoint di comunicazione. Esempio: 192.168.1.10:443 indica il servizio HTTPS sul dispositivo con IP 192.168.1.10. Una connessione TCP è identificata da una coppia di socket (sorgente e destinazione).
Domanda 04 — Perché DNS usa UDP
Le query DNS sono tipicamente molto brevi (domanda + risposta in un singolo pacchetto). Usare TCP richiederebbe il three-way handshake (3 pacchetti extra) prima di ogni query, rallentando enormemente la risoluzione. UDP è più veloce per messaggi brevi. Tuttavia, DNS usa TCP per trasferimenti di zona (AXFR) e risposte molto grandi (oltre 512 byte).
Domanda 05 — Processo DORA
Discover: il client invia un broadcast “c’è un server DHCP?”. Offer: il server risponde con un IP disponibile. Request: il client accetta l’offerta. ACK: il server conferma l’assegnazione con un lease time. Tutti i messaggi usano UDP (porte 67 server, 68 client).
Domanda 06 — HTTP vs HTTPS
HTTPS è HTTP + TLS (Transport Layer Security). I dati sono identici ma in HTTPS tutto il traffico è crittografato: un attaccante che intercetta la comunicazione vede solo dati illeggibili. HTTP (porta 80) trasmette in chiaro; HTTPS (porta 443) è cifrato. Oggi HTTPS è obbligatorio per qualsiasi sito serio.
Domanda 07 — Porta 443
Porta 443 = HTTPS (HTTP over TLS). Opera al livello 7 (Applicazione) del modello OSI, usando TCP al livello 4.
Domanda 08 — SSH vs Telnet
Telnet (porta 23) invia tutto in chiaro, comprese username e password: chiunque intercetti il traffico può leggere tutto. SSH (porta 22) crittografa l’intera sessione, rendendo i dati illeggibili anche se intercettati. SSH è il sostituto sicuro di Telnet ed è lo standard per la gestione remota di server e apparati di rete.
Domanda 09 — POP3 vs IMAP
POP3 (porta 110) scarica le email dal server e (di default) le cancella. Funziona bene con un solo dispositivo. IMAP (porta 143) mantiene le email sul server e le sincronizza tra più dispositivi: leggere o cancellare una mail da un dispositivo si riflette su tutti gli altri. Oggi IMAP è lo standard perché usiamo smartphone + PC + tablet.
Domanda 10 — Ping e TCP/UDP
ping non usa né TCP né UDP. Usa ICMP (Internet Control Message Protocol), che è un protocollo di livello 3 incapsulato direttamente nei pacchetti IP. Ping invia messaggi ICMP “Echo Request” e attende “Echo Reply”. Non ha numeri di porta perché non opera al livello trasporto.
Hands on Stem — Corso di Sistemi e Reti — Prof. D. Bertolino