Files
learning/networking/016-ipv4.md
2025-05-17 16:24:25 +02:00

2.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

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 IP
  • Source Address: l'indirizzo IP del mittente, lungo 32 bit
  • Destination Address: l'indirizzo IP del destinatario, anch'esso lungo 32 bit
  • Time 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 mittente
  • Protocol: 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.