IPv4 ( Internet Protocol version 4 ) è la prima versione di Internet Protocol (IP) ad essere stata ampiamente distribuita e che costituisce ancora la base della maggior parte delle comunicazioni su Internet nel 2021 , rispetto a IPv6 . È descritto nella RFC 791 disettembre 1981, in sostituzione di RFC 760, definito ingennaio 1980.
A ciascuna interfaccia su un host IPv4 vengono assegnati uno o più indirizzi IP codificati a 32 bit . In teoria possono quindi essere assegnati contemporaneamente un massimo di 4.294.967.296, ovvero 2,32 indirizzi (in pratica un certo numero non può essere utilizzato).
L' esaurimento degli indirizzi IPv4 ha portato allo sviluppo di una nuova versione di IP, IPv6 , e al passaggio da IPv4 a IPv6 per adottare questa nuova versione. La mancanza di indirizzo IPv4 viene prima superata attraverso l'uso di tecniche di traduzione degli indirizzi ( NAT ) e l'adozione del sistema CIDR . Il numero di indirizzi IP pubblici versione 4 ha raggiunto ufficialmente il punto di saturazione su3 febbraio 2011.
Un indirizzo IPv4 è rappresentato da quattro numeri interi separati da punti come 193.43.55.67. Ciascuno dei numeri rappresenta un byte . L'intervallo di allocazione si estende da 0.0.0.0 a 255.255.255.255, sapendo che esistono dei vincoli che impediscono l'utilizzo di determinati indirizzi (riservato, mask, broadcast, ecc.).
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Versione IP | Lunghezza intestazione | Tipo di servizio | Lunghezza totale | ||||||||||||||||||||||||||||
Identificazione | Indicatore | Frammento offset | |||||||||||||||||||||||||||||
Tutta la vita | Protocollo | Checksum intestazione | |||||||||||||||||||||||||||||
Indirizzo di partenza | |||||||||||||||||||||||||||||||
Indirizzo di destinazione | |||||||||||||||||||||||||||||||
Opzione/i + riempimento |
Versione (4 bit):
Versione IP utilizzata. Qui, 4.Lunghezza dell'intestazione o IHL (per Internet Header Length ) (4 bit):
Numero di parole a 32 bit, ovvero 4 byte (o numero di righe nel diagramma). Il valore è compreso tra 5 e 15, perché ci sono 20 byte minimo e uno non può superare i 40 byte di opzione (cioè in tutto 60 byte).Tipo di servizio o ToS (per Tipo di servizio ) (8 bit):
Questo campo permette di distinguere diverse qualità di servizio che differenziano il modo in cui i pacchetti vengono elaborati. Composto da 3 bit di priorità (quindi 8 livelli) e tre indicatori che permettono di differenziare la velocità, il ritardo o l'affidabilità.È rifiutato rispetto alle RFC. All'inizio ( RFC 791) avevamo:Bits 0-2: Precedence. Bit 3: 0 = Normal Delay, 1 = Low Delay. Bits 4: 0 = Normal Throughput, 1 = High Throughput. Bits 5: 0 = Normal Reliability, 1 = High Reliability. Bit 6-7: Reserved for Future Use. Il campo DSCP poi generalizza il campo TOS ( RFC 2474,dicembre 1998):Bits 0-5: DSCP (Differentiated Services Code Point) Bits 6-7: CU (Currently Unused) Nel settembre 2001( RFC 3168) il campo CU viene utilizzato per la gestione della congestione:Bits 0-5: DSCP (Differentiated Services Code Point) Bits 6-7: ECN (Explicit Congestion Notification)Lunghezza totale in byte o Lunghezza totale (16 bit):
Numero totale di byte nel datagramma, inclusa l'intestazione IP. Quindi il valore massimo è 2 16 −1 byte.Identificazione (16 bit):
Numero utilizzato per identificare i frammenti dello stesso pacchetto.Indicatori o Flag (3 bit):
Offset frammento (13 bit):
Posizione del frammento rispetto al pacchetto originale, in numero di parole da 8 byte. Quando il valore specificato è 0, questo è il primo frammento.Durata o TTL (per Time To Live ) (8 bit):
Inizializzato dal mittente, questo campo viene decrementato di un'unità generalmente ad ogni hop del router. Quando TTL = 0, il pacchetto viene scartato e viene inviato un messaggio ICMP al mittente per informazioni.Protocollo (8 bit):
Numero di protocollo sopra il livello di rete: TCP = 6, UDP = 17, ICMP = 1. Questo campo viene utilizzato per identificare il protocollo utilizzato dal livello superiore:Checksum dell'intestazione o Checksum dell'intestazione (16 bit):
Il proprio complemento del proprio complemento somma di tutto il contenuto dell'intestazione per rilevare gli errori di trasferimento. Se il checksum non è valido, il pacchetto viene eliminato senza un messaggio di errore.Indirizzo sorgente (32 bit):
Indirizzo IP del trasmettitore a 32 bit.Indirizzo di destinazione (32 bit):
Indirizzo IP del ricevitore a 32 bit.Opzioni (da 0 a 40 byte per parole a 4 byte):
Opzionale.Riempimento o imbottitura :
Campo di dimensione variabile tra 0 e 7 bit. Viene utilizzato per compilare il campo dell'opzione per ottenere un'intestazione IP multipla a 32 bit. Il valore dei bit di riempimento è 0.Su una data interfaccia, un frame ha una dimensione massima, chiamata Maximum Transmission Unit o MTU. Quando la lunghezza del pacchetto (datagramma) è maggiore, l'informazione sarà frammentata. La dimensione massima supportata da IPv4 (perché codificato su 16 bit) è di 65.535 byte ma le reti generalmente non supportano frame di tali lunghezze, in genere esistono MTU dell'ordine di 1.500 byte ( Ethernet ).