Perché i modelli a strati esistono
La comunicazione in rete è un problema straordinariamente complesso: un messaggio deve trasformarsi da bytes nel tuo browser in segnali elettrici su un cavo, attraversare router in mezzo mondo, e riapparire come HTML nel browser di qualcun altro. Per gestire questa complessità, i progettisti di rete hanno inventato i modelli a strati.
L’idea è semplice: ogni strato si occupa di un solo problema e offre servizi allo strato sopra tramite un’interfaccia ben definita. Questo significa che puoi cambiare la tecnologia di un livello (es. sostituire Ethernet con Wi-Fi) senza toccare gli altri.
Modello di riferimento didattico, nato nel 1984. Più granulare ma raramente implementato nella pratica.
Il modello reale di Internet. Nato negli anni ’70, usato da ogni dispositivo connesso al mondo oggi.
I 4 livelli TCP/IP — dalla prospettiva della sicurezza
Ogni livello è sia un’astrazione utile che una potenziale superficie d’attacco. Conoscere come funziona ogni strato ti permette di capire dove un attacco colpisce e come difendersi.
Messaggio / DatoSegmento (TCP) / Datagramma (UDP)Pacchetto IPFrameLivello 4 — Application
È il livello con cui interagiscono le applicazioni utente. Definisce cosa comunicare e in quale formato. Qui vivono i protocolli che conosci ogni giorno: quando digiti un URL nel browser stai usando HTTP/HTTPS (livello applicazione). Questo è il livello più visibile per l’utente ed è anche dove avvengono molti attacchi:
- SQL Injection — l’attacco sfrutta un’applicazione web mal programmata
- Phishing — email e siti falsi operano a livello applicazione (HTTP, SMTP)
- Cross-Site Scripting (XSS) — iniezione di codice nel browser tramite HTTP
Livello 3 — Transport
Si occupa della comunicazione end-to-end tra processi sugli host. TCP garantisce affidabilità, ordine e controllo di flusso. UDP è veloce e senza garanzie. Le porte logiche (0–65535) permettono a più applicazioni di usare la rete contemporaneamente sullo stesso host.
- SYN flood — attacco DoS che inonda il server di richieste TCP SYN senza completare l’handshake
- Port scanning — scoperta di servizi attivi tramite probe TCP/UDP sulle porte
- Session hijacking — furto di una sessione TCP tramite predizione o intercettazione dei numeri di sequenza
Livello 2 — Internet (Network)
Gestisce l’indirizzamento logico (indirizzi IP) e il routing dei pacchetti attraverso reti diverse. IP è un protocollo best-effort: non garantisce consegna, ordine o protezione dal falsificazione. Questa apertura è la fonte di diversi attacchi storici:
- IP spoofing — falsificare l’indirizzo sorgente IP per nascondere l’identità o ingannare il destinatario
- ICMP flood (Ping flood) — DDoS tramite pacchetti ICMP Echo Request massivi
- Routing attacks (BGP hijacking) — alterazione delle tabelle di routing per dirottare il traffico
Livello 1 — Network Access (Link)
Il livello più basso: si occupa della trasmissione fisica dei bit su un mezzo (cavo, Wi-Fi, fibra). Usa indirizzi MAC per identificare i dispositivi sulla stessa rete locale. Qui non esiste crittografia nativa né autenticazione forte per default:
- ARP spoofing — risponde a richieste ARP con il proprio MAC per intercettare traffico destinato ad altri (MitM)
- MAC flooding — riempie la tabella CAM degli switch per costringerli in modalità broadcast (sniffing)
- Evil Twin (Wi-Fi) — AP malevolo con lo stesso SSID di uno legittimo per intercettare connessioni
L’incapsulamento — come un dato attraversa lo stack
Quando la tua applicazione invia dati, ogni livello aggiunge una propria intestazione (header) che contiene le informazioni necessarie per quel livello. Questo processo si chiama incapsulamento. Il ricevente fa l’operazione inversa: decapsulamento.
Al ricevente il processo è inverso: ogni livello legge e rimuove il proprio header, passando i dati allo strato superiore. La logica è ogni livello parla solo con il suo pari sull’altro host.
Protocolli chiave per livello — tabella di riferimento
| Livello | Protocollo | Porta/Ident | Funzione | Rilevanza sicurezza |
|---|---|---|---|---|
| Application | HTTP | TCP/80 | Trasferimento pagine web — testo in chiaro | Intercettabile, attacchi injection |
| Application | HTTPS | TCP/443 | HTTP cifrato con TLS | Protetto — analizzabile solo ai capi |
| Application | DNS | UDP/53 | Risoluzione nomi → indirizzi IP | DNS poisoning, DNS exfiltration |
| Application | SSH | TCP/22 | Shell remota cifrata | Brute force porte non standard, MFA |
| Application | SMTP | TCP/25 | Invio email | Spoofing mittente, phishing, spam |
| Transport | TCP | — | Connessione affidabile, ordinata | SYN flood, session hijacking |
| Transport | UDP | — | Datagrammi veloci, senza garanzie | UDP amplification DDoS |
| Internet | IPv4/IPv6 | — | Indirizzamento e routing | IP spoofing, ICMP flood |
| Internet | ICMP | — | Messaggi di errore e diagnostica (ping) | Ping flood, Smurf attack |
| Net. Access | ARP | — | Risoluzione IP → MAC in LAN | ARP spoofing → MitM |
| Net. Access | Ethernet | — | Trasmissione frame su LAN cablata | MAC flooding, port security |
Una richiesta web vista dallo stack — esempio completo
Proviamo a seguire cosa accade quando digiti https://profgiagnotti.it nel browser. Questo esempio mostra come tutti i livelli cooperino per fare una cosa apparentemente semplice.
[App] Il browser non conosce l’IP di profgiagnotti.it → invia una query DNS (UDP porta 53) al resolver locale per risolvere il nome
[Internet] La query DNS è impacchettata in un pacchetto IP con IP sorgente = tuo IP, IP destinazione = IP del resolver DNS
[Net.Access] Il pacchetto è incapsulato in un frame Ethernet/Wi-Fi verso il MAC del default gateway (il router)
[App] Il resolver risponde con l’IP del server. Il browser avvia un TCP three-way handshake con il server su porta 443
[Transport] TCP stabilisce la connessione (SYN → SYN-ACK → ACK). Su questa connessione parte il TLS handshake
[App] TLS negozia la cifratura e verifica il certificato del server. Il browser invia la GET / HTTP/1.1 cifrata
[App] Il server risponde con 200 OK + HTML. Il browser decifra, analizza, scarica risorse aggiuntive (CSS, JS, immagini) e renderizza la pagina
Ogni fase di questo flusso è un potenziale punto di attacco. Un attaccante in rete locale può fare ARP spoofing al passo 3 per intercettare il traffico. Se il sito usa HTTP invece di HTTPS, al passo 6 tutto il contenuto sarebbe leggibile in chiaro. Se il DNS non è validato (DNSSEC), al passo 1 potrebbe ricevere un IP falso. Capire il flusso significa capire dove inserire le difese.
ISO/OSI e TCP/IP — confronto e corrispondenza
| ISO/OSI | # | TCP/IP | Protocolli tipici |
|---|---|---|---|
| Application | 7 | Application | HTTP, HTTPS, DNS, SSH, FTP, SMTP |
| Presentation | 6 | TLS/SSL, MIME, ASCII/Unicode | |
| Session | 5 | NetBIOS, RPC, TLS session | |
| Transport | 4 | Transport | TCP, UDP, QUIC |
| Network | 3 | Internet | IPv4, IPv6, ICMP, BGP, OSPF |
| Data Link | 2 | Network Access | Ethernet, Wi-Fi 802.11, ARP |
| Physical | 1 | Cavi, fibra ottica, segnali radio |
Nella pratica si usa TCP/IP; ISO/OSI serve come linguaggio comune per descrivere a quale livello opera un protocollo o un attacco. Quando senti dire “attacco di livello 3” o “sicurezza a livello 2”, ci si riferisce alla numerazione OSI. Il modello a 7 livelli è il vocabolario, TCP/IP è l’implementazione reale.
- Il modello TCP/IP ha 4 livelli: Application, Transport, Internet, Network Access — ognuno con responsabilità precise e PDU distinti (Messaggio, Segmento, Pacchetto, Frame)
- L’incapsulamento aggiunge header a ogni livello; il decapsulamento li rimuove — i livelli comunicano concettualmente “peer-to-peer” con il loro pari sull’host remoto
- Ogni livello è una potenziale superficie d’attacco: ARP spoofing al livello 1/2, IP spoofing al livello 3, SYN flood al livello 4, SQL injection al livello 7
- Una semplice richiesta HTTPS coinvolge DNS, TCP, TLS e HTTP in sequenza — capire questo flusso è fondamentale per capire dove e come difendersi
- ISO/OSI (7 livelli) è il vocabolario universale; TCP/IP (4 livelli) è ciò che Internet usa davvero — conoscere entrambi è essenziale in cybersecurity