3.5 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.
Rappresentazione degli Indirizzi IPv4
Un host in una rete o sottorete viene identificato univocamente attraverso il suo indirizzo IPv4, il quale possiede tre principali rappresentazioni:
- Binaria
- Dot-decimal Annotation, in cui ogni ottetto assume valori compresi tra 0 e 255
- Esadecimale
L'indirizzo IPv4 è composto da due componenti fondamentali: il prefisso
e il suffisso
. I primi n bit, denominati prefisso, sono fissi e identificano la rete o sottorete, mentre i rimanenti bit, denominati suffisso, sono variabili e permettono di identificare un host specifico all'interno della rete.
Annotazione CIDR
Il CIDR
(Classless Inter-Domain Routing) offre una rappresentazione flessibile per rappresentare la divisione tra i bit di prefisso e quelli di suffisso. Questa notazione si esprime aggiungendo all'indirizzo IPv4 una barra (/
) seguita da un numero N, compreso tra 0 e 32. Tale numero indica quanti dei 32 bit dell'indirizzo sono riservati al prefisso, mentre i restanti bit compongono il suffisso.