giovedì, Novembre 21, 2024

Routing: come si muovono i dati in rete

AreaNetworking.it
AreaNetworking.ithttps://www.areanetworking.it
AreaNetworking.it è tra i principali e più storici media italiani del settore ICT. Nato nel 2003 per opera di Federico Lagni, l'attività del gruppo è sia online - con il portale rivolto a figure professionali ICT (IT Manager, CTO, Security Specialist, Datacenter Engineer, etc) - sia offline con l'organizzazione delle più importanti conferenze italiane su temi tecnologici.

Autore: Enrico Betti

Ricapitolando i punti visti in precedenza, (vedi “Introduzione ai protocolli di rete” ) la nostra rete è composta da macchine in grado di inviarsi dei pacchetti l’una con l’altra e di uno strato software che permette a questi pacchetti di diventare “sicuri”, o di essere sostituiti da uno stream e quindi consentire una comunicazione a carattere.

Ora è il momento di analizzare le modalità con cui questi pacchetti vengono smistati attraverso la rete e quindi come funziona il meccanismo di invio di pacchetti da un utente all’altro di Internet.

Tutte le macchine di Internet sono infatti normali macchine su cui gli utenti lavorano e non ci sono, o almeno non ci dovrebbero essere, macchine dedicate al solo smistamento e passaggio di dati. Inoltre, non è pensabile (o almeno non lo era alcuni anni fa) che una macchina mantenga tutte le informazioni sulla struttura della rete, che gli algoritmi siano talmente pesanti da impedire all’utente della macchina di lavorare o che la rete cambi secondo regole “imposte” in modo da semplificare l’instradamento.

La nostra situazione è questa: Io dalla macchina 185.6.7.8 (ad esempio), voglio raggiungere un sito, la cui macchina ha come indirizzo 189.65.4.3. Posso limitarmi ad inviare il pacchetto dalla mia “linea di uscita” e sperare che arrivi a destinazione.

Una macchina intermedia è necessariamente una macchina connessa a più reti e quindi avrà più porte di rete e più indirizzi IP, dato che un indirizzo identifica univocamente una “porta” in rete.
Riceverà il mio pacchetto ad una delle sue porte: non “conoscendo” né me né l’altra macchina, invierà questo pachetto ad un’altra delle sue porte (una qualunque – non quella da cui è arrivato la prima volta – generalmente sceglie la porta dove il traffico è maggiore).

Il pacchetto quindi continua a girare: per impedire che un pachetto giri per la rete all’infinito questo contiene un contatore di salti, che viene decrementato ad ogni passaggio: se un pacchetto non è ancora giunto a destinazione dopo aver attraversato N (numero fisso che non ricordo) macchine, viene distrutto.

Avendo ricevuto il mio pacchetto la macchina ha potuto però reperire alcune informazioni: infatti il pacchetto contiene l’indirizzo IP dell’autore e un elenco di IP delle ultime sedici macchine che il pacchetto ha attraversato, assieme al contatore di “salti”.

La macchina scopre quindi che per accedere a me, e a tutti gli IP indicati, deve inviare i pacchetti attraverso la porta da cui ha ricevuto il mio. E sa quanti salti sono necessari attraverso questa porta.

Supponiamo ora che abbia inviato il mio pacchetto alla porta sbagliata e questo è possibile dato che il primo invio avviene a caso: questo pacchetto tornerà indietro e quindi mi darà modo di avere informazioni sugli IP che posso trovare da questa porta.

A questo punto posso limitarmi ad inviare il pacchetto ad un ulteriore porta, sperando che questa volta arrivi.

Mantenendo queste informazioni è possibile costruire una tabella, detta “tabella di routing”, da usare per consultazione per definire dove un pacchetto deve essere inviato.
Non posso mantenere in tabella i dati di tutta internet, ma posso mantenere i dati delle macchine più vicine e questo può essere discriminato vedendo quante macchine il pacchetto IP ha già attraversato. Anche il numero di “salti” per arrivare al mittente viene mantenuto in tabella.

Router

Le macchine in grado di fare questa operazione, cioè di instradare pacchetti attraverso la rete in maniera trasparente sono tutte, tranne ovviamente Windows.
Una macchina utilizzata per smistare pacchetti tra più reti in questo modo è detta “Router”, cioè instradatore.
Un router appena installato è quindi lento e può perdere i pacchetti che vi vengono inviati, ma andando avanti riuscirà a smistare i pacchetti sempre più velocemente.
I tempi di apprendimento sono però abbastanza lunghi, e virtualmente infiniti, in quanto non accadrà mai che tutte le macchine di internet inviino pacchetti allo stesso router, per quanto lontano.
Per fare in modo di abbreviare l’apprendimento di un router, quando questo entra in rete, gli altri router della rete stessa gli “insegnano” quali siano i percorsi da utilizzare per i dati.

Questo è possibile sempre sfruttando le informazioni conenute nel primo pacchetto IP ricevuto: infatti ho l’elenco di tutte le macchine intermedie, e ciascuna di queste è per forza un router.
Se un router si accorge della presenza di un altro router può inviare a questo la propria tabella di routing: l’altro router può accettare i dati di questa tabella e aggiungerli alla sua, aggiungendo uno ad ogni “distanza” del mittente.
In pratica il primo router comunica al secondo che è in grado di raggiungere un indirizzo in N salti. Il secondo, se non conosce un percorso migliore, lo può raggiungere in N+1 salti inviando il pacchetto a router1.

Il secondo router solitamente risponde al primo con la propria tabella di routing e questa comunicazione è normalmente ripetuta parecchie volte al giorno. Quindi un nuovo router inserito in rete, dopo poche ore di funzionamento, probabilmente avrà già informazioni tali da instradare correttamente pacchetti per qualunque punto di Internet.

Vi sono casi particolari in cui non è necessario un oggetto così “complesso” come un router ma è comunque necessario avere apparati in grado di smistare pacchetti o addirittura di limitarne il passaggio.

Un Gateway è un router con due sole porte di rete: una delle quali è connessa ad internet, e l’altra ad una semplice sottorete. Una sottorete è una rete le cui macchine hanno tutte l’indirizzo IP che inizia con gli stessi bytes. Il gateway ha un modo estermamente semplice di capire se un pacchetto deve essere mantenuto all’ interno della sottorete o se va inviato all’esterno.

Allo stesso modo, ogni pacchetto che arriva da Internet ed è diretto alla sottorete deve passare, mentre tutti gli altri devono essere rimandati al mittente.
Non ha quindi necessità di una tabella di routing, ma solo di una netmask: una netmask è un numero a 4 bytes, di cui sono a 1 tutti i bit corrispondenti alla parte dell’indirizzo di rete che nella mia sottorete non cambia, e a zero gli altri.

Ad esempio se la mia sottorete ha indirizzi da 198.3.4.0 a 198.3.4.7, avrò una netmask di 255.255.255.251.

Switch

Uno switch è un semplice router che collega più schede di rete, di una stessa sottorete.
A ciascuna delle porte dello switch trovo una scheda di rete e quindi la tabella di routing si semplifica: infatti tutte le macchine sono ad un “salto” di distanza, e a tutte le porte dello switch corrisponde un solo indirizzo IP.
Molti switch hanno anche una porta di uscita, cioè una porta a cui instradano tutti i pacchetti che non riguardano la sottorete, e i cui pacchetti inviano alla macchina corretta della sottorete o rimandano “al mittente”. Questo non complica la tabella di routing, e quindi gli switch rimangono macchine molto semplici.

La differenza fondamentale tra una rete connessa con dei routers ed una rete connessa con degli switch è che la prima può essere a maglia, mentre la seconda deve per forza essere organizzata ad albero.

Firewall

Il firewall è una macchina con due schede di rete, il cui comportamento è estremamente semplice: tutti i pacchetti che provengono dalla prima rete vengono instradati sulla seconda e viceversa.
Quindi per le macchine sulle due reti il firewall è completamente “trasparente”, cioè si comporta come se sul cavo non ci fosse alcuna macchina.
La differenza è in termini di sicurezza. Infatti è possibile istruire una macchina firewall per impedire il passaggio di pacchetti secondo determinate condizioni: Così è possibile inibire il passaggio di pacchetti per una determinata macchina, rendendola inaccessibile dall’altra rete, o inibire i pacchetti DA questa macchina, rendendole impossibile l’accesso alle risorse sull’altra rete, o ancora fare qualcosa di più selettivo: ad esempio impedire che i pacchetti, da una certa macchina possano accedere alla porta N. XX di un altra macchina.
I pacchetti che il firewall non vuole non vengono rimandati indietro, in quanto potrebbero trovare un altro percorso, ad esempio un modem collegato in internet, e quindi per sicurezza vengono “bruciati”.
Un caso utile è inibire la porta 25 per tutti i pacchetti provenienti dall’esterno di una rete interna di un azienda e inibire l’uscita di tutti i pacchetti diretti alla porta 25 che attraversano il firewall.

Questo permette all’azienda di mantenere internamente un proprio servizio di mail, tra tutte le macchine, senza permettere che i messaggi di posta possano uscire verso l’esterno o che un messaggio possa arrivare da fuori dell’ azienda stessa. Tutto questo permettendo l’accesso ad altre risorse di internet, come il web.

Proxy e IPv6

Negli ultimi anni, il crescere di dimensioni della rete Internet ha portato ad un altro problema piuttosto grave.
La rete infatti è inizialmente stata progettata per collegare tra loro alcune università, e non per raggiungere con una, o addirittura più “foglie” ogni casa del mondo civilizzato, come sta succedendo ora, e con una crescita esponenziale.

Quello che accade è quindi che l’indirizzo a quattro bytes che individua univocamente una macchina in internet non è più sufficiente per tutti i computers che alla rete sono stati collegati.

Oggi la soluzione al problema è in fase di attuazione ed è l’IPv6 cioè un equivalente del protocollo IP in cui però gli indirizzi saranno a sei bytes, aumentando di 65536 volte la quantità di macchine che la rete sarà in grado di supportare.

Intanto si è però ricorsi a soluzioni alternative.
Le macchine più esterne di Internet sono dette provider: Un provider è una macchina che ha un indirizzo IP fisso, N modem, e può assegnare a ciascuna linea modem uno di altri N indirizzi. Cosi’ un provider locale puo’ ad esempio avere un ip “statico” come 192.34.5.0, e altri sette IP da assegnare a sette linee modem, generalmente successivi (192.34.5.1 .. 192.34.5.7).

Quando l’utente domestico si collega al proprio provider, non utilizza inizialmente IP, ma PPP (Point to point protocol), tramite il quale uno degli IP disponibili del provider viene temporaneamente assegnato alla macchina.
La macchina diventa quindi una macchina di internet, ma solo fino a quando la connessione sarà attiva.. Inoltre un provider con sette linee può portare ad esempio cento utenti, di cui sette contemporanei, e quindi lo stesso IP sarà probabilmente assegnato pochi minuti dopo ad un altro utente.

Questo consente quindi alla macchina cliente di accedere a tutti i servizi forniti dalle altre macchine di internet, ma non di fornirne di propri, in quanto il suo IP può essere revocato o cambiare molto rapidamente, e quindi non sarebbe utile mantenere attivo ad esempio un web server.

Un altra soluzione per risparmiare indirizzi IP è quella da affidarsi ad un “proxy”.

Supponiamo di essere nel caso di una rete di più macchine, ma di avere a nostra disposizione un solo indirizzo IP: In questo caso una sola delle nostre macchine potrà essere connessa ad internet, in quanto le altre avrebbero un indirizzo che in qualche modo “replica” l’indirizzo di una macchina già esistente, e quindi i pacchetti per noi o per l’altra macchina potrebbero mischiarsi causando problemi di comunicazione. La macchina “proxy” andrà quindi configurata per impedire ai pacchetti delle altre macchine di uscire all’esterno.
La macchina proxy può però usufruire dei servizi di Internet.

Allora la soluzione è di chiedere ad esempio una pagina che ci interessa alla macchina proxy anzichè alla rete stessa. Sarà il proxy a cercare per noi la pagina in Internet, la riceverà e ce la invierà.
Il servizio di proxy si usa normalmente per l’FTO e l’HTTP, cioè per i due servizi che insieme costituiscono il web: Tutte le nostre macchine sono allora in grado allora di accedere al web anche senza appartenere ad Internet.
Anche in questo caso il proxy funzona in una sola direzione: le noste macchine non possono fornire servizi verso l’esterno.
La soluzione classica è di inserire i servizi “sul nostro proxy”, e utilizzarlo come server anzichè sparpagliare i servizi tra le macchine della sottorete.

Articoli correlati

Noleggia una Tesla per il tuo evento ICT!

Categorie