Cosa fa#
IPv4 e' il protocollo di Layer 3 responsabile dell'indirizzamento e del routing tra reti diverse. Ogni dispositivo connesso a internet ha un indirizzo IPv4 a 32 bit. L'header IPv4 contiene le informazioni necessarie per instradare il pacchetto dalla sorgente alla destinazione attraverso qualsiasi numero di router.
TL;DR#
MAC → identifica chi sei FISICAMENTE sulla LAN (Layer 2)
cambia ad ogni hop, non esce dalla subnet
IP → identifica dove sei nella RETE (Layer 3)
rimane invariato per tutto il viaggio
ARP → traduce IP in MAC quando sei nella stessa LANMAC vs IP — due livelli distinti#
LAN A (192.168.1.x) Internet LAN B (10.0.0.x)
PC ──────► Router A ─────────────────── Router B ──────► Server
Tra PC e Router A: MAC (stessa LAN) + IP
Su internet: solo IP — i MAC non escono dalla LAN
Tra Router B e Server: MAC (stessa LAN) + IPInternet e' una collezione di milioni di LAN collegate da router. La subnet mask definisce i confini di ogni LAN:
IP: 10.10.1.22
Mask: 255.255.0.0
In binario:
IP: 00001010.00001010.00000001.00010110
Mask: 11111111.11111111.00000000.00000000
─────────────────────────────
Network portion Host portion
(10.10) (1.22)I bit a 1 nella mask = parte di rete (stessa LAN) I bit a 0 nella mask = parte host (dispositivo specifico)
Struttura header IPv4#
┌─────────┬──────────┬─────────────────┬──────────────────────┐
│ Version │ Header │ Type of Service │ Total Length │
│ (4b) │ Length │ (8b) │ (16b) │
├─────────┴──────────┴─────────────────┴──────────────────────┤
│ Identification (16b) │ Flags │ Frag Offset │
├──────────────────┬───────────────────┴───────┴──────────────┤
│ Time to Live │ Protocol (8b) │ Header Checksum │
│ (8b) │ │ (16b) │
├──────────────────┴───────────────────┴──────────────────────┤
│ Source IP Address (32b) │
├──────────────────────────────────────────────────────────────┤
│ Destination IP Address (32b) │
├──────────────────────────────────────────────────────────────┤
│ Options │
├──────────────────────────────────────────────────────────────┤
│ Data │
└──────────────────────────────────────────────────────────────┘Campi principali:
| Campo | Cosa contiene | Note Blue Team |
|---|---|---|
| Version | 4 (IPv4) o 6 (IPv6) | — |
| TTL | Time to Live — hop rimanenti | Decrementato di 1 ad ogni router. A 0 → scartato + ICMP Time Exceeded |
| Protocol | Cosa c'e' dentro | 6=TCP, 17=UDP, 1=ICMP |
| Source IP | IP mittente | Falsificabile → IP spoofing |
| Destination IP | IP destinatario | — |
| Header Checksum | Integrita' header | Verifica SOLO l'header IP, non i dati |
| Flags + Fragment Offset | Frammentazione | Vedi sezione sotto |
TTL — Time to Live#
Il TTL previene i loop di routing: se un pacchetto girasse in loop infinito, consumerebbe tutta la banda → DoS.
Partenza: TTL = 64 (Linux) o 128 (Windows)
decrementato di 1 ad ogni router
hop 1 → TTL = 63
hop 2 → TTL = 62
...
hop 64 → TTL = 0 → router scarta + manda ICMP Time ExceededCome riconosci il sistema operativo dal TTL iniziale:
TTL 64 → Linux/macOS
TTL 128 → Windows
TTL 255 → router/dispositivi di reteSe vedi un TTL di 127 o 63 in una cattura, il pacchetto ha gia' attraversato 1 router. Puoi stimare quanti hop ha fatto: TTL iniziale - TTL attuale = hop attraversati
IP Fragmentation#
Ethernet ha un MTU (Maximum Transmission Unit) di 1500 byte. Se il pacchetto e' piu' grande, viene frammentato:
Dati originali: 4000 byte
MTU Ethernet: 1500 byte (payload massimo)
Frammento 1: Fragment Offset = 0 → byte 0-1479
Frammento 2: Fragment Offset = 1480 → byte 1480-2959
Frammento 3: Fragment Offset = 2960 → byte 2960-3999Come appare in Wireshark:
Packet 1: Fragment Offset: 0, More Fragments: 1
Packet 2: Fragment Offset: 1480, More Fragments: 1
Packet 3: Fragment Offset: 2960, More Fragments: 0 ← ultimoIl destinatario riassembla i frammenti usando Fragment Offset per rimettere i dati nell'ordine corretto.
La frammentazione IP e' stata usata per attacchi classici:
- Teardrop attack: frammenti con offset sovrapposti che crashano il sistema operativo durante il riassemblaggio
- IDS/firewall evasion: payload malevolo spezzato in frammenti che l'IDS non riconosce come attacco perche' li vede separati
I firewall moderni riassemblano i frammenti PRIMA dell'ispezione per difendersi da questi attacchi.
IPv4 vs IPv6#
IPv4: 32 bit → ~4 miliardi di indirizzi → esauriti
IPv6: 128 bit → 340 undecilioni di indirizzi
IPv4: 192.168.1.1
IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334IPv4 e' ancora il protocollo dominante su internet. IPv6 e' in adozione progressiva ma non ha ancora sostituito IPv4.
Scenario Reale Blue Team#
Un analista SOC vede traffico con frammenti IP anomali: molti frammenti con Fragment Offset che si sovrappongono verso lo stesso host interno. Possibile Teardrop attack o tentativo di evasione IDS.
# Filtra frammenti IP in tcpdump
sudo tcpdump -i eth0 'ip[6] & 0x20 != 0'
# ip[6] & 0x20 = bit "More Fragments" nell'header IP
# In Wireshark
ip.frag_offset > 0 # mostra tutti i frammenti non-primo
ip.flags.mf == 1 # mostra frammenti con "More Fragments" attivoIn una rete normale la frammentazione e' rara — la maggior parte dei sistemi usa Path MTU Discovery per evitarla. Vedere molti frammenti IP e' gia' di per se' un segnale da investigare.
Collegato a#
- network — categoria
- osi-model — Layer 3 nel contesto OSI
- routing-hop-ttl — TTL e routing approfonditi
- icmp-mac-ip — IP vs MAC, ICMP Time Exceeded
- arp — traduce IP in MAC nella LAN
- tcp-udp — protocolli Layer 4 trasportati da IP




