Cos'è#
Modello concettuale creato da ISO nel 1984 per standardizzare la comunicazione tra sistemi di produttori diversi. Divide la comunicazione di rete in 7 layer con responsabilità precise. Oggi TCP/IP ha vinto nella pratica comprimendo i 7 layer in 4, ma OSI rimane il linguaggio universale per ragionare sui problemi di rete e sicurezza.
OSI vs TCP/IP — la guerra e il compromesso#
OSI (1984 — teorico) TCP/IP (reale — quello che gira)
────────────────────────────────────────────────────────────
7 Application ┐
6 Presentation ├─────────► Application HTTP, HTTPS, FTP,
5 Session ┘ SMTP, DNS, SSH
(cifratura, sessione,
presentazione: tutto qui)
4 Transport ──────────► Transport TCP, UDP
(porte, affidabilità)
3 Network ──────────► Internet IP, ICMP
(indirizzi, routing)
2 Data Link ┐
1 Physical ┴─────────► Network Ethernet, Wi-Fi,
Access cavi, bit fisici
────────────────────────────────────────────────────────────
7 layer teorici 4 layer realiOSI ha perso la guerra pratica, vinto quella concettuale. Tutti usano TCP/IP. Tutti pensano in layer OSI.
I 7 Layer — chi c'è dentro#
SOFTWARE / HARDWARE
───────────────────
┌─────────────────────────────────────────────────────────┐
│ 7 APPLICATION SOFTWARE │
│ Browser, client email, curl, ssh │
│ Protocolli: HTTP, FTP, SMTP, DNS, SSH │
│ "Cosa vuole l'utente?" │
├─────────────────────────────────────────────────────────┤
│ 6 PRESENTATION SOFTWARE │
│ Librerie SSL/TLS, codec │
│ Cifratura, compressione, crypto │
│ "In che formato sono i dati?" │
│ → In TCP/IP vive dentro layer 7 │
├─────────────────────────────────────────────────────────┤
│ 5 SESSION SOFTWARE │
│ OS, librerie di rete │
│ Apre, mantiene, chiude connessioni │
│ "La connessione è ancora viva?" │
│ → In TCP/IP vive dentro layer 7 │
├─────────────────────────────────────────────────────────┤
│ 4 TRANSPORT SOFTWARE (kernel OS) │
│ TCP — affidabile, verifica consegna │
│ UDP — veloce, non verifica │
│ Porta src/dst │
│ "A quale servizio vanno i dati?" │
├─────────────────────────────────────────────────────────┤
│ 3 NETWORK SOFTWARE (kernel OS) + HARDWARE │
│ IP — indirizzo logico │
│ Router — instrada tra reti diverse │
│ ICMP — diagnostica (ping) │
│ "Qual è il percorso verso il dest?" │
├─────────────────────────────────────────────────────────┤
│ 2 DATA LINK SOFTWARE (driver) + HARDWARE │
│ MAC — indirizzo fisico │
│ Switch — instrada nella LAN │
│ Ethernet, Wi-Fi — protocolli frame │
│ "Chi sono fisicamente sulla LAN?" │
├─────────────────────────────────────────────────────────┤
│ 1 PHYSICAL HARDWARE puro │
│ Cavi, connettori, onde radio │
│ Schede di rete, antenne │
│ Bit → segnale elettrico/ottico/radio │
│ "Come viaggio fisicamente?" │
└─────────────────────────────────────────────────────────┘Mnemonico — Come ricordare i layer#
Dal basso verso l'alto (1→7) — come viaggiano i dati dal cavo all'utente:
"Please Do Not Throw Sausage Pizza Away"
1 Physical → Please
2 Data Link → Do
3 Network → Not
4 Transport → Throw
5 Session → Sausage
6 Presentation → Pizza
7 Application → AwayDall'alto verso il basso (7→1) — come scendono i dati dal server al cavo:
"All People Seem To Need Data Processing"
7 Application → All
6 Presentation → People
5 Session → Seem
4 Transport → To
3 Network → Need
2 Data Link → Data
1 Physical → ProcessingPDU — Protocol Data Unit#
Ogni layer chiama la propria unita' di dati con un nome diverso:
| Layer OSI | Nome PDU |
|---|---|
| 7 Application | Messaggio (HTTP request, DNS query) |
| 4 Transport | Segmento (TCP) / Datagramma (UDP) |
| 3 Network | Pacchetto (IP) |
| 2 Data Link | Frame (Ethernet) |
| 1 Physical | Bit |
Quando incapsuli: prendi la PDU del layer sopra come payload e aggiungi il tuo header. Quando decapsuli: togli il tuo header e passi la PDU al layer superiore.
Esempio concreto — DNS request lato client#
Packet Tracer mostra tutti e 7 i layer, ma in TCP/IP reale i layer 5-6-7 sono un unico blocco applicativo. Il browser o il resolver DNS non "sa" di essere a layer 5, 6 o 7 — costruisce il messaggio e lo passa al kernel.
LAYER OSI PDU COSA SUCCEDE NEL PC
7 Application ┐
6 Presentation ├─► Messaggio Il resolver costruisce la DNS query:
5 Session ┘ "Risolvi example.com, tipo A"
In pratica: un unico blocco software
4 Transport ──► Datagramma UDP Aggiunge porta src (es. 54321)
e porta dst (53 — DNS)
3 Network ──► Pacchetto IP Aggiunge IP src (192.168.1.10)
e IP dst (8.8.8.8)
2 Data Link ──► Frame Ethernet Aggiunge MAC src (scheda di rete)
e MAC dst (MAC del gateway)
1 Physical ──► Bit Converte il frame in segnale
elettrico/ottico sul cavoIl MAC dst non e' il MAC di 8.8.8.8 — e' il MAC del router di casa (gateway). Il router prendera' il pacchetto, cambiera' i MAC per il prossimo hop, e inoltrera' verso 8.8.8.8.
Ciclo decapsula → elabora → incapsula per dispositivo#
Ogni dispositivo lungo il percorso sale solo fino al layer che gli serve:
PC (mittente)
Crea tutta la pila da zero: HTTP → TCP → IP → Ethernet
Switch
Sale fino a L2 (legge MAC src/dst)
Decide la porta di uscita
Rincapsula e inoltra — non tocca IP ne' TCP
Router
Sale fino a L3 (legge IP src/dst)
Consulta la routing table
Decrementa TTL, aggiorna MAC src/dst per il prossimo hop
Rincapsula con nuovi header L2
Server DNS/HTTP
Sale fino a L7 (legge la richiesta)
Elabora e costruisce la risposta
Rincapsula tutto da zero con header invertiti (IP/porte src↔dst)Il MAC cambia ad ogni hop (L2 serve solo per il salto fisico corrente). L'IP non cambia mai — e' la destinazione finale.
Encapsulation — come i dati scendono i layer#
SERVER (7→1) CLIENT (1→7)
────────────────────────────────────────────────────
"GET /index.html" "GET /index.html"
│ ▲
▼ │
[HTTP header | DATI] [HTTP header | DATI]
│ ▲
▼ │
[TCP header | HTTP | DATI] [TCP header | HTTP | DATI]
porta src/dst, seq porta src/dst, seq
│ ▲
▼ │
[IP header | TCP | HTTP | DATI] [IP header | TCP | HTTP | DATI]
IP src/dst, TTL IP src/dst, TTL
│ ▲
▼ │
[MAC | IP | TCP | HTTP | DATI | FCS] [MAC | IP | TCP | HTTP | DATI]
MAC src/dst MAC src/dst
│ ▲
▼ │
01010101010101010101 ─────────────────────────┘
bit sul cavo
LEGENDA
────────────────────────────────────────────────────
Layer 7 HTTP header metodo, path, host, cookie, status code
DATI contenuto: HTML, JSON, immagini
Layer 4 TCP header porta src/dst → identifica il servizio
seq/ack → ordine e conferma consegna
flags → [S] SYN [.] ACK [F] FIN [R] RST
Layer 3 IP header IP src/dst → indirizzo mittente e destinatario
TTL → max hop prima dello scarto
Protocol → cosa c'è dentro (6=TCP, 17=UDP)
Layer 2 MAC header MAC src/dst → indirizzo fisico sulla LAN
cambia ad ogni hop
FCS checksum → verifica integrità frame
se corrotto → frame scartato
Layer 1 bit sul cavo 01010101... → segnale elettrico/ottico/radio
nessun header, solo bit grezziOgni layer aggiunge il suo header (encapsulation). Ogni layer rimuove il suo header alla ricezione (decapsulation).
Analogia: IP → il furgone di consegna (sa solo indirizzo) TCP → raccomandata con ricevuta (verifica consegna) UDP → volantino nella buca (manda e non controlla) HTTP/DNS → il contenuto della lettera
Checksum per layer — chi verifica cosa#
Layer 2 → FCS verifica l'intero frame Ethernet
Layer 3 → checksum verifica SOLO header IP (non i dati dentro)
Layer 4 → checksum verifica header TCP + dati
Layer 7 → TLS MAC verifica i dati cifrati (solo HTTPS/TLS)Ogni layer si verifica da solo — indipendente dagli altri. Se il frame Ethernet e' corrotto (cavo rovinato, interferenze):
FCS calcolato ≠ FCS nel pacchetto
↓
Frame scartato silenziosamente da Layer 2
↓
TCP al Layer 4 non riceve l'ACK
↓
TCP ritrasmette il segmentoUDP non ritrasmette. Se il frame viene scartato, il dato e' perso. Per questo UDP si usa dove la velocita' conta piu' dell'affidabilita': video streaming, gaming, VoIP.
MTU — Maximum Transmission Unit#
Maximum Transmission Unit — la dimensione massima in byte che un frame può avere su un determinato link fisico. Non è una proprietà del router. Non è una proprietà del cavo. È una proprietà del protocollo di Layer 2 usato su quel link.
Ethernet ha un MTU di default di 1500 byte — la dimensione massima del payload in un frame Ethernet (escluso il 14-byte header).
Se i dati superano 1500 byte → IP Fragmentation:
Dati originali: 4000 byte
Frammento 1: offset 0 → byte 0-1479 (1480 byte di dati)
Frammento 2: offset 1480 → byte 1480-2959
Frammento 3: offset 2960 → byte 2960-3999
Ogni frammento ha il suo header IP con Fragment Offset diverso.
Il destinatario riassembla i frammenti nell'ordine corretto.Guarda il modello OSI:
Layer 1 → fisico: cavi, segnali elettrici
Layer 2 → data link: Ethernet, MAC, frame
Layer 3 → network: IP, pacchettiMTU è la dimensione massima del frame che il Layer 2 può trasportare. Quindi: Ethernet (Layer 2) dice: "non posso trasportare frame più grandi di 1500 byte".
IP (Layer 3) deve rispettare questo limite — non può mettere un pacchetto più grande di quello che il Layer 2 sotto di lui riesce a trasportare.
La frammentazione IP e' stata storicamente usata per attacchi:
- Teardrop attack: frammenti sovrapposti che crashano il SO
- IDS evasion: payload malevolo spezzato in frammenti che il firewall/IDS non riconosce come attacco Oggi la maggior parte dei firewall riassembla i frammenti prima dell'ispezione — ma rimane un vettore da conoscere.
Implicit Trust — il problema fondamentale#
Ogni layer si fida CIECAMENTE del layer sotto. Zero verifica. Zero controllo.
Layer 3 riceve da Layer 2: "MAC dice 00:AA:BB → ok, mi fido" non sa che il MAC è stato spoofato
Layer 4 riceve da Layer 3: "IP dice 192.168.1.1 → ok, mi fido" non sa che l'IP è stato spoofato
Questa fiducia implicita è la radice di quasi tutti gli attacchi di rete. Internet è stato costruito per la fiducia, non per la sicurezza.
Attacchi e difese per layer#
Layer Attacco Difesa
──────────────────────────────────────────────────────────
1 Wiretapping, Wi-Fi jamming Cavi schermati, WPA3
2 MAC spoofing, ARP poisoning Port security, DAI
3 IP spoofing, routing attack Firewall L3, RPF check
4 SYN flood, port scan Firewall L4, rate limit
7 SQLi, XSS, prompt injection WAF, input validationRegola:
Vuoi attaccare/difendere X?
→ capisci su quale layer vive X
→ agisci su quel layer
→ tutto sopra e sotto non vede nienteDispositivi e il loro layer#
HARDWARE LAYER VEDE FINO A
────────────────────────────────────────
Hub (obsoleto) 1 Solo bit — ripete a tutti
Switch 2 MAC address
Router 3 IP address
Firewall L3/L4 3-4 IP + porta
Proxy / WAF 7 Tutto — HTTP, cookie, payload
IDS/IPS 7 Tutto — analizza il contenutoTCP vs UDP — i due protocolli di Layer 4#
TCP (Transmission Control Protocol)
→ affidabile — verifica che i pacchetti arrivino
→ lento — handshake, acknowledgment, retry
→ usato per: HTTP, SSH, FTP, SMTP
UDP (User Datagram Protocol)
→ veloce — manda e non controlla
→ inaffidabile — pacchetti possono perdersi
→ usato per: DNS, streaming video, VoIP, gaming
TCP = lettera raccomandata con ricevuta di ritorno
UDP = volantino buttato dalla finestraPerché è importante per Blue Team#
Ogni alert, ogni attacco, ogni anomalia vive su un layer preciso. Sapere su quale layer stai guardando ti dice quale tool usare, cosa cercare nei log, e dove intervenire. "Problema a layer 3" e "problema a layer 7" sono scenari completamente diversi con strumenti completamente diversi.
Scenario Reale#
Un analista SOC vede traffico anomalo. Prima domanda: su quale layer? tcpdump mostra pacchetti IP verso IP sconosciuto — layer 3. Wireshark apre il payload — layer 7, vede richieste HTTP verso un dominio C2. Due layer, due tool, due livelli di analisi. Senza OSI come framework mentale, l'analisi sarebbe caotica.
Dove l'ho incontrato#
- network-fundamentals — TryHackMe modulo 2
- icmp-mac-ip — ICMP vive a Layer 3, MAC a Layer 2
- lan-topologies — switch (L2), router (L3)
Collegato a#
- network — categoria
- icmp-mac-ip — MAC (L2), IP (L3), ICMP (L3)
- lan-topologies — switch e router nei loro layer
- nat-concept — NAT opera a Layer 3-4
- proxy — proxy opera a Layer 7
- ssl-tls — cifratura a Layer 6 in OSI, dentro L7 in TCP/IP
- tcp-udp - TCP - udp




