cerca
Header IPv4
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Header IPv4

Torna alla pagina di Sistemi per l'elaborazione delle informazioni


 :: Header IPv4 ::

Quando un'applicazione deve inviare dei dati ad un'altra il software TCP/IP interviene suddividendo l'informazione da inviare in una sequenza di pacchetti IP. Ciascuno di questi pacchetti è etichettato con uno header fisso, che include l'indirizzo IP dell’interfaccia mittente e di quella di destinazione. Lo header specifica anche la lunghezza totale del pacchetto con un campo di 16 bit; la dimensione massima di un pacchetto IP è quindi di 64 Kbyte. L'indirizzo IP è indirizzo software a 32 bit e deve essere specificato dal mittente.

Tra parentesi quadre la dimensione in bit dei vari campi.

Versione [4] IHL [4] Tipo di servizio [8] Lunghezza totale [16]
ID del datagramma [16] Flag [3] Offset di frammentazione [13]
Time to live [8] Protocollo [8] Checksum dello header [16]
Indirizzo IP sorgente [32]
Indirizzo IP destinazione [32]
Opzioni Padding
Dati

Versione

Indica la versione attuale del pacchetto (datagramma) IP. La versione usata attualmente è la 4, detta IPv4, destinata ad essere sostituita (forse nel 2025) dalla IPv6.

IHL

L' IHL (Internet Header Lenght) indica la lunghezza dell'header IP, espressa in parole (word) da 32 bit. Generalmente vengono utilizzate 5 parole, che possono aumentare fino a 15 nel caso in cui sia presente il campo Opzioni.

Tipo di servizio

Permette all'host mittente di specificare il modo e la precedenza con cui l'host ricevente dovrà trattare il pacchetto. Questi bit servivano all'host mittente per specificare il modo e in particolare la precedenza con cui l'host ricevente doveva trattare il datagramma:

    * bit 0-2 : Precedenza
    * bit 3: Latenza (0 = normale, 1 = bassa)
    * bit 4: Throughput (0 = normale, 1 = alto)
    * bit 5: Affidabilità (0 = normale, 1 = alta)
    * bit 6-7: Riservati per usi futuri

Lunghezza totale

Riporta la dimensione dell'intero pacchetto, header e dati inclusi, esprimendola in byte.

ID del datagramma

Insieme all'indirizzo mittente, consente di identificare univocamente il pacchetto nel caso in cui debba essere frammentato durante la trasmissione.

Flag

Sono tre flag, uno per bit, utilizzati per il controllo del protocollo e della frammentazione del datagramma:

  • DF (Don't fragment): se è a 1 il datagramma non può essere frammentato (in particolare, se non può essere inviato ad un altro host senza essere frammentato, viene scartato dal router, che genera un messaggio ICMP al mittente), se è a 0 sì.
  • MF (More fragment): indica se il datagramma ricevuto è l'ultimo di una serie di frammenti o se ce ne sono altri. Se è l'ultimo (o se il pacchetto non è stato frammentato), MF avrà valore 0.
  • Reserved: sempre settato a 0.

Offset di frammentazione

Rappresenta lo spiazzamento (offset) espresso in byte di un frammento rispetto all'inizio del pacchetto originale. Quindi, ad esempio, il primo frammento avrà offset pari a 0. Può essere impostato dai router che effettuano la frammentazione. Se il pacchetto è frammentato, il secondo frammento partirà dal bit successivo alla fine del primo frammento.
(Esempio una linea supporta un frame di 512 byte, ho un pacchetto di 900 byte. In quanti pacchetti verrà frammentato? Come si presenterà l'offset di frammentazione? Risposta: verrà frammentato in 2 pacchetti: l'offset del primo sarà 0, quello del secondo sarà 512)

Time to live

E' il numero di hop, ovvero i router che il pacchetto può attraversare. Ogni volta che attraversa un router questo tempo viene diminuito di uno. Quando il TTL arriva a zero il pacchetto non viene più inoltrato ma scartato se non è arrivato a destinazione. Tipicamente, quando un datagramma viene scartato per esaurimento del TTL, viene automaticamente inviato un messaggio ICMP al mittente del datagramma, specificando il codice di Richiesta scaduta; la ricezione di questo messaggio ICMP è alla base del meccanismo di traceroute.

Protocollo

Permette di risalire al protocollo utilizzato nel campo dati del pacchetto, utilizzando un codice per indicarlo. Ad esempio il protocollo ICMP ha valore 1, IGMP ha 2, TCP ha 6 e UDP 17.

Checksum dello header

E' usato per il controllo degli errori nello header. Ad ogni hop che il pacchetto si trova ad attraversare, il suo valore di checksum deve essere confrontato con la somma in complemento a 1 dei bit dell'header stesso; se il confronto dà esito negativo (i due valori sono diversi) allora il pacchetto viene scartato. Ne consegue che tutti i router che modificano il pacchetto, devono aggiornare il suo valore di checksum.

In soldoni, come avviene il controllo dell'errore?

  1. si sommano in complemento a 1 tutti i bit dello header, organizzati in parole da 16 bit l'una, e con il valore del campo checksum settato a 0 (perché? perché non posso fare una somma utilizzando come addendo la somma stessa!)
  2. si complementa a 1 il risultato di tale somma (si fa dunque il NOT binario)
  3. si confronta il valore ottenuto con quello presente nel campo checksum dell'header del pacchetto ricevuto

Indirizzo IP sorgente

Indica l'indirizzo IP del mittente del pacchetto.

Indirizzo IP destinazione

Indica l'indirizzo IP del destinatario del pacchetto.

Opzioni

E' un campo facoltativo e comunque non viene usato molto spesso. Consente di aumentare la lunghezza dell'header di 5 parole.

Padding

...

Per conoscere le dimensioni degli header ecco una mini-guida: Attach:nomefile.pdf


Torna alla pagina di Sistemi per l'elaborazione delle informazioni