Internet Protocol (IP)

Internet Protocol (IP) è un protocollo di comunicazione utilizzato tra tutte le macchine collegate in rete per l’inoltro dei dati. Sia nel modello TCP/IP che nel modello OSI, l’IP importante del protocollo Internet si trova nel livello chiamato livello di rete.

Operazione

Dati su una rete IP che vengono inviati in blocchi denominati file (i termini sono fondamentalmente sinonimi in IP, essendo usati per dati in posizioni diverse nei livelli IP). In particolare, in IP non è necessaria alcuna definizione prima che il nodo tenti di inviare file a un nodo con cui non ha comunicato in precedenza.

IP fornisce un servizio di datagramma (pacchetto) inaffidabile (chiamato anche miglior sforzo); cioè, il pacchetto viene fornito con quasi nessuna garanzia. Il pacchetto potrebbe arrivare non ordinato (rispetto ad altri pacchetti inviati tra gli stessi nodi), potrebbe arrivare anche in duplicato o potrebbe essere perso del tutto. Se l’applicazione richiede maggiore affidabilità, viene aggiunta al livello di trasporto.

I router vengono utilizzati per inoltrare datagrammi IP attraverso reti interconnesse al secondo livello. La mancanza di qualsiasi garanzia di consegna rende più semplificata la progettazione del cambio dei pacchi. (Si noti che se la rete si interrompe, riordina o danneggia in altro modo un gran numero di pacchetti, le prestazioni osservate dall’utente saranno scarse, quindi la maggior parte degli elementi della rete si sforza di non fare questo genere di cose: il massimo sforzo. Tuttavia, un occasionale errore non avrà alcun effetto evidente.)

L’IP è l’elemento comune che si trova nell’Internet pubblica di oggi. È descritto in IETF RFC 791, pubblicato per la prima volta nel settembre 1981. Questo documento descrive il protocollo di livello di rete più diffuso attualmente in uso. Questa versione del protocollo è chiamata versione 4 o IPv4. IPv6 ha un indirizzamento di origine e destinazione a 128 bit, offrendo un indirizzamento maggiore rispetto a IPv4 a 32 bit.

Formato intestazione IPv4

Versione: il primo campo di intestazione di un datagramma IPv4 è il campo della versione, con quattro bit.
Header Size (IHL) – il secondo campo a quattro bit è l’IHL (acronimo di Internet Header Length) in numero di parole a 32 bit (4 byte) dell’intestazione IPv4. Poiché l’intestazione IPv4 fornisce il campo OPTIONS che può essere utilizzato per estendere l’intestazione IP, il campo IHL specifica essenzialmente dove termina esattamente l’intestazione e iniziano i dati del datagramma IPv4. Un’intestazione IPv4 minima è lunga venti byte, quindi il valore decimale minimo nel campo IHL sarebbe cinque, come segue:

  • Tipo di servizio (ToS)  – In RFC 791, gli otto bit successivi vengono assegnati a un campo Tipo di servizio (ToS), ora DiffServ ed ECN. L’intento originale era che un nodo specificasse una preferenza su come gestire i datagrammi mentre viaggiano attraverso la rete. Ad esempio, un nodo può impostare il campo dei valori ToS dei datagrammi IPv4 in modo da preferire un piccolo intervallo di tempo, mentre altri potrebbero preferire un’elevata affidabilità. In pratica, il campo ToS non è stato ampiamente implementato. Tuttavia, il lavoro sperimentale, di ricerca e sviluppo si è concentrato su come utilizzare questi otto bit. Questi bit sono stati ripristinati e più recentemente tramite il gruppo di lavoro DiffServ presso l’IETF e dai punti di codice di Explicit Congestion Notification (ECN) (RFC 3168.)
  • Lunghezza (pacchetto)  – Il successivo campo IPv4 a sedici bit definisce l’intera lunghezza del datagramma, inclusi intestazione e dati, in byte a otto bit. La dimensione minima del datagramma è di venti byte e la massima è di 64 Kb. La dimensione massima del datagramma che qualsiasi nodo richiede per essere in grado di gestire è 576 byte, ma i nodi più moderni gestiscono pacchetti molto più grandi. A volte le sottoreti impongono restrizioni sulle dimensioni, in ogni caso i datagrammi devono essere “frammentati”. La frammentazione viene gestita sia al nodo che allo switch di pacchetto in IPv4 e solo al nodo nel caso di IPv6.
  • Identificatore  : il campo di sedici bit successivo è un campo di identificazione. Questo campo viene utilizzato principalmente per identificare frammenti identificativi del datagramma IP originale. Alcuni lavori sperimentali suggeriscono di utilizzare il campo IP per altri scopi, come l’aggiunta di pacchetti per trasportare le informazioni al datagramma, in un modo che aiuta a cercare i datagrammi all’indietro con indirizzi di origine falsificati.
  • Flag  : il seguente campo a tre bit viene utilizzato per controllare o identificare i frammenti.
  • Offset  : il campo  dell’offset del frammento  è lungo tredici bit e consente a un ricevitore di determinare la posizione di un particolare frammento nel datagramma IP originale.
  • Time to live (TTL)  – un campo a otto bit, TTL (  time  to live) aiuta a prevenire la persistenza dei datagrammi (cioè l’esecuzione in cerchio) su una rete. Storicamente, il campo TTL limita la vita di un datagramma a secondi, ma è diventato un campo per il conteggio dei nodi percorsi. Ogni interruttore di pacchetto attraversato da un datagramma diminuisce il campo TTL di un valore. Quando il campo TTL raggiunge lo zero, il pacchetto non è seguito da uno switch di pacchetto e viene scartato.
  • Protocollo  : segue un campo di protocollo a otto bit, che definisce il protocollo successivo utilizzato in una porzione di dati di un datagramma IP. Internet Assigned Numbers Authority mantiene un elenco di numeri di protocollo. I protocolli comuni e i loro valori decimali includono ICMP (1), TCP (6).
  • Checksum  : il campo successivo è un campo di checksum per l’intestazione del datagramma IPv4. Un pacchetto in transito viene modificato da ogni interruttore che attraversa. Uno di questi switch può compromettere il pacchetto e il controllo è un modo semplice per rilevare la coerenza dell’intestazione. Questo valore viene regolato lungo il percorso e verificato ad ogni nuovo nodo. Implica solo il controllo dell’intestazione (non dei dati).
  • Indirizzo di origine/Indirizzo di destinazione  : dopo il campo di controllo, seguono gli indirizzi di origine e di destinazione, ciascuno lungo 32 bit. Si noti che gli indirizzi IPv6 di origine e di destinazione sono a 128 bit ciascuno.
  • Opzioni  : campi di intestazione aggiuntivi possono seguire il campo dell’indirizzo di destinazione, ma normalmente non vengono utilizzati. I campi delle opzioni possono essere seguiti da un campo del percorso che assicura che i dati utente siano allineati su un limite di parola a 32 bit. (In IPv6, le opzioni si spostano al di fuori dell’intestazione standard e sono specificate dal campo  Next Protocol  , simile alla funzione del campo “Protocol” in IPv4).

Di seguito sono riportati tre esempi di opzioni implementate e supportate sulla maggior parte dei router:

  • Security (specifica il livello di sicurezza del datagramma (usato nelle applicazioni militari));
  • Timestamp (fa in modo che ogni router aggiunga il proprio indirizzo e timestamp (32 bit), che serve per eseguire il debug degli algoritmi di routing); e
  • Registra percorso (fa in modo che ogni router aggiunga il proprio indirizzo).

Indirizzamento e inoltro IPv4 [  modifica  | modifica codice sorgente  ]

Forse gli aspetti più complessi dell’IP sono l’indirizzamento e l’inoltro. L’indirizzamento definisce come vengono assegnati gli indirizzi IP dei nodi finali e come le sottoreti degli indirizzi IP dei nodi vengono suddivise e raggruppate. L’inoltro IP viene eseguito da tutti i nodi, ma più comunemente dai router di rete, che in genere utilizzano i protocolli IGP o EGP per aiutare a leggere i datagrammi IP che inoltrano le decisioni attraverso gli IP sulle reti collegate.

In internet, e nelle reti private che vediamo oggi nelle aziende o anche nelle abitazioni, il protocollo di comunicazione utilizzato dai computer si chiama IP, acronimo di Internet Protocol. Creato alla fine degli anni ’70, il protocollo IP ha come sua “missione” non solo quella di far “parlare” due computer, ma anche di consentire l’interconnessione di due o più reti separate. Con pochissime eccezioni, praticamente tutte le reti del mondo sono finite, in un modo o nell’altro, ad essere collegate tra loro ed è stata questa comunione di reti che ha finito per formare ciò che oggi conosciamo come Internet (nome che, in portoghese , può essere tradotto come “inter-reti” o “reti interconnesse”).

Il protocollo IP ha uno schema di indirizzamento simile ai numeri di telefono. Così come ogni telefono nel mondo è unico (considerando il prefisso e il prefisso del paese), ogni computer connesso a Internet ha un numero univoco, chiamato indirizzo IP o numero IP. Questo numero viene utilizzato per identificare il computer su Internet. Se hai bisogno di chattare con qualcuno su Internet, invia semplicemente messaggi indirizzati all’indirizzo IP del computer della persona.

Affinché un’e-mail di Alice lasci il suo computer e raggiunga il computer di Beto, ad esempio, i dati (in questo caso il testo dell’e-mail) devono essere suddivisi in piccoli pacchetti (detti pacchetti IP) che sono contrassegnati all’interno dell’indirizzo IP di origine (ovvero, il numero univoco del computer di Alice) e l’IP di destinazione (il numero univoco del computer di Beto). Internet “si gira” per trovare la strada tra Alice e Bob, senza che nessuno dei due debba preoccuparsene.

Tuttavia, il protocollo IP nella sua versione attuale (versione quattro, denominata IPv4) è già piuttosto vecchio e presenta molti problemi. I più gravi sono i difetti di sicurezza, che vengono periodicamente scoperti e non hanno soluzione. La maggior parte degli attacchi contro i computer su Internet oggi sono possibili solo a causa di difetti nel protocollo IP. La nuova generazione del protocollo IP, IPv6, risolve la maggior parte dei problemi di sicurezza di Internet oggi, ereditati dal progetto antiquato di IPv4.

Ma IPv4 ha un problema ancora più urgente della sua intrinseca insicurezza: ha già esaurito la sua scalabilità. Ogni computer connesso a Internet – sia esso un personal computer, una workstation o un server che ospita un sito web – necessita di un indirizzo univoco che lo identifichi nella rete. IPv4 definisce, tra le altre cose importanti per la comunicazione tra computer, che il numero IP ha un’estensione a 32 bit. A 32 bit, IPv4 ha teoricamente circa quattro miliardi di indirizzi IP disponibili, ma in pratica ciò che è effettivamente disponibile è meno della metà. Se contiamo che il pianeta ha sei miliardi di abitanti e che ogni dispositivo connesso a internet (che include smartphone, pc, notebook e simili) ha bisogno di un numero tutto suo, è facile vedere che il conto non si chiude. Questo numero, essendo finito, finisce un giorno.

Inoltre, gli indirizzi IP sono “bloccati” geograficamente. Due indirizzi vicini si trovano necessariamente nella stessa città o regione. Considerando che circa tre quarti degli indirizzi IP disponibili su Internet si trovano negli Stati Uniti (anche se mai utilizzati), sono rimasti poco più di un miliardo di indirizzi per il resto del mondo, aumentando ulteriormente il problema della carenza.

L’ingresso di smartphone e altri dispositivi mobili (che sono economici ed estremamente popolari) su Internet ha contribuito a rendere ancora più scarso il numero di indirizzi IP disponibili. In effetti, alcune previsioni pessimistiche erano che gli indirizzi IP si sarebbero esauriti completamente nel 2012, trasformando Internet in un vero caos.

L’avvento di IPv6, con 128 bit, risolverebbe tutti questi problemi. Primo, perché elimina virtualmente tutte le falle di sicurezza IPv4 conosciute, rendendo le comunicazioni molto più sicure. È probabile che IPv6 rappresenti un enorme mal di testa per gli hacker criminali.

In secondo luogo, IPv6 definisce 128 bit per l’indirizzamento e quindi ha circa 3,4 × 10^38 indirizzi disponibili (o 340 seguiti da 36 zeri). Per coloro che non vogliono fare i conti, sappiate solo che ci sono molti miliardi di quadrilioni di indirizzi disponibili, a garanzia che i numeri IP per gli umani non mancheranno per millenni.

Secondo la prima bozza di un documento proposto dall’IETF – Internet Engineering Task Force, l’ente responsabile dello sviluppo tecnologico di Internet, la migrazione da IPv4 a IPv6 avrebbe dovuto iniziare tra il 2009 e il 2010, con la migrazione completa entro la fine del 2011. La tempistica è ancora in ritardo a causa dei vari problemi della completa riconversione. Google, Yahoo! e Facebook stanno già iniziando ad adottare IPv6.

Rispondi