2.6 KiB
IPv4
IPv4 è uno dei protocolli del network layer e definisce il formato degli indirizzi per la comunicazione tra host. In sostanza, l'IP serve come meccanismo di indirizzamento dei pacchetti, permettendo di identificare univocamente ogni host all'interno di una rete.
Anatomia del pacchetto IPv4
Il datagramma o pacchetto IPv4 è composto da due parti principali:
- L'header, che contiene le informazioni di controllo e indirizzamento
- Il payload, ossia i dati che vengono incapsulati all'interno del pacchetto
L'header ha una dimensione minima di 20 byte e può estendersi fino a 60 byte, includendo diversi campi importanti, quali:
Version
: specifica la versione del protocollo IPSource Address
: l'indirizzo IP del mittente, lungo 32 bitDestination Address
: l'indirizzo IP del destinatario, anch'esso lungo 32 bitTime to Live (TTL)
: campo di 8 bit che rappresenta il tempo di vita del pacchetto. Ad ogni passaggio (hop) tra router, il valore del TTL viene decrementato di uno. Quando il TTL raggiunge zero, il pacchetto viene scartato, evitando così che rimanga indefinitamente nella rete in caso di un errore di instradamento. Nel momento in cui un router scarta il pacchetto, ciò può generare un ICMP error message per informare il mittenteProtocol
: un codice che indica il protocollo utilizzato per la parte dati incapsulata. Alcuni esempi:- ICMP: codice 1
- TCP: codice 6
- UDP: codice 17
- EIGMP: codice 88
- L2TP: codice 115
IPv4 Fragmentation
Il livello di data link ha un limite dimensionale noto come MTU
(Maximum Transmission Unit
), che di norma è fissato a 1500 byte. Questo significa che il payload che deve essere incapsulato nel livello data link non può superare i 1500 byte. È importante notare che il valore della MTU può essere configurato a livello di switch o router.
Quando si devono inviare dati che superano il limite della MTU, entra in gioco il processo di frammentazione. Durante questo processo, i dati vengono suddivisi in pacchetti più piccoli, noti come frammenti, ciascuno dei quali include header IP originario, che contengono informazioni cruciali per l'instradamento e la ricostruzione dei pacchetti.
Ogni frammento è identificato da un campo Identifier
, che consente di raggruppare i frammenti appartenenti allo stesso datagramma originale. Inoltre, il campo Fragment Offset
indica la posizione di ciascun frammento all'interno del datagramma originale, permettendo al destinatario di ricostruire correttamente l'ordine dei dati.
Struttura di un indirizzo IPv4
Serve a identificare univocamente un host in uan rete o sottorete.