Livello di rete e indirizzamento IP
In questa pagina 7
In questa pagina 8
Che cosa fa il livello di rete
Il livello di rete (network layer) sta sopra il livello di collegamento (Modello ISO-OSI e pila TCP-IPUna comunicazione tra due calcolatori è un problema troppo vario (segnali, errori, accesso al mezzo, instradamento, controllo di flusso, rappresentazione dei dati) per un solo protocollo, quindi si divide in strati (layer). Il modello ISO/OSI ha 7 livelli (fisico, collegamento, rete, trasporto, sessione, presentazione, applicazione); la pila TCP/IP riunisce gli ultimi tre in un solo livello applicazione, quindi ne ha 5. Ogni livello offre un servizio a quello sopra e parla solo con il livello pari dell'altro nodo tramite PDU; scendendo si aggiunge un'intestazione (PCI): incapsulamento. Indirizzi: MAC (collegamento, locale), IP (rete, globale).Modello ISO-OSI e pila TCP-IP →) e sotto il livello di trasporto: riceve i servizi dal collegamento dati e li offre al trasporto. Il suo compito è la consegna da host a host (host-to-host) dei datagrammi, attraverso tanti collegamenti diversi: per questo il suo protocollo gira in ogni router, non solo negli host finali. (Il livello di trasporto, invece, vive solo negli host: Livello di trasporto - porte e multiplexingIl livello di trasporto (transport layer) offre la comunicazione logica end-to-end tra processi applicativi di host diversi, ed è realizzato solo negli host finali, non nei router. Il livello di rete consegna al computer giusto (indirizzo IP), il trasporto consegna al processo giusto (numero di porta di 16 bit, 0-65535). Una porta più un indirizzo IP formano un socket; la quaterna (IP sorgente, porta sorgente, IP destinazione, porta destinazione) identifica una connessione. I servizi sono: comunicazione processo-processo, indirizzamento, incapsulamento/decapsulamento, multiplexing/demultiplexing e, se il protocollo è affidabile, controllo di errore, di flusso e di congestione. I protocolli sono UDP (senza connessione, inaffidabile), TCP (con connessione, affidabile) e SCTP (combina i due).Livello di trasporto - porte e multiplexing →.)
Un'analogia che aiuta: un viaggio da Padova a New York. La modalità di trasporto (treno, aereo, nave) corrisponde al livello di collegamento; l'agenzia di viaggio, che decide quali tappe fare, al routing; il singolo cambio a ogni aeroporto, al forwarding.
I servizi del livello di rete sono tre:
- Incapsulamento (framing). L'host mittente riceve il segmento dal trasporto, aggiunge un'intestazione (la PCI, protocol control information) con gli indirizzi di rete di sorgente e destinazione e altre informazioni, e consegna il datagramma al livello di collegamento. L'host destinatario fa l'operazione inversa e consegna il carico utile (payload) al trasporto. I router intermedi non possono decapsulare né cambiare gli indirizzi sorgente e destinazione: li leggono soltanto, per decidere dove inoltrare il pacchetto.
- Instradamento (routing). Esistono molti percorsi possibili tra sorgente e destinazione; il livello di rete deve trovare il migliore. Lo fa con i protocolli di instradamento (routing protocols), che coordinano e mantengono le tabelle usate quando arriva un pacchetto: Algoritmi di instradamento - link state e distance vectorL'instradamento (routing) trova il percorso di costo minimo in un grafo pesato in cui i router sono nodi e le reti tra due router sono archi. Link state: ogni router diffonde con un flooding i pacchetti LSP sui propri collegamenti, ricostruisce tutto il grafo e applica Dijkstra (nodi con stato (distanza, permanente o temporaneo)). Distance vector: ogni router conosce solo i vicini e scambia con loro il proprio vettore delle distanze, aggiornato con Bellman-Ford $D_{A,w}=\min{D_{A,w},,D_{A,Y}+d_{Y,w}}$; converge in al più $n-1$ giri ma può soffrire del conteggio all'infinito (limite a 16, hold down, aggiornamenti immediati, split horizon con poison reverse). Path vector: ogni annuncio porta l'intero cammino, si sceglie per politica e non per costo, e i cicli si scoprono trovando sé stessi nel cammino. Dijkstra è corretto se i costi sono non negativi (invariante: un nodo permanente ha già la distanza vera); Bellman-Ford è corretto perché dopo $k$ giri conosce i cammini minimi con al più $k+1$ archi.Algoritmi di instradamento - link state e distance vector →.
- Inoltro (forwarding). Quando un pacchetto arriva a un'interfaccia di ingresso del router, il router guarda un campo dell'intestazione (di solito l'indirizzo di destinazione), consulta la forwarding table e trova il numero dell'interfaccia di uscita: Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →.
Altri servizi che in teoria spetterebbero al livello di rete (controllo degli errori, del flusso, della congestione, qualità del servizio, sicurezza) in Internet sono lasciati ai livelli superiori, per mantenere semplice il livello di rete. L'unica eccezione è la sicurezza, realizzata da un sottolivello virtuale aggiuntivo detto IPSec.
I protocolli del livello di rete
Il livello di rete di Internet si può pensare come un protocollo principale e tre ausiliari:
Perché servono i router: l'interconnessione di reti
L'idea di internetworking nasce dal bisogno di interconnettere reti di calcolatori, anche molto diverse tra loro, per condividere informazioni e risorse di calcolo. Servono dispositivi (i router) e reti di comunicazione: un router parla con i calcolatori della rete a cui è collegato e con gli altri router. Un datagramma passa quindi di rete in rete, e a ogni router si decide il collegamento di uscita (Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →).
Tre modi per indicare lo stesso host
Lo stesso computer ha tre identificatori, uno per livello:
- nome dell'host (livello applicazione):
giordani.dei.unipd.it; - indirizzo Internet (IP) (livello di rete):
147.162.97.17; - indirizzo MAC (livello di collegamento):
0:0:c:6:13:4a.
Il passaggio dal nome all'IP lo fa il DNS (livello applicazione); quello dall'IP al MAC lo fa ARP.
L'indirizzo IPv4
Definizione (indirizzo IPv4). È un numero di 32 bit che identifica la connessione di un dispositivo a Internet (non il dispositivo: un router con tre interfacce ha tre indirizzi). È univoco (un indirizzo individua una sola connessione) e universale (lo schema è accettato da qualunque host). Si scrive in notazione decimale puntata (dotted-decimal): i 32 bit sono divisi in 4 byte e ogni byte è scritto come numero tra 0 e 255.
Esempio. è . Ogni byte si converte in decimalesommando le potenze di 2 (128, 64, 32, 16, 8, 4, 2, 1) delle posizioni in cui il bit vale 1Basi di numerazione e conversioni - binario, ottale ed esadecimale →: , , , .
Con 32 bit ci sono indirizzi: ogni bit può valere 0 o 1 e i bit sono indipendenti, quindi le configurazioni sono ( volte). In generale con bit si contano valori, e viceversa servono bit per distinguere valori (Esponenziale e logaritmoLa funzione esponenziale a^x (base positiva diversa da 1) e la sua inversa, il logaritmo in base a, con grafici e proprietà.Esponenziale e logaritmo →): è la relazione che si usa in tutto il subnetting.
Struttura gerarchica: prefisso e suffisso
Un indirizzo è gerarchico, come un indirizzo postale (via, numero civico) o un numero di telefono (prefisso internazionale, prefisso di zona, numero): si legge da sinistra a destra e la parte iniziale individua il gruppo.
Definizione (prefisso e suffisso). I primi bit formano il prefisso, detto NetID (identifica la rete); i restanti bit formano il suffisso, detto HostID (identifica l'host dentro la rete). Nodi nella stessa rete hanno lo stesso NetID e HostID diversi.
Esempio. Con , in il NetID è e l'HostID è .
Se un edificio ha più ingressi su strade diverse, ha più indirizzi: allo stesso modo un router con più interfacce ha più indirizzi IP, uno per ogni rete a cui è collegato.
Indirizzamento con classi (classful, obsoleto)
Agli inizi di Internet il prefisso aveva lunghezza fissa, con tre valori possibili (), e lo spazio degli indirizzi era diviso in cinque classi. Il vantaggio: dato un indirizzo si riconosce subito la classe e quindi la lunghezza del prefisso, senza altre informazioni (basta guardare i primi bit).
| classe | primi bit | primo byte | prefisso | numero di reti | host per rete |
|---|---|---|---|---|---|
| A | 0 | 0 – 127 | 8 | (126 utilizzabili) | |
| B | 10 | 128 – 191 | 16 | ||
| C | 110 | 192 – 223 | 24 | ||
| D | 1110 | 224 – 239 | non applicabile (multicast) | ||
| E | 1111 | 240 – 255 | non applicabile (riservata) |
Le classi occupano porzioni diverse dello spazio: A il 50%, B il 25%, C il 12,5%, D e E il 6,25% ciascuna.
Grafico interattivo: Spazio degli indirizzi IPv4 diviso per classi (percentuale)
Perché è obsoleto: esaurimento degli indirizzi. Una classe A può essere assegnata a pochissime organizzazioni (126 nel mondo), ma ciascuna dovrebbe avere una sola rete vista dal resto del mondo con nodi: quasi tutti gli indirizzi restano inutilizzati. La classe B (organizzazioni di medie dimensioni) ha lo stesso difetto in scala minore. La classe C ha il difetto opposto: 254 host sono troppo pochi per molte organizzazioni. Gli indirizzi andavano quindi esaurendosi senza essere usati davvero.
Intervalli delle classi A, B, C: da a ; da a ; da a .
Indirizzi speciali
Definizione (indirizzo di rete). Si ottiene mettendo a 0 tutti i bit dell'HostID. Identifica la rete intera e si usa solo nelle tabelle di instradamento: non si assegna a nessun host.
Esempio. (classe B): indirizzo di rete . Per (classe C): .
Definizione (broadcast diretto, direct broadcast address). Si ottiene mettendo a 1 tutti i bit dell'HostID. Un pacchetto con questo destinatario raggiunge tutti i nodi della rete con quel NetID. Può essere generato da fuori della rete, ma non può uscirne.
Esempio. con : broadcast . Per : .
Altri indirizzi speciali:
- , "questo host su questa rete": lo usa come sorgente chi non ha ancora un indirizzo (un host che parte e deve chiedere una configurazione, Protocollo DHCPDopo che a un'organizzazione è stato assegnato un blocco di indirizzi, configurare a mano IP e netmask di ogni host non è efficiente. BOOTP (obsoleto) associa in modo statico un indirizzo MAC a un indirizzo IP; DHCP (Dynamic Host Configuration Protocol) assegna gli indirizzi in modo dinamico, a prestito (lease) per un tempo limitato, anche a sistema operativo già avviato. Il dialogo client-server è su UDP (porta 67 server, 68 client) e usa quattro messaggi: DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK (più DHCPRELEASE a fine uso). Nell'ACK arrivano IP, netmask, default gateway e server DNS.Protocollo DHCP →); un indirizzo come significa "l'host 132 di questa stessa rete";
- (broadcast limitato, tutti i bit a 1): arriva a tutti i nodi della rete locale e non esce mai dai router;
- (loopback): il pacchetto non esce dall'host;
- gli indirizzi privati, che non si instradano in Internet: NAT e indirizzi privatiUna rete privata (intranet) usa il protocollo TCP/IP con indirizzi privati ($10.0.0.0/8$, $172.16.0.0/12$, $192.168.0.0/16$), riutilizzabili da intranet diverse ma da non instradare in Internet: i router di bordo scartano i pacchetti con indirizzi privati. Per accedere a Internet servono un proxy applicativo (uno per applicazione) o il NAT (Network Address Translation): un router che traduce indirizzi privati in indirizzi pubblici di un pool, con una tabella NAT e un'associazione dinamica per sessione. Il NAT tradizionale è outbound: Basic NAT traduce solo l'IP (uno a uno, quindi servono tanti indirizzi pubblici quante le sessioni contemporanee), NAPT traduce anche la porta ([IP privato, porta] $\to$ [IP pubblico, porta del NAT]) e permette a molte sessioni di condividere un solo IP pubblico. Il Twice NAT permette sessioni anche dall'esterno, con un DNS interno e associazioni statiche.NAT e indirizzi privati →.
Indirizzamento senza classi (classless)
Con la crescita di Internet serviva uno spazio di indirizzi più grande. La soluzione a lungo termine è IPv6 (indirizzi di 16 byte); le soluzioni a breve termine mantengono IPv4:
- senza classi: il confine tra NetID e HostID può cadere ovunque nei 32 bit, e il prefisso può avere lunghezza da 0 a 32. Si possono spezzare blocchi grandi in blocchi più piccoli (subnetting) o aggregare blocchi piccoli in uno più grande (supernetting): Subnetting e supernettingIl subnetting divide un blocco di indirizzi in sottoblocchi più piccoli allungando la maschera ($n_{\text{sub}}=n_{\text{rete}}+s$, con $2^s$ sottoreti); il supernetting (aggregazione CIDR) fa l'opposto, accorciando il prefisso per unire blocchi contigui in uno più grande. Regole di progetto: ogni sottorete ha un numero di indirizzi potenza di 2 ($M=2^k\ge$ host richiesti $+2$), prefisso $n=32-k$, indirizzo iniziale multiplo di $M$; si assegnano prima le sottoreti più grandi. Per aggregare $2^j$ blocchi di prefisso $n$ servono blocchi contigui il cui primo indirizzo sia multiplo della dimensione dell'aggregato, e il nuovo prefisso è $n-j$.Subnetting e supernetting →;
- indirizzi privati e NAT: NAT e indirizzi privatiUna rete privata (intranet) usa il protocollo TCP/IP con indirizzi privati ($10.0.0.0/8$, $172.16.0.0/12$, $192.168.0.0/16$), riutilizzabili da intranet diverse ma da non instradare in Internet: i router di bordo scartano i pacchetti con indirizzi privati. Per accedere a Internet servono un proxy applicativo (uno per applicazione) o il NAT (Network Address Translation): un router che traduce indirizzi privati in indirizzi pubblici di un pool, con una tabella NAT e un'associazione dinamica per sessione. Il NAT tradizionale è outbound: Basic NAT traduce solo l'IP (uno a uno, quindi servono tanti indirizzi pubblici quante le sessioni contemporanee), NAPT traduce anche la porta ([IP privato, porta] $\to$ [IP pubblico, porta del NAT]) e permette a molte sessioni di condividere un solo IP pubblico. Il Twice NAT permette sessioni anche dall'esterno, con un DNS interno e associazioni statiche.NAT e indirizzi privati →.
Le dimensioni della rete sono inversamente proporzionali alla lunghezza del prefisso: più è lungo il prefisso, più piccola la rete. L'indirizzamento con classi è un caso particolare di quello senza classi (una classe A è un indirizzo senza classi con ).
Un indirizzo senza classi non dice da solo a quale blocco appartiene: serve la lunghezza del prefisso, che si può dare in due modi.
Notazione CIDR (classless interdomain routing)
Si scrive la lunghezza dopo una barra, in coda all'indirizzo: .
Formula (blocco CIDR). Dato : Gli host utilizzabili sono (si tolgono rete e broadcast).
Esempio. : indirizzi ( host). Il byte significativo è l'ultimo, ; con 27 bit di prefisso si tengono i primi 3 bit di questo byte () e gli altri 5 si azzerano: . Rete ; broadcast: , cioè .
Lo stesso indirizzo può stare in blocchi diversi a seconda di . Per :
| indirizzo di rete | intervallo del blocco | |
|---|---|---|
| 16 | – | |
| 20 | – | |
| 26 | – | |
| 27 | – | |
| 29 | – | |
| 31 | – |
L'indirizzo di rete è importante perché è quello che si usa per instradare un pacchetto verso la sua rete di destinazione. Quando un pacchetto arriva a un router da un host qualsiasi, il router deve sapere a quale rete va mandato (cioè da quale interfaccia farlo uscire): ricava l'indirizzo di rete della destinazione e lo cerca nella propria tabella di inoltro (Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →).
Netmask
Definizione (netmask). È un numero di 32 bit in cui i primi bit (quelli del NetID) valgono 1 e i restanti (quelli dell'HostID) valgono 0. Per : .
La maschera serve ai programmi per estrarre le informazioni del blocco con tre operazioni bit a bit (NOT, AND, OR; sono le operazioni dell'algebra di BooleAND vale 1 solo se entrambi i bit valgono 1, OR vale 1 se almeno un bit vale 1, NOT scambia 0 e 1Algebra di Boole e porte logiche → applicate a ciascuna coppia di bit nella stessa posizione). Perché funzionano: AND con un bit della maschera a 1 lascia passare il bit dell'indirizzo, AND con 0 lo azzera; quindi conserva il NetID e azzera l'HostID, cioè dà l'indirizzo di rete. Analogamente OR con 1 forza il bit a 1 e OR con 0 lo lascia com'è, e NOT(maschera) ha 1 proprio nelle posizioni dell'HostID: l'OR mette a 1 l'HostID e dà il broadcast. Infine, se l'HostID ha bit, NOT(maschera) è formato da uni, che valgono (somma dei termini di una progressione geometricaLe serie di cui si conosce il carattere e da usare come termine di paragone: geometrica (converge a 1/(1-q) se |q|<1), telescopiche (somma b_1 - lim b_n, come Mengoli), armonica generalizzata (1/n^alpha converge se e solo se alpha>1).Serie notevoli - geometrica, telescopica, armonica →): aggiungendo 1 si ottiene .
Formula (operazioni con la maschera).
Esempio. con maschera . Sull'ultimo byte: , maschera . AND: , quindi rete . NOT(maschera) , quindi ; OR: , broadcast . È lo stesso risultato del metodo precedente.
Tabella utile dei valori di un byte della maschera (i bit a 1 vanno sempre contigui, da sinistra):
| byte decimale | binario | bit a 1 |
|---|---|---|
| 255 | 11111111 | 8 |
| 254 | 11111110 | 7 |
| 252 | 11111100 | 6 |
| 248 | 11111000 | 5 |
| 240 | 11110000 | 4 |
| 224 | 11100000 | 3 |
| 192 | 11000000 | 2 |
| 128 | 10000000 | 1 |
| 0 | 00000000 | 0 |
Proprietà (un indirizzo appartiene a una rete se...). Un indirizzo appartiene alla rete di indirizzo e maschera se e solo se .
Esempio. Rete con maschera (). Il byte interessante è il terzo, con maschera . Per : , AND , quindi : non appartiene. Per : , AND , quindi : appartiene. Il blocco ha indirizzi e va da a .
Regole di assegnazione dei blocchi
L'ICANN (Internet Corporation for Assigned Names and Numbers) assegna blocchi di indirizzi ai provider (ISP). Perché il CIDR funzioni valgono tre regole:
- il numero di indirizzi richiesti deve essere una potenza di 2 (se non lo è si arrotonda per eccesso alla potenza di 2 successiva);
- la lunghezza del prefisso del blocco è ;
- il numero di indirizzi è una potenza di 2, quindi l'indirizzo di rete del blocco ha un suffisso di zeri: il primo indirizzo deve essere un multiplo di (allineamento). Il motivo: gli indirizzi del blocco devono condividere tutti i primi bit e differire solo nei bit finali, che vanno da tutti 0 (primo indirizzo) a tutti 1 (ultimo); un numero che termina con zeri in binario è multiplo di .
Esempio (mille indirizzi). Un ISP chiede 1000 indirizzi: ne ottiene . I bit di host sono , quindi il prefisso è (attenzione: nelle slide del corso il valore 10 è confuso con il prefisso). Un blocco valido è , perché il terzo byte ha gli ultimi 2 bit a zero (l'indirizzo di rete è allineato: è multiplo di 4).
Esempio (3000 host). , bit di host , . Un blocco valido è .
Esercizi tipo d'esame
Sulla carta, dato un indirizzo con la sua lunghezza (o maschera), si chiede di trovare: indirizzo di rete (primo del blocco), netmask, broadcast diretto (ultimo del blocco) e numero massimo di host ().
Esempio. . Ultimo byte ; la maschera ha 5 bit a 1 nell'ultimo byte: . Rete , , host , broadcast , quindi (la distanza tra il primo e l'ultimo indirizzo è ). Netmask: .
Attenzione: quando un indirizzo è davvero "di rete"
Dire che è un indirizzo di rete dipende dalla lunghezza:
- : l'HostID è l'ultimo byte, tutto a 0: sì, è un indirizzo di rete (il primo indirizzo assegnabile è );
- : l'HostID sono gli ultimi due byte , non tutti a 0: no, l'indirizzo di rete è ;
- : i 4 bit di HostID sono gli ultimi 4 del byte : tutti a 0: sì (primo indirizzo assegnabile ).
Esempi collegati: gli esercizi Esercizio - notazione decimale puntata, classi e blocchi, Esercizio - rete di appartenenza di un indirizzo e Esercizio - inizio di un blocco e blocco di un indirizzo CIDR.
Versione ripasso
Livello di rete
- Consegna host a host dei datagrammi, sopra il collegamento (Modello ISO-OSI e pila TCP-IPUna comunicazione tra due calcolatori è un problema troppo vario (segnali, errori, accesso al mezzo, instradamento, controllo di flusso, rappresentazione dei dati) per un solo protocollo, quindi si divide in strati (layer). Il modello ISO/OSI ha 7 livelli (fisico, collegamento, rete, trasporto, sessione, presentazione, applicazione); la pila TCP/IP riunisce gli ultimi tre in un solo livello applicazione, quindi ne ha 5. Ogni livello offre un servizio a quello sopra e parla solo con il livello pari dell'altro nodo tramite PDU; scendendo si aggiunge un'intestazione (PCI): incapsulamento. Indirizzi: MAC (collegamento, locale), IP (rete, globale).Modello ISO-OSI e pila TCP-IP →) e sotto il trasporto (Livello di trasporto - porte e multiplexingIl livello di trasporto (transport layer) offre la comunicazione logica end-to-end tra processi applicativi di host diversi, ed è realizzato solo negli host finali, non nei router. Il livello di rete consegna al computer giusto (indirizzo IP), il trasporto consegna al processo giusto (numero di porta di 16 bit, 0-65535). Una porta più un indirizzo IP formano un socket; la quaterna (IP sorgente, porta sorgente, IP destinazione, porta destinazione) identifica una connessione. I servizi sono: comunicazione processo-processo, indirizzamento, incapsulamento/decapsulamento, multiplexing/demultiplexing e, se il protocollo è affidabile, controllo di errore, di flusso e di congestione. I protocolli sono UDP (senza connessione, inaffidabile), TCP (con connessione, affidabile) e SCTP (combina i due).Livello di trasporto - porte e multiplexing →); il protocollo gira in ogni router.
- Tre servizi: incapsulamento (framing: intestazione/PCI con indirizzi di sorgente e destinazione; i router leggono ma non cambiano gli indirizzi), instradamento (routing, trova il percorso migliore: Algoritmi di instradamento - link state e distance vectorL'instradamento (routing) trova il percorso di costo minimo in un grafo pesato in cui i router sono nodi e le reti tra due router sono archi. Link state: ogni router diffonde con un flooding i pacchetti LSP sui propri collegamenti, ricostruisce tutto il grafo e applica Dijkstra (nodi con stato (distanza, permanente o temporaneo)). Distance vector: ogni router conosce solo i vicini e scambia con loro il proprio vettore delle distanze, aggiornato con Bellman-Ford $D_{A,w}=\min{D_{A,w},,D_{A,Y}+d_{Y,w}}$; converge in al più $n-1$ giri ma può soffrire del conteggio all'infinito (limite a 16, hold down, aggiornamenti immediati, split horizon con poison reverse). Path vector: ogni annuncio porta l'intero cammino, si sceglie per politica e non per costo, e i cicli si scoprono trovando sé stessi nel cammino. Dijkstra è corretto se i costi sono non negativi (invariante: un nodo permanente ha già la distanza vera); Bellman-Ford è corretto perché dopo $k$ giri conosce i cammini minimi con al più $k+1$ archi.Algoritmi di instradamento - link state e distance vector →), inoltro (forwarding: guarda la destinazione, consulta la forwarding table, trova l'interfaccia di uscita: Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →).
- Controllo di errore, flusso e congestione sono lasciati ai livelli superiori; unica eccezione la sicurezza (IPSec).
- Protocolli: IPv4 (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →), ICMP (Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →), IGMP (multicast), ARP (IP MAC: Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP →).
- Tre identificatori dello stesso host: nome (DNS), IP (rete), MAC (collegamento); IP MAC lo fa ARP.
Indirizzo IPv4
- Definizione: 32 bit che identificano la connessione (un router con tre interfacce ha tre indirizzi); univoco e universale; indirizzi. Notazione decimale puntata: 4 byte da 0 a 255. Esempio: (; ; ; ).
- Prefisso (NetID, bit) e suffisso (HostID, bit): stessa rete, stesso NetID. Esempio , : NetID , HostID .
Classi (obsolete)
| classe | primi bit | primo byte | reti | host per rete | |
|---|---|---|---|---|---|
| A | 0 | 0 – 127 | 8 | (126 utilizzabili) | |
| B | 10 | 128 – 191 | 16 | ||
| C | 110 | 192 – 223 | 24 | ||
| D | 1110 | 224 – 239 | multicast | ||
| E | 1111 | 240 – 255 | riservata |
Quote di spazio: A 50%, B 25%, C 12,5%, D e E 6,25% ciascuna. Obsolete per esaurimento: A troppo grande (quasi tutti gli indirizzi inutilizzati), C troppo piccola (254 host).
Indirizzi speciali
- Indirizzo di rete: HostID tutto a 0, solo nelle tabelle, non assegnabile. Es. ; .
- Broadcast diretto: HostID tutto a 1, raggiunge tutta la rete (non ne esce). Es. ; .
- (questo host, per chi non ha indirizzo: Protocollo DHCPDopo che a un'organizzazione è stato assegnato un blocco di indirizzi, configurare a mano IP e netmask di ogni host non è efficiente. BOOTP (obsoleto) associa in modo statico un indirizzo MAC a un indirizzo IP; DHCP (Dynamic Host Configuration Protocol) assegna gli indirizzi in modo dinamico, a prestito (lease) per un tempo limitato, anche a sistema operativo già avviato. Il dialogo client-server è su UDP (porta 67 server, 68 client) e usa quattro messaggi: DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK (più DHCPRELEASE a fine uso). Nell'ACK arrivano IP, netmask, default gateway e server DNS.Protocollo DHCP →); (broadcast limitato, mai oltre i router); (loopback); privati (NAT e indirizzi privatiUna rete privata (intranet) usa il protocollo TCP/IP con indirizzi privati ($10.0.0.0/8$, $172.16.0.0/12$, $192.168.0.0/16$), riutilizzabili da intranet diverse ma da non instradare in Internet: i router di bordo scartano i pacchetti con indirizzi privati. Per accedere a Internet servono un proxy applicativo (uno per applicazione) o il NAT (Network Address Translation): un router che traduce indirizzi privati in indirizzi pubblici di un pool, con una tabella NAT e un'associazione dinamica per sessione. Il NAT tradizionale è outbound: Basic NAT traduce solo l'IP (uno a uno, quindi servono tanti indirizzi pubblici quante le sessioni contemporanee), NAPT traduce anche la porta ([IP privato, porta] $\to$ [IP pubblico, porta del NAT]) e permette a molte sessioni di condividere un solo IP pubblico. Il Twice NAT permette sessioni anche dall'esterno, con un DNS interno e associazioni statiche.NAT e indirizzi privati →).
Senza classi (CIDR)
Prefisso da 0 a 32 ovunque; lunghezza maggiore = rete più piccola. Si può spezzare (subnetting) o aggregare (supernetting): Subnetting e supernettingIl subnetting divide un blocco di indirizzi in sottoblocchi più piccoli allungando la maschera ($n_{\text{sub}}=n_{\text{rete}}+s$, con $2^s$ sottoreti); il supernetting (aggregazione CIDR) fa l'opposto, accorciando il prefisso per unire blocchi contigui in uno più grande. Regole di progetto: ogni sottorete ha un numero di indirizzi potenza di 2 ($M=2^k\ge$ host richiesti $+2$), prefisso $n=32-k$, indirizzo iniziale multiplo di $M$; si assegnano prima le sottoreti più grandi. Per aggregare $2^j$ blocchi di prefisso $n$ servono blocchi contigui il cui primo indirizzo sia multiplo della dimensione dell'aggregato, e il nuovo prefisso è $n-j$.Subnetting e supernetting →.
Formula (blocco ). ; rete = primi bit invariati, resto a 0; broadcast = resto a 1; host utilizzabili .
- Esempio : (30 host); , primi 3 bit , resto a 0: ; broadcast . Rete , broadcast .
- Per la rete cambia con : ; ; (fino a ); ; (fino a ); (fino a ).
- L'indirizzo di rete della destinazione si cerca nella tabella di inoltro (Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →).
Netmask
uni seguiti da zeri. Es. : .
Formula. ; rete ; broadcast . appartiene alla rete con maschera se e solo se .
- Byte di maschera: (8 uni), (7), (6), (5), (4), (3), (2), (1), .
- Esempio , : ; NOT, ; OR .
- Appartenenza: rete , (, indirizzi, fino a ). : , AND , quindi , non appartiene. : , appartiene.
Assegnazione dei blocchi
L'ICANN assegna blocchi agli ISP. Regole: indirizzi potenza di 2 (arrotondare per eccesso); ; indirizzo di rete multiplo di (allineamento).
- 1000 indirizzi , blocco valido ( multiplo di 4).
- 3000 host , blocco valido .
Esercizio tipo
: , maschera sull'ultimo byte ; rete , , host , broadcast , netmask .
Quando un indirizzo è "di rete": sì; no (rete ); sì (Esercizio - rete di appartenenza di un indirizzo, Esercizio - inizio di un blocco e blocco di un indirizzo CIDR, Esercizio - notazione decimale puntata, classi e blocchi).
Errori tipici: dire "rete" per un indirizzo che finisce con 0 senza guardare ; scrivere 10 (bit di host) invece di come prefisso per 1024 indirizzi; dimenticare di togliere rete e broadcast ().
Esercizi su questo argomento
- Esercizio - Blocco 131.175.208.0-21 con quattro LAN e inoltro di quattro pacchetti
- Esercizio - blocco /21 con quattro LAN e collegamenti punto-punto
- Esercizio - indirizzamento di LAN A e LAN B e tabella di router 1
- Esercizio - Indirizzi di tre LAN, tabelle di Router 1 e Router 2 e sottoreti di LAN B
- Esercizio - inizio di un blocco e blocco di un indirizzo CIDR
- Esercizio - notazione decimale puntata, classi e blocchi
- Esercizio - pacchetti ARP e IP con router e con switch
- Esercizio - piano di indirizzamento con cinque router e collegamenti punto-punto
- Esercizio - Piano di indirizzamento di nove LAN, inoltro di cinque pacchetti e due sottoreti da 1950 host
- Esercizio - progetto di sottoreti con indirizzi di dimensione diversa
- Esercizio - rete di appartenenza di un indirizzo
- Esercizio - simulazione del lab test
- Esercizio - sottoreti classful e sottoreti con rete privata
- Esercizio - sottoreti di una rete di 4000 host e di 15 sottoreti
- Esercizio - supernetting di due sottoreti
- Esercizio - tabella di instradamento del router R1 e inoltro di due pacchetti
- Esercizio - tabelle di inoltro e instradamento dei router A e B
Lezioni in cui compare
Teoria collegata
- Algoritmi di instradamento - link state e distance vector
- Attacco man-in-the-middle
- Datagramma IP e frammentazione
- Firewall con iptables in Katharà
- Instradamento e inoltro
- Introduzione alla sicurezza delle reti
- Katharà - emulare una rete
- Livello applicazione - DNS
- Livello di trasporto - porte e multiplexing
- NAT e indirizzi privati
- Protocollo ARP
- Protocollo DHCP
- Protocollo ICMP
- Routing statico in Katharà
- Subnetting e supernetting