[Reti] Livello di rete parte 2

Internet 100016261 Large

[Reti] Livello di rete parte 2

0

Continuiamo a parlare del livello di rete, parlando del Network Address Translation ( o più conosciuto col nome di NAT), il protocollo ICMP che abbiamo usato indirettamente alcuni articoli fà e come capiamo il funzionamento di Ping e Traceroute.

E’ detta sottorete, una rete isolata i cui punti terminali sono collegati all’ interfaccia di un host o di un router.

Con una subnet mask ( o maschera di sottorete) /24, indichiamo che ogni Host connesso alla sottorete 233.1.1.0/24 avrà un indirizzo della forma 233.1.1.xxx.

La notazione CIDR ha reso molto più flessibile l’ assegnazione di blocchi di indirizzi a aziende, istituzioni e privati. Ma una volta assegnato un blocco, che succede se l’ entità che ha ricevuto il blocco ha bisogno di un numero maggiore di indirizzi?

E se il blocco successivo è già assegnato?

Per risolvere a questo inconveniente, usiamo gli indirizzi privati: sottoreti small office, home office (SOHO) hanno cominciato a proliferare ed ogni volta che si vuole installare una rete locale per connettere più macchine, l’ ISP deve allocare un intervallo di indirizzi per coprire la sottorete.

Per risolvere questo problema, alcuni intervalli di indirizzi sono privati:

Indirizzi CIDR
10.0.0.0 – 10.255.255.255 10.0.0.0/8
172.16.0.0 – 172.31.255.255 172.16.0.0/12
192.168.0.0 – 192.168.255.255 192.168.0.0/16

Si utilizza poi il protocollo di traduzione degli indirizzi di rete, conosciuto col nome di NAT.

Questo che comporta? Al nostro router abilitato al NAT verrà fornito un indirizzo IP univoco, con cui chiunque si connette alla rete attraverso quel router apparirà possessore.

I router abilitati di NAT nascondono i dettagli della rete domestica al mondo esterno: inoltre non è necessario allocare un intervallo di indirizzi da un ISP mentre un unico indirizzo IP è sufficiente per tutte le macchine di una rete locale.

E’ possibile cambiare gli indirizzi delle macchine di una rete privata senza doverlo comunicare all’ Internet globale, ed è possibile viceversa cambiare ISP senza modificare gli indirizzi delle macchine connesse alla rete privata.

I dispositivi interni alla rete non sono poi esplicitamente indirizzabili e visibile dal mondo esterno e ciò garantisce quindi maggiore sicurezza.

Network Address Translation

Quando un router NAT riceve un datagramma, genera per esso un numero di porta di origine che và a sostituire al numero di porta origine presente nel pacchetto, e sostituisce l’ indirizzo IP d’origine col proprio.

Eseguirà poi il procedimento inverso quando invece riceverà il pacchetto dall’ host remoto.

Essendo il campo numero di porta lungo 16 bit, il protocollo NAT permette di gestire più di 60.000 connessioni simultanee con un solo indirizzo ip sul lato WAN. Ad ogni modo, vinee contestato perchè:

  • I router dovrebbero elaborare i pacchetti solo fino al livello 3 (rete),
  • Il numero di porte viene usato per identificare Host e non processi (Azz),
  • Viola il cosidetto argomento punto-punto secondo cui gli host dovrebbero comunicare tra loro direttamente senza intromissione di nodi nè di modifiche di indirizzi ip e numeri di porta. Per ovviare alla scarsità di indirizzi IP si dovrebbe usare IPv6.
  • Interferisce con le applicazioni P2P in cui ogni peer dovrebbe essere in grado di avviare una connessione TCP con qualsiasi altro peer, a meno che il NAT non sia specificamente configurate per quella specifica applicazione P2P.

Vediamo un esempio dei problemi che può causare il NAT: un client si vuole connettere ad un server di una sottorete, con indirizzo 10.0.0.1. La sottorete è coperta da un router con NAT abilitato, il che vuol dire che c’è un unico indirizzo IP. Come fà il client esterno alla sottorete a riferirsi a quel server?

1. Possiamo configurare staticamente il NAT per inoltrare le richieste di collegamento entranti a quella data porta del server (tipo una richiesta al nostro router 122.22.45.7 sulla porta 2500 viene inoltrata sempre a 10.0.0.1 sulla porta 2500).

2. Universal Plug and Play (UPnP): usiamo questo protocollo che permette di scoprire e configurare il NAT. Consente agli host coperti da NAT di conoscere gli indirizzi IP pubblici e richiedere una corrispondenza NAT per un qualsiasi numero di porta( a scelta).

Ad esempio:

  • BitTorrent su 10.0.0.1 e porta 3345 vuole accettare connessioni all’ esterno.
  • Richiede al NAT di creare un’ apertura che faccia corrispondere (10.0.0.1, 3345) a (122.22.45.7, 50001) dove 5001 è scelto dall’ applicazione
  • Bittorrent può annunciare il proprio tracker su (122.22.45.7, 5001) e NAT opera da traduttore

Forwarding datagrammi IP

Con Inoltro(Forwarding) si intende inviare un pacchetto in input al giusto output del router che lo porterà o a destinazione o comunque un hop più vicino.

Sostanzialmente, col forwarding dei datagrammi IP intendiamo inviare il datagramma al prossimo hop di destinazione. Quando un host deve inviare un datagramma, lo invia al router della rete locale il quale accede alla tabella di routing per trovare il successivo hop a cui inviarlo.

L’ inoltro quindi richiede una riga nella tabella per ogni blocco di rete.

Internet Control Message Protocol (ICMP)

Un’altro protocollo che troviamo al livello di rete è l’ ICMP. E’ possibile trovarlo all’ interno del campo dati di IP (vediamo meglio fra poco).

Viene usato da host e routers per potersi scambiare informazioni al livello di rete: un tipico utilizzo di ICMP è quello di creare un meccanismo di feedback quando un messaggio IP viene inviato.

Ad esempio: un host A invia un datagramma IP ad un host B che si trova a 3 routers di distanza, il terzo router sul percorso rileva un errore di qualche tipo col pacchetto. Invia un feedback ad A (non può comunicare con ICMP ai due routers intermedi) dicendo che c’è stato un errore e se possibile spiega come risolverlo.

Serve quindi come Report degli errori ed anche se di fatto sfrutta IP, è considerato parte di esso. I messaggi ICMP hanno un campo tipo e uno codice, contengono poi l’ intestazione e i primi 8 byte del datagramma IP che ha provocato la generazione del messaggio. Vediamo alcuni tipi di messaggi:

Tipo codice Descrizione
0 0 Risposta eco (a ping)
3 0 rete destinazione irraggiungibile
3 1 host destinazione irraggiungibile
4 0 riduzione (controllo di congestione)
8 0 richiesta eco
11 0 TTL scaduto
12 0 errata intesazione IP

Ping

Avete mai pingato un server? Questo programma, ping, si basa proprio su messaggi di richiesta e risposta echo di ICMP:

ping informaticalab.com
Esecuzione di Ping informaticalab.com [108.162.199.183] con 32 byte di dati:
Risposta da 108.162.199.183: byte=32 durata=63ms TTL=54
Risposta da 108.162.199.183: byte=32 durata=51ms TTL=54
Risposta da 108.162.199.183: byte=32 durata=343ms TTL=54
Risposta da 108.162.199.183: byte=32 durata=500ms TTL=54

Statistiche Ping per 108.162.199.183:
    Pacchetti: Trasmessi = 4, Ricevuti = 4,
    Persi = 0 (0% persi),
Tempo approssimativo percorsi andata/ritorno in millisecondi:
    Minimo = 51ms, Massimo =  500ms, Medio =  239ms

Traceroute

Adesso che ne abbiamo le conoscenze, rivediamo questo programma già visto diversi articoli fà: traceroute invia una serie di datagrammi IP alla destinazione ciascuno contenente un segmento UDP con un numero di porta inutilizzata e:

  1. Il primo con TTL=1 (“muore” al primo router)
  2. Il secondo a TTL = 2 (“muore” al secondo router)

ecc.

Utilizza un numero di porta improbabile e l’ origine avvia un timer ogni volta che un datagramma viene inviato.

  • Quando poi l’ n-esimo datagramma arriva all’ n-esimo router:
  • Il router scarta il datagramma
  • Invia all’ origine un messaggio di allerta ICMP (tipo 11, codice 0)
  • Il messaggio include il nome del router e l’indirizzo ip
  • Arrivato il messaggio ICMP viene calcolato l’ RTT

L’ RTT di ogni Hop viene calcolato 3 volte (ovvero vengono inviati 3 pacchetti).

 

About the Author

Federico PonziStudente, Webmaster ed appassionato di tutto ciò che è informatico con una spruzzata di scienza.View all posts by Federico Ponzi

Leave a Reply