...
🧠 Il blog è dedicato al tema vpn e sicurezza, privacy dei dati su Internet. Parliamo di tendenze attuali e notizie relative alla protezione.

Frammentazione IP: completamente spiegata

217

Ogni rete basata su pacchetti IP ha una dimensione MTU (Maximum Transmission Unit). La MTU, come suggerisce il termine, è la dimensione massima del pacchetto che può essere trasmesso sulla rete.

I pacchetti IP più grandi della dimensione MTU richiedono di essere suddivisi in frammenti o pacchetti più piccoli in modo che possano essere trasferiti attraverso la rete.

Ancora confuso? Non preoccuparti. 

In questa guida, spiegheremo tutto sulla frammentazione IP: cos'è, cosa fa, come viene utilizzata e i suoi svantaggi, in parole povere per la comprensione. Risponderemo ulteriormente ad alcune domande specifiche degli utenti relative all'argomento. Quindi, senza ulteriori indugi, iniziamo!

Che cos'è la frammentazione IP?

Ogni rete locale supporta una dimensione massima del pacchetto IP. Pertanto, quando un host utilizza la rete per trasmettere un pacchetto IP, non dovrebbe essere maggiore della dimensione dell'unità di trasmissione massima (MTU). Altrimenti, è diviso in piccoli pezzi, un processo chiamato frammentazione IP.

Questa dimensione è solitamente determinata dalle MTU e dal collegamento dati della rete che spesso è lo stesso. Una rete di lavoro, data center o campus contemporanea offerta tramite Ethernet ha MTU del valore di 1500 byte.

Tuttavia, i pacchetti IP prima trasferiti su una rete che supporta un singolo MCU potrebbero richiedere il routing attraverso tunnel VPN, WAN o attraverso altre reti con unità di trasmissione massima più piccole. Nel caso in cui la dimensione del pacchetto superi la MTU più piccola, i dati in questo pacchetto dovrebbero essere frammentati.

I dati verrebbero suddivisi in più parti e trasportati in nuovi frammenti (pacchetti) di dimensioni inferiori o uguali rispetto all'MCU inferiore. Questi dati frammentati verranno quindi riassemblati una volta raggiunta la destinazione.


IPv4

I campi di intestazione IPv4 utilizzati

La frammentazione e il processo di rimontaggio hanno vari campi di intestazione IP coinvolti che sono impostati in pezzi/frammenti.

(Crediti immagine: packetpushers.net)

L'operazione di frammentazione si basa su tre campi di intestazione IP (per un totale di 32 bit). Tutti questi frammenti avranno valori significativamente diversi rispetto al pacchetto IP originale:

Il campo Identificazione (16 bit) contiene un numero ID univoco che è una combinazione di indirizzi IP di origine e di destinazione. Il campo Protocollo, avente il valore del pacchetto originario, permette alla destinazione di differenziare tra i vari frammenti di pacchetto provenienti dalla stessa sorgente.

Ciò significa semplicemente che lo stesso ID può essere utilizzato anche quando l'origine, il protocollo e la destinazione dei pacchetti frammentati non sono gli stessi.

Esattamente come il pacchetto IP originale, il primo bit riservato del  campo Flags (totale 3 bit) e il secondo, il bit Don't Fragment (DF)  non sarà impostato (0).

Tuttavia, il frammento finale avrà il terzo bit del campo, cioè More Fragments (MF) impostato su 1. Tutti i bit in questo campo dell'ultimo pacchetto IP saranno impostati a 0, esattamente come il pacchetto IP originale (a meno che non sia un frammento).

Se nel pacchetto originale è impostato il flag Non frammentare, ciò impedirebbe la frammentazione e comporterebbe l'eliminazione dei pacchetti. Gli errori devono essere inviati al mittente in questo caso, come l' errore ICMP di tipo 3: "Destinazione irraggiungibile", codice 4: "Frammentazione richiesta e set DF".

Il campo Fragment Offset  (totale 13 bit) viene utilizzato per indicare la posizione iniziale dei dati nel frammento, in relazione ai dati di partenza del pacchetto IP originale. Questo viene quindi utilizzato per riassemblare i dati da tutti i frammenti (arrivati ​​o meno).

L'offset nel primo frammento è 0 poiché i dati in questo pacchetto frammentato e quello originale iniziano nello stesso punto. Nei frammenti seguenti, il valore è l'offset dei dati frammentati dall'inizio dei dati nel frammento iniziale (offset 0), in blocchi di 8 byte (noti anche come octaword).

Se un pacchetto IP contenente dati del valore di 800 byte viene suddiviso in due frammenti/frammenti uguali, ciascuno contenente 400 byte, l'offset del frammento del primo frammento è 0, mentre l'altro è 50 (400/8).

Il valore di offset deve essere il numero di blocchi di dati da 8 byte. Ciò significa che il frammento precedente deve essere un multiplo di 8 byte. Il frammento finale può trasportare dati che non sono multipli di 8 byte poiché non ci saranno più frammenti.


IPv6

Anche se la maggior parte dei campi di intestazione rimangono gli stessi, la frammentazione IP in IPv6 funziona in modo leggermente diverso rispetto a IPv4. In IPv6, i dati possono essere frammentati solo sull'host di origine. Ciò significa che la frammentazione non può essere eseguita su altre reti, ad eccezione della sorgente.

Non è disponibile alcun flag Non frammentare, quindi tutto ciò che devi fare è non creare frammenti.

La frammentazione IP non può essere eseguita se PMTUD non viene utilizzato. I nodi non possono utilizzare un MTU superiore a 1280 byte, che è il minimo di IPv6 se non implementano Path MTU Discovery (PMUTD).

Sebbene Path MTU Discovery funzioni allo stesso modo di IPv4, il messaggio di errore ICMP è diverso:

(Crediti immagine: packetpushers.net)

Se il pacchetto IP è di dimensioni maggiori rispetto all'MCU, il router IPv6 deve scartarlo e inviare un errore ICMPv6 di tipo 2 "Packet Too Big" – codice 0 al mittente.

Tieni presente che fare affidamento su un canale posteriore e sulla trasmissione ICMP all'host di origine presenta numerosi difetti, uno dei quali importante è che i messaggi ICMP sono spesso bloccati in varie istanze di una rete a causa dei vantaggi in termini di sicurezza.

In questo modo, l'host di origine non riceverà i messaggi Packet Too Big e ritrasmetterà i pacchetti IP che sono stati scartati più volte, che sicuramente non raggiungeranno. Alla fine, la connessione sarebbe considerata instabile e chiusa. Anche se ne venisse stabilito uno nuovo, il problema si ripeterebbe.

I campi di intestazione relativi alla frammentazione vengono inseriti in un'intestazione di estensione denominata Fragment Header. Viene specificato con un campo Intestazione successiva (valore 44) in un IPv6 standard o in qualsiasi intestazione di estensione precedente.

Proprio come tutte le intestazioni di estensione, questa è lunga 8 byte/64 bit, insieme a un'intestazione standard, risultando in una frammentazione IPv6 con un sovraccarico maggiore di IPv4.

I campi di intestazione IPv6 utilizzati

Controlla i campi nell'intestazione dell'estensione del frammento IPv6:

(Crediti immagine: packetpushers.net)

Il campo denominato Next Header (8 bit) specifica il tipo di intestazione, ad esempio un'intestazione di protocollo di livello superiore o un'intestazione di estensione IPv6. Gli 8 bit successivi vengono quindi riservati.

Il campo a 13 bit Fragment Offset viene utilizzato in modo simile a IPv4. Dopodiché, i 2 bit successivi sono riservati.

Il flag del campo M verrà impostato su 1 e il frammento finale verrà impostato come il campo More Fragments (MF)  di IPv4 .

Il campo Identificazione a 32 bit è lo stesso del campo IPv4 a 16 bit contenente un numero ID univoco per la combinazione di indirizzi di origine e indirizzi di destinazione. Il campo Protocollo non è disponibile in IPv6.


Gli svantaggi della frammentazione IP

Si ritiene che lo stack del protocollo IP abbia un meccanismo inaffidabile a causa del quale gli host finali non sono in grado di calcolare la dimensione massima del carico utile durante la comunicazione tramite un host IPv4 e IPv6.

Anche se l'assenza di un meccanismo MTU attraverso la rete è comprensibile poiché i pacchetti IP prendono percorsi diversi, la mancanza di informazioni end-to-end può comportare che i router intermedi ricevano pacchetti di grandi dimensioni e non siano in grado di inoltrarli.

I router IPv4 possono dividere i pacchetti IP in frammenti durante il transito, ma la stessa funzione non è disponibile nei router IPv6, dove il mittente deve eseguire la frammentazione.

La frammentazione provoca un picco nell'overhead del layer-3. Quindi, ad esempio, se l'host finale ritiene di poter utilizzare pacchetti IP di 1500 byte, ma affronta un salto nel suo percorso di dimensione MTU 1472, il pacchetto IP verrebbe diviso in due pacchetti, risultando in un'intestazione IPv6 aggiunta di 40 byte e intestazione IPv4 di 20 byte.

I frammenti IP rappresentano un onere aggiuntivo per il sistema ricevente poiché è necessario riassemblare i frammenti per consegnarli a livelli di protocollo superiori. Questa attività si aggrava quando il router termina il traffico IP.

Se un router tenta di assemblare i pacchetti frammentati, i pacchetti non si riassemblano nell'hardware e riducono drasticamente le prestazioni della piattaforma.


Domande frequenti

La frammentazione dell'IP è fondamentale per la trasmissione dei dati poiché ogni rete ha un limite di dimensione diverso per l'elaborazione dei dati. Questo limite è anche noto come MTU (unità di trasmissione massima).

No, i router possono frammentare i pacchetti IP, ma non riassemblarli. È compito del dispositivo di destinazione riassemblare questi pacchetti per l'utente.

Se vengono persi uno o più frammenti di un datagramma, il datagramma completo viene eliminato dopo il periodo di timeout.


Conclusione

Questo conclude la nostra guida dettagliata sulla frammentazione IP.

Per darti una rapida panoramica, se i dati inviati su una rete sono maggiori della dimensione dell'unità di trasmissione massima (MTU), i dati verranno divisi in più frammenti e inviati al ricevitore.

Non appena i frammenti IP raggiungono la loro destinazione, si riassemblano nell'ordine corretto in modo che i dati possano essere utili agli utenti. Il meccanismo di frammentazione è diverso tra le reti IPv4 e IPv6, i cui dettagli sono menzionati sopra.

In caso di domande su indirizzi IP e frammentazioni, contattaci nei commenti.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More