Datagramma IP e frammentazione
In questa pagina 3
In questa pagina 3
IPv4 (Internet Protocol version 4) è un protocollo senza connessione (connectionless, approccio a datagramma) e non affidabile: il servizio è best effort ("faccio del mio meglio"). Un pacchetto IPv4 può essere corrotto, perso, arrivare fuori ordine, subire ritardi e contribuire a congestionare la rete. Se serve affidabilità, IP va affiancato da un protocollo di trasporto affidabile come TCP (TCP - connessione, affidabilità e controllo di flussoTCP (Transmission Control Protocol) è il protocollo di trasporto con connessione e affidabile: trasforma il servizio senza connessione e inaffidabile di IP in un flusso di byte ordinato, senza errori né duplicati. La connessione si apre con l'handshake a tre vie (SYN, SYN+ACK, ACK) e si chiude con tre o quattro segmenti (FIN). I byte sono numerati: il numero di sequenza è quello del primo byte del segmento, il numero di ACK (cumulativo) è il prossimo byte atteso. Il mittente può inviare $\min(\text{rwnd},\text{cwnd})$ byte non ancora confermati; rwnd (finestra del ricevitore, in un campo di 16 bit) è il controllo di flusso. L'errore si gestisce con checksum, ACK, timeout di ritrasmissione (RTO) e ritrasmissione rapida dopo tre ACK duplicati. Per usare tutto il canale la finestra deve valere almeno il prodotto banda-ritardo (BDP); il throughput massimo è $\text{MSS}\cdot W_{\max}/\text{RTT}$.TCP - connessione, affidabilità e controllo di flusso →). IP si occupa di impacchettare, inoltrare e consegnare i pacchetti (Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP →).
Un datagramma IP è fatto di intestazione (header) di 20-60 byte e carico utile (payload); la lunghezza totale va da 20 a 65 535 byte.
L'intestazione
Organizzata in parole da 32 bit (4 byte); i campi fissi occupano 20 byte, seguiti da al più 40 byte di opzioni.
| parola | campi |
|---|---|
| 1 | Versione (4 bit) · HLen (4 bit) · TOS/DS (8 bit) · Total Length (16 bit) |
| 2 | Identification (16 bit) · Flags (3 bit) · Fragment Offset (13 bit) |
| 3 | TTL (8 bit) · Protocol (8 bit) · Header Checksum (16 bit) |
| 4 | Indirizzo IP sorgente (32 bit) |
| 5 | Indirizzo IP destinazione (32 bit) |
| 6... | Opzioni e riempimento (padding), fino a 40 byte |
- Version (4 bit): vale 4.
- HLen (header length, 4 bit): lunghezza dell'intestazione in parole da 4 byte. Serve al ricevente per sapere dove finisce l'intestazione e dove iniziano i dati. Minimo , cioè byte; massimo con 4 bit , cioè byte.
- TOS (type of service) o DS: 8 bit, definiscono come trattare il datagramma: tre bit di precedenza (precedence) e bit per ritardo (D), throughput (T), affidabilità (R), costo (C).
- Total Length (16 bit): lunghezza totale (intestazione + dati) in byte: al massimo .
- TTL (time to live, 8 bit): un datagramma può smarrirsi in Internet, visitando le stesse reti all'infinito e creando traffico inutile. Il TTL limita il numero massimo di salti (router): viene diminuito di 1 a ogni inoltro; se arriva a 0 il datagramma viene scartato e il router può inviare un messaggio ICMP (Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →, tipo 11).
- Protocol (8 bit): identifica il protocollo del livello superiore contenuto nel payload; è il campo che permette il multiplexing/demultiplexing a destinazione. Valori: = ICMP, = TCP, = UDP.
- Header Checksum (16 bit): IP non controlla gli errori nel payload, ma un errore nell'intestazione sarebbe grave (un indirizzo di destinazione corrotto consegna il pacchetto all'host sbagliato). Il checksum copre solo l'intestazione e va ricalcolato a ogni salto perché il TTL cambia. È il complemento a uno della somma (in aritmetica del complemento a uno) di tutte le parole da 16 bit dell'intestazione, con il campo checksum posto a 0 durante il calcolo.
- Indirizzi sorgente e destinazione (32 bit ciascuno): non cambiano durante il viaggio. Le netmask non sono nell'intestazione: le forniscono gli amministratori o i server DHCP (Protocollo DHCPDopo che a un'organizzazione è stato assegnato un blocco di indirizzi, configurare a mano IP e netmask di ogni host non è efficiente. BOOTP (obsoleto) associa in modo statico un indirizzo MAC a un indirizzo IP; DHCP (Dynamic Host Configuration Protocol) assegna gli indirizzi in modo dinamico, a prestito (lease) per un tempo limitato, anche a sistema operativo già avviato. Il dialogo client-server è su UDP (porta 67 server, 68 client) e usa quattro messaggi: DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK (più DHCPRELEASE a fine uso). Nell'ACK arrivano IP, netmask, default gateway e server DNS.Protocollo DHCP →) e vanno nelle tabelle di instradamento (Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →).
- Opzioni (fino a 40 byte, per il limite di HLen): servono per prove e diagnostica della rete.
Formula (checksum IP). Si sommano le parole da 16 bit dell'intestazione (con checksum ); si riporta l'eventuale riporto oltre i 16 bit sommandolo al risultato (complemento a uno); il checksum è il complemento a 1 (NOT bit a bit) della somma. Alla ricezione la somma di tutte le parole (checksum compreso) deve dare .
Esempio. Intestazione di 20 byte (in esadecimale): . Le parole sono scritte in esadecimaleogni cifra esadecimale vale 4 bit e le cifre vanno da 0 a 9 e da A a F, dove A=10, B=11, C=12, D=13, E=14, F=15Basi di numerazione e conversioni - binario, ottale ed esadecimale → (una parola da 16 bit sono 4 cifre). Somme parziali: ; ; ; ; ; (qui la somma supera i 16 bit; si fa cifra per cifra da destra: ; , si scrive 2 e si riporta 1; ; , si scrive 8 e si riporta 1 nella quinta cifra: risultato ); ; ; . Il riporto oltre i 16 bit (il "2" iniziale) si somma al resto: (aritmetica del complemento a uno: il riporto che esce a sinistra rientra a destra, Aritmetica binariaSomma e sottrazione in binario, overflow per senza segno (riporto) e per complemento a 2 (segni), flag del processore, moltiplicazione per somme e scorrimenti, algoritmo di Booth, divisione, shift logici e aritmetici.Aritmetica binaria →). Complemento: , che equivale a negare ciascuno dei 16 bit ( ha tutti i bit a 1, quindi sottrarre da esso scambia 0 e 1). Controllo: sommando ✓: ecco perché il ricevente, sommando tutte le parole checksum compreso, deve trovare . Lettura dei campi: = versione 4, HLen 5; byte di lunghezza totale; : TTL , Protocol (UDP).
Esempi rapidi sui campi
- Un pacchetto arriva con primo byte . Versione ✓, HLen , cioè byte: non valido, il ricevente lo scarta (pacchetto corrotto).
- HLen : intestazione di byte, cioè 20 di base e 12 di opzioni.
- HLen e Total Length : intestazione di 20 byte, quindi byte di dati.
- Un pacchetto con MF : è l'ultimo frammento; ma da solo non dice se il datagramma era frammentato (bisogna guardare l'offset).
- MF e offset : è il primo frammento (ne seguono altri, nessuno prima).
- Offset , HLen , Total Length : primo byte ; dati byte, quindi l'ultimo byte è il numero .
MTU e frammentazione
Un datagramma può attraversare reti diverse. Ogni router estrae il datagramma dal frame che riceve, lo elabora e lo reincapsula in un frame del collegamento d'uscita; ogni tecnologia di collegamento ha un proprio formato e un limite alla dimensione del carico utile del frame.
Definizione (MTU). La Maximum Transfer Unit è la dimensione massima del payload di un frame del collegamento, e quindi la dimensione massima di un datagramma IP (intestazione compresa) che quel collegamento può trasportare. Ethernet: byte (le WAN possono avere MTU più piccole).
Se un datagramma è più grande dell'MTU del collegamento d'uscita, viene frammentato (fragmented):
- si divide solo il payload; l'intestazione (tranne alcune opzioni) viene copiata in ogni frammento;
- un frammento può essere a sua volta frammentato se incontra una rete con MTU ancora più piccola;
- il router (o l'host) che frammenta modifica tre campi: Flags, Fragment Offset e Total Length (e ricalcola il checksum);
- il riassemblaggio avviene solo a destinazione: i router non ricompongono.
I campi che gestiscono la frammentazione:
- Identification (16 bit): uguale per tutti i frammenti dello stesso datagramma; il destinatario ricompone insieme i frammenti con la stessa identificazione.
- Flags (3 bit): R riservato (non usato); D (don't fragment): se il datagramma non passa su una rete per via dell'MTU, viene scartato e si manda un errore alla sorgente (Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →, destinazione irraggiungibile, codice 4); M (more fragments): se il frammento non è l'ultimo.
- Fragment Offset (13 bit): posizione relativa del frammento nel datagramma originale, misurata in unità di 8 byte: 13 bit per coprire fino a byte. Conseguenza: tutti i frammenti tranne l'ultimo devono avere un payload multiplo di 8.
Formula (frammentazione). Datagramma con Total Length , intestazione (di solito 20), collegamento con MTU . Payload da trasportare . Payload massimo per frammento: . Numero di frammenti: . L'offset dell'-esimo frammento (da 0) è (se i frammenti precedenti sono tutti da ).
Come nasce la formula. Ogni frammento ha una sua intestazione di byte, quindi dei byte che il collegamento può trasportare ne restano per i dati. Questo numero va però arrotondato per difetto a un multiplo di 8, perché l'offset si esprime in unità di 8 byte: un payload non multiplo di 8 renderebbe impossibile indicare dove comincia il frammento successivo (da qui ). La scelta delle unità da 8 byte non è casuale: l'offset ha 13 bit e può valere al massimo ; moltiplicato per 8 copre byte di posizione iniziale, cioè tutto un datagramma da byte (con offset in byte ne servirebbero 16). Il numero di frammenti è un arrotondamento per eccesso () perché anche un ultimo frammento quasi vuoto conta come frammento.
Esempio. (intestazione 20 + payload 3980), . byte di dati per frammento; esatto, quindi è già multiplo di 8 e . Frammenti: , per eccesso : due frammenti pieni da e uno con quello che resta, byte di payload. Total Length del frammento payload 20; l'offset di ciascuno è il numero di byte già inviati diviso 8 (, , ). MF vale 1 nei primi due e 0 nell'ultimo.
Grafico interattivo: Payload di 3980 byte diviso in tre frammenti (posizione in byte)
| frammento | payload | Total Length | MF | offset |
|---|---|---|---|---|
| 1 | 1480 | 1500 | 1 | 0 |
| 2 | 1480 | 1500 | 1 | |
| 3 | 1020 | 1040 | 0 |
Tutti hanno la stessa Identification (nell'esempio delle slide, , scelto a caso). Si ricostruisce così:
- datagramma non frammentato: MF e offset ;
- primo frammento: MF , offset (altri frammenti in arrivo, nessuno prima);
- ultimo frammento: MF , offset (nessun altro dopo, ma ce ne sono prima);
- frammenti dello stesso datagramma: stessa Identification;
- l'offset si calcola con solo i dati contenuti nei frammenti precedenti.
Quali campi cambiano con la frammentazione: Total Length, Flags (MF), Fragment Offset, Header Checksum sempre; HLen e Opzioni solo se alcune opzioni non vengono copiate nei frammenti; non cambiano Version, TOS, Identification, Protocol, indirizzi, e il TTL cambia soltanto perché diminuisce a ogni salto come per qualunque inoltro.
Esempio (quanti frammenti). Pacchetto di byte (Total Length), . ; , che non è multiplo di 8 (), quindi si scende a (i 4 byte di differenza restano inutilizzati in ogni frammento). Frammenti: : da byte e uno da byte. (Dividere semplicemente non è corretto: i 20 byte di intestazione si ripetono in ogni frammento e il payload deve essere multiplo di 8.) Altro caso, Esercizio - piano di indirizzamento e inoltro con MTU (tema d'esame): byte con danno frammenti (12 da byte e uno da ).
Problemi della frammentazione
- Se un frammento si perde, tutti gli altri sono inutili: il datagramma intero va ritrasmesso (e IP non se ne occupa; il trasporto, che non vede la frammentazione, può recuperare un datagramma intero ma non il singolo frammento).
- Un solo frammento in ritardo può causare la perdita dell'intero datagramma; allo scadere di un timer di riassemblaggio la destinazione manda un ICMP tipo 11, codice 1.
È meglio evitare la frammentazione: se l'MTU è nota, basta non superarla quando si crea il PDU (con TCP si imposta l'MSS, TCP - connessione, affidabilità e controllo di flussoTCP (Transmission Control Protocol) è il protocollo di trasporto con connessione e affidabile: trasforma il servizio senza connessione e inaffidabile di IP in un flusso di byte ordinato, senza errori né duplicati. La connessione si apre con l'handshake a tre vie (SYN, SYN+ACK, ACK) e si chiude con tre o quattro segmenti (FIN). I byte sono numerati: il numero di sequenza è quello del primo byte del segmento, il numero di ACK (cumulativo) è il prossimo byte atteso. Il mittente può inviare $\min(\text{rwnd},\text{cwnd})$ byte non ancora confermati; rwnd (finestra del ricevitore, in un campo di 16 bit) è il controllo di flusso. L'errore si gestisce con checksum, ACK, timeout di ritrasmissione (RTO) e ritrasmissione rapida dopo tre ACK duplicati. Per usare tutto il canale la finestra deve valere almeno il prodotto banda-ritardo (BDP); il throughput massimo è $\text{MSS}\cdot W_{\max}/\text{RTT}$.TCP - connessione, affidabilità e controllo di flusso →). Tutte le reti collegate a Internet devono garantire un MTU di almeno 576 byte (per questo molti datagrammi avevano quella dimensione). La dimensione tipica è 1500 byte per l'MTU Ethernet: payload massimo del frame 1500, datagramma IP massimo 1500, payload IP massimo 1480. La scoperta dell'MTU di un cammino con il ping e il bit D è in Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →.
Versione ripasso
IPv4 (Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP →): senza connessione, non affidabile (best effort); l'affidabilità la dà TCP (TCP - connessione, affidabilità e controllo di flussoTCP (Transmission Control Protocol) è il protocollo di trasporto con connessione e affidabile: trasforma il servizio senza connessione e inaffidabile di IP in un flusso di byte ordinato, senza errori né duplicati. La connessione si apre con l'handshake a tre vie (SYN, SYN+ACK, ACK) e si chiude con tre o quattro segmenti (FIN). I byte sono numerati: il numero di sequenza è quello del primo byte del segmento, il numero di ACK (cumulativo) è il prossimo byte atteso. Il mittente può inviare $\min(\text{rwnd},\text{cwnd})$ byte non ancora confermati; rwnd (finestra del ricevitore, in un campo di 16 bit) è il controllo di flusso. L'errore si gestisce con checksum, ACK, timeout di ritrasmissione (RTO) e ritrasmissione rapida dopo tre ACK duplicati. Per usare tutto il canale la finestra deve valere almeno il prodotto banda-ritardo (BDP); il throughput massimo è $\text{MSS}\cdot W_{\max}/\text{RTT}$.TCP - connessione, affidabilità e controllo di flusso →). Intestazione di 20-60 byte; Total Length (intestazione + dati) al massimo .
Intestazione
Parole da 32 bit: Versione 4 bit, HLen 4, TOS/DS 8, Total Length 16; Identification 16, Flags 3, Fragment Offset 13; TTL 8, Protocol 8, Checksum 16; IP sorgente; IP destinazione; opzioni fino a 40 byte.
- HLen: in parole da 4 byte; minimo byte, massimo byte.
- TTL: a ogni inoltro; a 0 scarto e ICMP tipo 11 (Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →).
- Protocol: ICMP, TCP, UDP.
- Header Checksum: copre solo l'intestazione, ricalcolato a ogni salto (cambia il TTL).
- Indirizzi sorgente e destinazione non cambiano; le netmask non sono nell'intestazione (Protocollo DHCPDopo che a un'organizzazione è stato assegnato un blocco di indirizzi, configurare a mano IP e netmask di ogni host non è efficiente. BOOTP (obsoleto) associa in modo statico un indirizzo MAC a un indirizzo IP; DHCP (Dynamic Host Configuration Protocol) assegna gli indirizzi in modo dinamico, a prestito (lease) per un tempo limitato, anche a sistema operativo già avviato. Il dialogo client-server è su UDP (porta 67 server, 68 client) e usa quattro messaggi: DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK (più DHCPRELEASE a fine uso). Nell'ACK arrivano IP, netmask, default gateway e server DNS.Protocollo DHCP →, Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →).
Formula (checksum). Somma delle parole da 16 bit con checksum , il riporto oltre 16 bit si somma al risultato, checksum NOT della somma. In ricezione la somma di tutte le parole deve dare .
Es. . Somma ; ; checksum (verifica ). Campi: = versione 4 e HLen 5; byte; TTL ; Protocol (UDP).
Esempi sui campi
- Primo byte : HLen , cioè byte: non valido, scartato.
- Offset , HLen , Total Length : primo byte , dati , ultimo byte .
MTU e frammentazione
Definizione (MTU). Dimensione massima del payload di un frame, quindi del datagramma IP (intestazione compresa) sul collegamento. Ethernet: byte.
Se il datagramma supera l'MTU è frammentato: si divide solo il payload, l'intestazione è copiata in ogni frammento, il riassemblaggio è solo a destinazione. Cambiano Total Length, Flags (MF), Fragment Offset e Header Checksum; non cambiano Version, TOS, Identification, Protocol, indirizzi.
- Identification: uguale per tutti i frammenti.
- Flags: R riservato; D (don't fragment): se non passa, scarto e ICMP (destinazione irraggiungibile, codice 4); M: se non è l'ultimo.
- Fragment Offset: posizione in unità di 8 byte ( byte), quindi ogni frammento tranne l'ultimo ha payload multiplo di 8.
Formula. , , frammenti , offset dell'-esimo .
- , : , , , frammenti:
Frammenti (payload / Total Length / MF / offset): , , .
- Non frammentato: MF , offset . Primo: MF , offset . Ultimo: MF , offset .
- byte, : , , ( da e uno da ); non vale . Con e : frammenti (Esercizio - piano di indirizzamento e inoltro con MTU (tema d'esame)).
Se un frammento si perde, va ritrasmesso il datagramma intero; meglio evitare la frammentazione (MSS). MTU minimo garantito ; Ethernet: payload IP .
Errori tipici: dimenticare che l'intestazione si ripete in ogni frammento; offset in byte invece che in unità di 8; HLen in byte invece che in parole.
Esercizi su questo argomento
- Esercizio - Blocco 131.175.208.0-21 con quattro LAN e inoltro di quattro pacchetti
- Esercizio - Inoltro di quattro pacchetti, rete da 1014 host e sottoreti da 34 nodi
- Esercizio - Inoltro di tre pacchetti e piano di indirizzamento di un blocco 13.14.0.0-16
- Esercizio - pacchetti ARP e IP con router e con switch
- Esercizio - Piano di indirizzamento di nove LAN, inoltro di cinque pacchetti e due sottoreti da 1950 host
- Esercizio - piano di indirizzamento e inoltro con MTU (tema d'esame)
Lezioni in cui compare
Teoria collegata
- Instradamento e inoltro
- Introduzione alla sicurezza delle reti
- Livello di rete e indirizzamento IP
- Livello di trasporto - porte e multiplexing
- Modello ISO-OSI e pila TCP-IP
- Protocollo ICMP
- Protocollo UDP
- Routing avanzato in Katharà
- Routing statico in Katharà
- TCP - connessione, affidabilità e controllo di flusso
- VPN