Livello di rete, indirizzi IP e routing sono i concetti al centro di questa lezione, dedicata al ruolo del livello di rete nell’indirizzamento e nell’instradamento dei pacchetti tra host e reti diverse.
Il testo descrive il funzionamento del protocollo IP, un protocollo connectionless e best effort, che prova a consegnare i pacchetti senza garantire affidabilità, ordine o tempi di consegna. La lezione chiarisce poi la differenza tra indirizzo MAC e indirizzo IP, distinguendo la comunicazione locale dall’instradamento globale. Vengono quindi presentati gli indirizzi IPv4 e IPv6, gli indirizzi statici e dinamici, gli indirizzi pubblici e privati, il ruolo del DHCP e il funzionamento del NAT/PAT, che permette a più dispositivi di una LAN di condividere un unico IP pubblico.
Nella parte finale viene spiegato il routing, cioè il processo con cui i router usano le tabelle di instradamento per scegliere il percorso dei pacchetti, e il forwarding, cioè l’inoltro concreto del pacchetto verso l’interfaccia corretta.
Livello di rete
Dopo aver visto il livello di trasporto, possiamo scendere al livello di rete. Il livello di trasporto si occupa della comunicazione logica tra processi applicativi, mentre il livello di rete si occupa di indirizzare e instradare i pacchetti tra host e reti diverse, attraverso il percorso di rete più appropriato (Baker, 1995; Postel, 1981).
È importante specificare che un router, nel suo funzionamento principale, utilizza soprattutto i primi tre livelli della pila di rete: fisico, link e rete.
Il motivo è che il router non deve interpretare il contenuto applicativo della comunicazione, per esempio una pagina web, un’email o un file. Il suo compito è più limitato: ricevere un pacchetto da un’interfaccia di rete, leggere le informazioni del livello di rete, in particolare l’indirizzo di destinazione, e decidere da quale interfaccia inoltrarlo (Baker, 1995).
Per svolgere questo compito, il router ha bisogno:
II livelli superiori, cioè trasporto e applicazione, sono invece necessari soprattutto negli host finali, perché lì si trovano i programmi che comunicano tra loro, come browser, server web, app di messaggistica o client email.
Nota: alcuni router moderni possono analizzare anche informazioni più ‘in alto’ (porte, protocolli applicativi) per sicurezza e gestione.
La rete Internet è basata di fatto su un protocollo non affidabile e connectionless, Internet Protocol (IP) (Postel, 1981).
Esso è un protocollo a pacchetti di tipo best effort che indica un servizio per il quale non esistono garanzie sulla consegna, sul tempo impiegato tra invio e ricezione, né sulla qualità e l’integrità del servizio stesso durante la fase di trasmissione (questi attributi di qualità vengono implementati nel livello di trasporto come abbiamo visto) (Postel, 1981).
Il fatto che IP sia best effort non significa che sia inutile o progettato male. Significa che IP svolge un compito preciso: provare a consegnare i pacchetti alla destinazione. Se servono affidabilità, riordino o ritrasmissione, questi aspetti vengono gestiti da altri protocolli, come TCP, oppure direttamente dall’applicazione (Postel, 1981).
Come appena detto, il principale compito di IP è l’indirizzamento e l’instradamento tra sottoreti eterogenee, che a livello locale utilizzano invece un indirizzamento proprio, tipicamente basato sull’indirizzo MAC (Postel, 1981).
Per permettere a reti diverse di comunicare tra loro, è necessario usare un sistema di indirizzamento comune. Questo sistema è fornito dal protocollo IP.
Ogni dispositivo collegato a una rete IP (una rete che usa il protocollo IP) deve avere un indirizzo IP, cioè un identificatore logico usato per raggiungerlo nella rete (Hinden & Deering, 2006; Postel, 1981).
L’indirizzo IP permette di indicare il mittente e il destinatario di un pacchetto, anche quando si trovano in reti diverse.
L’indirizzo IP ha quindi un ruolo diverso dall’indirizzo MAC:
Quando un pacchetto deve raggiungere una destinazione lontana, attraversa diversi router. Ogni router legge l’indirizzo IP di destinazione e decide verso quale rete o verso quale router successivo inoltrare il pacchetto.
Questa procedura prende il nome di routing, o instradamento. Il routing è l’insieme delle regole e dei meccanismi che permettono ai pacchetti di trovare un percorso attraverso reti diverse fino alla destinazione (Baker, 1995).
Il pacchetto che si forma con il protocollo IP si chiama pacchetto IP.
Esempio
Quando un computer della rete di casa vuole raggiungere un server web su Internet, il pacchetto IP contiene l’indirizzo IP del mittente e l’indirizzo IP del destinatario.
Il router di casa inoltra il pacchetto verso la rete dell’operatore. Da lì, altri router leggono l’indirizzo IP di destinazione e decidono, passo dopo passo, quale percorso far seguire al pacchetto.
Internet si chiama anche rete TCP/IP perché si basa principalmente sui protocolli TCP e IP (Deering & Hinden, 2017; Postel, 1981):
Il nome TCP/IP indica quindi l’insieme di protocolli che permette ai computer di comunicare su Internet e su molte reti locali moderne.
Indirizzo IP
Un indirizzo IP, acronimo di “Indirizzo Protocollo Internet” (Internet Protocol address), è un numero univoco assegnato a ogni dispositivo collegato alla rete Internet (Hinden & Deering, 2006; Postel, 1981).
Questo indirizzo consente di identificare in modo univoco l’interfaccia di rete su Internet e permette il corretto instradamento dei dati da e verso il dispositivo.
Gli indirizzi IP possono appartenere a due versioni principali:
La versione storicamente più diffusa è IPv4, che usa indirizzi di 32 bit. A causa della crescita di Internet, lo spazio degli indirizzi IPv4 si è progressivamente esaurito (Internet Corporation for Assigned Names and Numbers [ICANN], 2011).
Per questo è stato introdotto IPv6, che usa indirizzi di 128 bit e offre uno spazio di indirizzamento enormemente più ampio (Deering & Hinden, 2017).
È importante specificare che l’indirizzo IP non si riferisce all’host ma alla sua interfaccia di rete. Per esempio (Hinden & Deering, 2006):
Ma perché esistono gli indirizzi IP se esistono gli indirizzi MAC?
Gli indirizzi IP sono necessari per l’instradamento globale, mentre i MAC sono limitati alla rete locale.
Le motivazioni sono le seguenti:
Gli indirizzi IP pubblici sono assegnati in blocchi dai RIR (Regional Internet Registries).
Gli ISP ottengono questi blocchi e li distribuiscono ai propri clienti, siano essi aziende, organizzazioni o utenti domestici (Internet Assigned Numbers Authority [IANA], n.d.).
Per ottimizzare l’uso degli indirizzi disponibili, gli ISP assegnano spesso IP dinamici.
Un nome di dominio può essere associato a uno o più indirizzi IP, e allo stesso modo un indirizzo IP può essere associato a uno o più domini.
Quando un dominio è associato a più indirizzi IP, il DNS non dirige direttamente il traffico, ma restituisce al dispositivo uno o più indirizzi disponibili.
La scelta può avvenire in modi diversi: il server DNS può alternare gli indirizzi restituiti, come nel DNS round-robin (il server DNS restituisce gli IP cambiando l’ordine in modo ciclico per dividere le visite), oppure selezionarli in base a criteri come la posizione geografica dell’utente, il carico dei server o la loro disponibilità. Una volta ricevuta la risposta DNS, sarà poi il dispositivo dell’utente a stabilire la connessione verso uno degli indirizzi IP ottenuti.
Gli indirizzi IP possono essere:
Indirizzo IP statico
Un indirizzo IP statico è un indirizzo configurato in modo stabile su un dispositivo o assegnato in modo fisso da un amministratore di rete o da un ISP (Droms, 1997).
Questo tipo di indirizzo è fisso e costante, il che significa che il dispositivo avrà sempre lo stesso indirizzo IP ogni volta che si connette alla rete. Gli indirizzi IP statici sono spesso utilizzati per server, dispositivi di rete critici e dispositivi che devono essere sempre raggiungibili tramite lo stesso indirizzo.
Indirizzo IP dinamico
Un indirizzo IP dinamico è un indirizzo assegnato temporaneamente a un dispositivo ogni volta che si connette alla rete.
Gli indirizzi IP dinamici sono gestiti da un server DHCP (Dynamic Host Configuration Protocol), che assegna automaticamente indirizzi IP ai dispositivi in base a un insieme di indirizzi disponibili (Droms, 1997).
Questi indirizzi possono cambiare ogni volta che il dispositivo si ricollega alla rete o dopo un certo periodo di tempo.
Gli indirizzi IP dinamici sono spesso utilizzati per dispositivi domestici e utenti comuni, poiché permettono di usare in modo più efficiente gli indirizzi disponibili: se un dispositivo non è collegato alla rete, il suo indirizzo può tornare disponibile ed essere assegnato ad altri dispositivi.
IPV4
L’indirizzo IPv4 è costituito da 32 bit (quattro byte) suddivisi in quattro gruppi da 8 bit (un byte), separati ciascuno da un punto (esempio: 11001001.00100100.10101111.00001111) (Postel, 1981).
Ciascuno di questi quattro byte può essere convertito in formato decimale per rendere più facile l’identificazione.
Ogni byte può assumere valori compresi tra 0 e 255, poiché 28=256, ovvero il numero di combinazioni disponibili con 8 bit.
Per questo un indirizzo IPv4 viene scritto come quattro numeri decimali separati da punti, per esempio 192.168.1.10.
Poiché un indirizzo IPv4 è costituito da 32 bit, le combinazioni disponibili sono 232, pari a circa 4 miliardi (Postel, 1981).
All’inizio questo numero sembrava enorme, ma con la crescita di Internet gli indirizzi IPv4 pubblici sono diventati insufficienti.
Oggi ogni persona può usare molti dispositivi connessi, come smartphone, computer, tablet, smart TV e dispositivi IoT.
Per ridurre il consumo di indirizzi pubblici sono state introdotte soluzioni come gli indirizzi privati, mentre IPv6 nasce per offrire uno spazio di indirizzamento molto più ampio (Deering & Hinden, 2017; Rekhter et al., 1996).
Approfondimento
Gli indirizzi IP sono adatti a reti molto grandi come Internet perché possiedono una struttura gerarchica, che permette di organizzare i dispositivi in reti e sottoreti.
Un indirizzo IP, infatti, non identifica soltanto un dispositivo, ma contiene anche informazioni sulla rete alla quale esso appartiene.
Questo permette ai router di gestire il traffico senza dover conoscere individualmente ogni dispositivo connesso a Internet.
Per esempio, immaginiamo che un operatore possieda un’intera rete identificata dal prefisso:
203.0.112.0/20
Dove:
All’interno di questa rete possono essere presenti migliaia di dispositivi, ciascuno con un proprio indirizzo IP.
Un router esterno, però, non deve memorizzare una rotta diversa per ciascuno di essi: può semplicemente sapere che tutti gli indirizzi appartenenti a quel prefisso devono essere inviati verso quell’operatore.
Il processo può quindi avvenire progressivamente:
Internet → ISP → sottorete → dispositivo
Man mano che il pacchetto si avvicina alla destinazione, i router utilizzano informazioni sempre più specifiche.
Questo principio prende il nome di aggregazione delle rotte e consente di ridurre enormemente la quantità di informazioni che i router devono conservare.
Gli indirizzi MAC funzionano diversamente.
Un indirizzo come:
3C:52:82:A1:43:11
identifica un’interfaccia di rete, ma non indica in quale rete essa si trovi. Due dispositivi con indirizzi MAC simili possono trovarsi in parti completamente diverse del mondo. Il MAC non possiede quindi una struttura che permetta ai router di raggruppare facilmente i dispositivi in base alla loro posizione nella rete.
Se Internet utilizzasse direttamente gli indirizzi MAC per l’instradamento, i router dovrebbero teoricamente mantenere informazioni molto più dettagliate sui singoli dispositivi e sulla loro posizione.
Con gli indirizzi IP, invece, è possibile rappresentare interi gruppi di dispositivi attraverso pochi prefissi di rete.
Un’analogia utile è quella del sistema postale. Un indirizzo postale è organizzato gerarchicamente:
Italia → Lombardia → Milano → Via Roma → numero 15
Un centro postale nazionale non ha bisogno di conoscere direttamente la posizione della singola abitazione: deve inizialmente sapere soltanto che una lettera destinata a Milano deve essere inviata verso Milano.
Saranno poi i centri di smistamento successivi a individuare progressivamente la zona, la via e infine il numero civico.
Un indirizzo MAC sarebbe invece più simile a un codice identificativo personale privo di indicazioni geografiche. Conoscere il codice permetterebbe di sapere chi è il destinatario, ma non dove inviare la lettera.
Per questo i due indirizzi hanno funzioni differenti e complementari: l’indirizzo IP permette di individuare una destinazione all’interno di una rete gerarchica e di instradare i pacchetti su larga scala, mentre l’indirizzo MAC viene utilizzato principalmente per identificare le interfacce e consegnare i pacchetti all’interno del collegamento locale.
Indirizzo privato e pubblico
Un indirizzo IP privato è un indirizzo IP assegnato a un dispositivo all’interno di una rete locale, come una rete domestica o aziendale, e non è direttamente accessibile o indirizzabile su Internet (Rekhter et al., 1996).
Un indirizzo IP pubblico è un indirizzo instradabile su Internet. Questo significa che può essere usato per identificare un dispositivo o un router nella rete globale e può essere raggiunto da altri host su Internet, se firewall e configurazioni lo permettono.
Gli indirizzi IP privati funzionano all’interno delle reti locali.
Quando un dispositivo deve comunicare con Internet, il router traduce il suo indirizzo IP privato in un indirizzo IP pubblico. In questo modo, più dispositivi della stessa rete locale possono condividere un unico indirizzo IP pubblico, senza bisogno di avere un indirizzo pubblico diverso per ciascuno (Srisuresh & Egevang, 2001).
Quindi, avere indirizzi privati porta questi vantaggi:
Grazie a questa tecnica, gli ISP solitamente assegnano un solo indirizzo IP pubblico per ogni utente, anche se egli ha decine di device che si collegano a Internet.
Quindi, ricapitoliamo:
Esempio
Immagina di avere una rete domestica con più dispositivi, tra cui computer, telefoni cellulari, stampanti e smart TV. Tutti questi dispositivi si collegano a un router Wi-Fi per accedere a Internet.
In questa situazione, il router assegnerà a ciascun dispositivo un indirizzo IP privato dall’intervallo di indirizzi IP privati (ad esempio, 192.168.1.2, 192.168.1.3, ecc.).
Quando uno di questi dispositivi accede a Internet, il router traduce l’indirizzo IP privato del dispositivo in un singolo indirizzo IP pubblico assegnato dall’ISP.
Questo indirizzo IP pubblico è ciò che i server su Internet vedono quando il dispositivo invia richieste.
Esempio pratico:
Ma come fa esattamente il router a trasformare un IP privato in pubblico (o viceversa)?
Il NAT (Network Address Translation) è una tecnica che consente a più dispositivi di una LAN di condividere un unico indirizzo IP pubblico quando si collegano a Internet (Srisuresh & Egevang, 2001; Srisuresh & Holdrege, 1999).
Quando un dispositivo della LAN invia una richiesta verso Internet usando il suo IP privato, il NAT del router interviene in questo modo (Srisuresh & Egevang, 2001):
Quando il server risponde, invia il pacchetto all’IP pubblico del router e alla porta usata dal NAT.
A questo punto:
Nota: Nel linguaggio comune si parla spesso semplicemente di NAT. Però ora abbiamo descritto una variante evoluta del NAT: questa variante è chiamata più precisamente PAT o NAPT, ed è quella usata comunemente nelle reti domestiche.
Esempio
Immagina questa situazione:
1. Invio della richiesta
Il tuo PC manda un pacchetto a 93.184.216.34 (porta 80), ma non può uscire su Internet con un IP privato, quindi il router, tramite il NAT, modifica il pacchetto:
| Porta pubblica | IP interno | Porta interna |
|---|---|---|
| 60001 | 192.168.1.100 | 54321 |
2. Ricezione della risposta
IPV6
Pv6 è una versione più recente del protocollo IP, introdotta soprattutto per risolvere il problema della scarsità degli indirizzi IPv4 (Deering & Hinden, 2017).
La differenza più evidente è l’aumento dello spazio di indirizzamento: mentre IPv4 usa indirizzi da 32 bit, IPv6 usa indirizzi da 128 bit.
La differenza è visibile già dal formato degli indirizzi:
Con 128 bit, rappresentati in forma esadecimale per motivi di leggibilità, si possono generare molti più indirizzi IP unici rispetto a quelli che utilizzano 32 bit (Hinden & Deering, 2006).
Questa differenza di quantità diventa più chiara tramite un confronto: mentre lo spazio di indirizzamento dell’IPv4 con i suoi 4,3 miliardi di IP non basta per dotare tutte le persone sul pianeta di un unico indirizzo, con un sistema a 128 bit teoricamente si potrebbe dotare ogni granello di sabbia sul pianeta di un indirizzo IP.
I 128 bit di un indirizzo IPv6 sono suddivisi in 8 blocchi di 16 bit (Hinden & Deering, 2006).
Tramite una scrittura esadecimale si può annotare un blocco di 16 bit con 4 cifre e lettere (i due punti sono utilizzati come elemento di separazione).
Esempio
2001:0620:0000:0000:0211:24FF:FE80:C12C
Per strutturare l’indirizzo IPv6 in un modo più agevole, si è affermata una forma di scrittura più breve (Kawamura & Kawashima, 2010):
Esempio
2001:0620:0000:0000:0211:24FF:FE80:C12C
diventa
2001:620:0:0:211:24FF:FE80:C12C
Questi indirizzi si possono compattare ancora: per ogni indirizzo IPv6 è possibile omettere i blocchi esadecimali consecutivi composti interamente da zeri lasciando al loro posto il simbolo “::” (Kawamura & Kawashima, 2010).
La compressione con il simbolo :: può essere usata una sola volta all’interno dello stesso indirizzo IPv6. Se venisse usata più volte, non sarebbe più possibile capire quanti blocchi di zeri sono stati omessi in ciascun punto (Kawamura & Kawashima, 2010).
Esempio
2001:0620:0000:0000:0211:24FF:FE80:C12C
diventa
2001:620:0:0:211:24FF:FE80:C12C
diventa
2001:620::211:24FF:FE80:C12C
Con IPv6, grazie all’enorme quantità di indirizzi disponibili, diventa meno necessario usare NAT per far condividere a molti dispositivi lo stesso indirizzo pubblico.
L’obiettivo di IPv6 è permettere a molti dispositivi di avere un indirizzo globale univoco.
Esistono comunque indirizzi IPv6 pensati per l’uso interno alle reti locali, chiamati Unique Local Address (ULA) (Hinden & Haberman, 2005).
Questi indirizzi non sono destinati a essere instradati sulla rete Internet globale.
Gli ULA servono per dare indirizzi IPv6 stabili e utilizzabili solo internamente, senza esporre quei dispositivi alla rete Internet globale (per esempio una stampante ha bisogno di comunicare all’interno della propria LAN, non con l’intera rete Internet).
Nonostante IPv6 risolva molti limiti di IPv4, gli indirizzi IPv4 sono ancora molto usati.
Il motivo principale è che Internet è nata e si è sviluppata per molti anni usando IPv4, quindi una grande quantità di reti, dispositivi, server, software e configurazioni continua a supportarlo.
Passare completamente a IPv6 richiede tempo, aggiornamenti tecnici e compatibilità tra sistemi diversi.
Per questo oggi IPv4 e IPv6 convivono: molte reti usano ancora IPv4, spesso con tecniche come NAT e indirizzi privati, mentre IPv6 viene introdotto progressivamente per permettere una crescita più ampia e moderna della rete (Deering & Hinden, 2017).
Routing
Dopo aver visto gli indirizzi IP, possiamo chiederci come un pacchetto riesca a raggiungere una rete lontana.
Il routing è il processo mediante il quale viene determinato il percorso ottimale (il percorso più adatto secondo le informazioni disponibili e le regole configurate) attraverso il quale i dati vengono instradati da un punto di origine a una destinazione all’interno di una rete o tra diverse reti (Baker, 1995).
I router mantengono tabelle di routing che contengono informazioni sulle reti raggiungibili e sul prossimo passo da seguire per raggiungerle. Questo prossimo passo può essere un altro router, chiamato next hop, oppure una rete direttamente collegata al router (Baker, 1995).
Le rotte possono essere apprese e aggiornate dinamicamente dai router in risposta a cambiamenti nella topologia di rete o nelle condizioni della rete.
Questo permette alle tabelle di routing di adattarsi ai cambiamenti della rete.
Dopo che il routing ha stabilito la rotta ottimale, il processo di forwarding (inoltro) è invece l’operazione concreta con cui il router prende un singolo pacchetto, legge il suo indirizzo IP di destinazione, consulta la tabella di routing e lo inoltra attraverso l’interfaccia di uscita corretta. Questo processo assicura che il pacchetto raggiunga la sua destinazione finale attraverso la rete nel miglior modo possibile (Baker, 1995).
Ecco come funziona il processo di forwarding in un router:
Le tabelle di routing possono essere configurate manualmente dall’amministratore di rete oppure aggiornate automaticamente tramite protocolli di routing. Questi protocolli permettono ai router di scambiarsi informazioni sulle reti raggiungibili e di adattarsi ai cambiamenti della rete (Baker, 1995).











No responses yet