Il protocollo IP si occupa di fornire un metodo di indirizzamento logico e di gestione frammentazione/riassemblaggio per la trasmissione dati tra gli host di una rete.
Il protocollo IP, descritto nella RFC 791, nasce negli anni '70 grazie a una serie di ricerche fatte dalle università americane su richiesta del ministro della difesa, allo scopo di realizzare una rete in grado di trasportare diversi tipi di informazioni. L'IP protocol definisce una tecnica di trasmissione dati non orientata alla connessione (connectionless) e senza riscontro (non c'è garanzia che i pacchetti giungano a destinazione e nella sequenza corretta). Esso prevede che le informazioni vengano strutturate in unità chiamate datagrammi IP (IP datagram), di lunghezza massima 65535 byte, suddivise in due aree: il campo dati (data) che contiene il messaggio da inviare e l'intestazione (header) che contiene le informazioni necessarie per instradare il pacchetto.
HEADER IP
L'intestazione di un pacchetto IP è suddivisa nei seguenti campi:
Version: campo di 4 bit, descrive la versione del protocollo;
IHL: campo di 4 bit, definisce la lunghezza dell'intestazione. Il campo IHL(Internet Header Lenght) viene sottratto da Packet Lenght per determinare l'inizio dei dati;
Service Type: campo di 8 bit, che definisce le caratteristiche del servizio in Precedence (importanza del pacchetto),
Delay, Throughput, Reliability (informazioni per il trasporto, servono a determinare il percorso che il pacchetto farà);
Packet Lenght: campo di 16 bit, definisce la lunghezza totale del pacchetto (Intestazione+Dati);
Packet Fragmentation: è formato da tre campi, identification di 16 bit , flags di 3 bit e fragment offset di 13 bit i quali permettono di suddividere il pacchetto in unità più piccole quando esso deve passare attraverso una rete che prevede frame di dimensioni minori, e di essere ricostruito all'uscita dalla rete;
Time-to-live (TTL): campo di 8 bit, definisce il tempo massimo di permanenza del pacchetto nella rete, ad ogni hop (router attraversato) il suo valore diminuisce di uno, una volta riaggiunto il valore zero il pacchetto viene scartato;
Protocol: campo di 8 bit, definisce il protocollo ad alto livello utilizzato per creare il messaggio contenuto nel campo dati (TCP, UDP, ICMP ecc);
Header Checksum: campo di 16 bit, definisce un checksum per il controllo della correttezza dei dati contenuti nell'intestazione del pacchetto;
Ip Address Source: campo di 32 bit, contiene l'indirizzo IP del mittente;
Ip Address Destination: campo di 32 bit, contiene l'indirizzo IP del destinatario;
Options: campo di dimensioni variabili, è opzionale, contiene informazioni sulle operazioni che devono essere effettuate durante il percorso;
Padding: campo di dimensioni variabili, è utilizzato per far raggiungere all'area d'intestazione una dimensione di 32 bit o un suo multiplo;
Data: i dati trasportati dal protocollo.
Visione d'insieme dei protocolli alla base di Internet: IP, TCP, UDP.