%% netlayer.tex
%%
-%% Copyright (C) 2000-2012 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2018 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Un preambolo",
Le classi di indirizzi usate per il dispiegamento delle reti su quella che
comunemente viene chiamata \textit{Internet} sono le prime tre; la classe D è
-destinata al \itindex{multicast} \textit{multicast} mentre la classe E è
-riservata per usi sperimentali e non viene impiegata.
+destinata al \textit{multicast} mentre la classe E è riservata per usi
+sperimentali e non viene impiegata.
Come si può notare però la suddivisione riportata in
tab.~\ref{tab:IP_ipv4class} è largamente inefficiente in quanto se ad un
utente necessita anche solo un indirizzo in più dei 256 disponibili con una
classe A occorre passare a una classe B, che ne prevede 65536,\footnote{in
- realtà i valori esatti sarebbero 254 e 65536, una rete con a disposizione
+ realtà i valori esatti sarebbero 254 e 65534, una rete con a disposizione
$N$ bit dell'indirizzo IP, ha disponibili per le singole macchine soltanto
$@^N-2$ numeri, dato che uno deve essere utilizzato come indirizzo di rete e
- uno per l'indirizzo di \itindex{broadcast} \textit{broadcast}.} con un
-conseguente spreco di numeri.
+ uno per l'indirizzo di \textit{broadcast}.} con un conseguente spreco di
+numeri.
Inoltre, in particolare per le reti di classe C, la presenza di tanti
indirizzi di rete diversi comporta una crescita enorme delle tabelle di
\multicolumn{2}{|c|}{\textbf{Valore}}&\textbf{Significato}\\
\hline
\hline
- \const{IPTOS\_LOWDELAY} &\texttt{0x10}& Minimizza i ritardi
+ \constd{IPTOS\_LOWDELAY} &\texttt{0x10}& Minimizza i ritardi
per rendere più veloce
possibile la ritrasmissione
dei pacchetti (usato per
traffico interattivo di
controllo come SSH).\\
- \const{IPTOS\_THROUGHPUT} &\texttt{0x8} & Ottimizza la trasmissione
+ \constd{IPTOS\_THROUGHPUT} &\texttt{0x8} & Ottimizza la trasmissione
per rendere il più elevato
possibile il flusso netto di
dati (usato su traffico dati,
come quello di FTP).\\
- \const{IPTOS\_RELIABILITY} &\texttt{0x4} & Ottimizza la trasmissione
+ \constd{IPTOS\_RELIABILITY} &\texttt{0x4} & Ottimizza la trasmissione
per ridurre al massimo le
perdite di pacchetti (usato su
traffico soggetto a rischio di
perdita di pacchetti come TFTP
o DHCP).\\
- \const{IPTOS\_MINCOST} &\texttt{0x2} & Indica i dati di riempimento,
+ \constd{IPTOS\_MINCOST} &\texttt{0x2} & Indica i dati di riempimento,
dove non interessa se si ha
una bassa velocità di
trasmissione, da utilizzare
supportare una gerarchia con più livelli di indirizzamento, un numero di
nodi indirizzabili molto maggiore e una auto-configurazione degli indirizzi
\item l'introduzione un nuovo tipo di indirizzamento, l'\textit{anycast} che
- si aggiungono agli usuali \textit{unicast} e \itindex{multicast}
- \textit{multicast}
+ si aggiungono agli usuali \textit{unicast} e \textit{multicast}
\item la semplificazione del formato dell'intestazione, eliminando o rendendo
opzionali alcuni dei campi di IPv4, per eliminare la necessità di
riprocessare la stessa da parte dei router e contenere l'aumento di
quello di IPv6 sono le seguenti:
\begin{itemize}
-\item il \itindex{broadcast} \textit{broadcasting} non è previsto in IPv6, le
- applicazioni che lo usano dovono essere reimplementate usando il
- \itindex{multicast} \textit{multicasting} (vedi
+\item il \textit{broadcasting} non è previsto in IPv6, le applicazioni che lo
+ usano dovono essere reimplementate usando il \textit{multicasting} (vedi
sez.~\ref{sec:IP_ipv6_multicast}), che da opzionale diventa obbligatorio.
\item è stato introdotto un nuovo tipo di indirizzi, gli \textit{anycast}.
\item i router non possono più frammentare i pacchetti lungo il cammino, la
frammentazione di pacchetti troppo grandi potrà essere gestita solo ai
capi della comunicazione (usando un'apposita estensione vedi
sez.~\ref{sec:IP_ipv6_extens}).
-\item IPv6 richiede il supporto per il \itindex{Maximum~Transfer~Unit}
- \textit{path MTU discovery} (cioè il protocollo per la selezione della
- massima lunghezza del pacchetto); seppure questo sia in teoria opzionale,
- senza di esso non sarà possibile inviare pacchetti più larghi della
- dimensione minima (576 byte).
+\item IPv6 richiede il supporto per il \textit{path MTU discovery} (cioè il
+ protocollo per la selezione della massima lunghezza del pacchetto); seppure
+ questo sia in teoria opzionale, senza di esso non sarà possibile inviare
+ pacchetti più larghi della dimensione minima (576 byte).
\end{itemize}
\subsection{Gli indirizzi di IPv6}
\label{sec:IP_ipv6_addr_arch}
Come per IPv4 gli indirizzi sono identificatori per una singola (indirizzi
-\textit{unicast}) o per un insieme (indirizzi \itindex{multicast}
-\textit{multicast} e \textit{anycast}) di interfacce di rete.
+\textit{unicast}) o per un insieme (indirizzi \textit{multicast} e
+\textit{anycast}) di interfacce di rete.
Gli indirizzi sono sempre assegnati all'interfaccia, non al nodo che la
ospita; dato che ogni interfaccia appartiene ad un nodo quest'ultimo può
interfacce. A una interfaccia possono essere associati anche più indirizzi.
IPv6 presenta tre tipi diversi di indirizzi: due di questi, gli indirizzi
-\textit{unicast} e \itindex{multicast} \textit{multicast} hanno le stesse
-caratteristiche che in IPv4, un terzo tipo, gli indirizzi \textit{anycast} è
-completamente nuovo. In IPv6 non esistono più gli indirizzi
-\itindex{broadcast} \textit{broadcast}, la funzione di questi ultimi deve
-essere reimplementata con gli indirizzi \itindex{multicast}
-\textit{multicast}.
+\textit{unicast} e \textit{multicast} hanno le stesse caratteristiche che in
+IPv4, un terzo tipo, gli indirizzi \textit{anycast} è completamente nuovo. In
+IPv6 non esistono più gli indirizzi \textit{broadcast}, la funzione di questi
+ultimi deve essere reimplementata con gli indirizzi \textit{multicast}.
Gli indirizzi \textit{unicast} identificano una singola interfaccia: i
pacchetti mandati ad un tale indirizzo verranno inviati a quella interfaccia,
gli indirizzi \textit{anycast} identificano un gruppo di interfacce tale che
un pacchetto mandato a uno di questi indirizzi viene inviato alla più vicina
(nel senso di distanza di routing) delle interfacce del gruppo, gli indirizzi
-\itindex{multicast} \textit{multicast} identificano un gruppo di interfacce
-tale che un pacchetto mandato a uno di questi indirizzi viene inviato a tutte
-le interfacce del gruppo.
+\textit{multicast} identificano un gruppo di interfacce tale che un pacchetto
+mandato a uno di questi indirizzi viene inviato a tutte le interfacce del
+gruppo.
In IPv6 non ci sono più le classi ma i bit più significativi indicano il tipo
di indirizzo; in tab.~\ref{tab:IP_ipv6addr} sono riportati i valori di detti
costituiscono quello che viene chiamato il \textit{format prefix} ed è sulla
base di questo che i vari tipi di indirizzi vengono identificati. Come si
vede questa architettura di allocazione supporta l'allocazione di indirizzi
-per i provider, per uso locale e per il \itindex{multicast}
-\textit{multicast}; inoltre è stato riservato lo spazio per indirizzi NSAP,
-IPX e per le connessioni; gran parte dello spazio (più del 70\%) è riservato
-per usi futuri.
+per i provider, per uso locale e per il \textit{multicast}; inoltre è stato
+riservato lo spazio per indirizzi NSAP, IPX e per le connessioni; gran parte
+dello spazio (più del 70\%) è riservato per usi futuri.
Si noti infine che gli indirizzi \textit{anycast} non sono riportati in
tab.~\ref{tab:IP_ipv6addr} in quanto allocati al di fuori dello spazio di
valore nell'intervallo \texttt{FE80}--\texttt{FEBF} e vengono in genere usati
per la configurazione automatica dell'indirizzo al bootstrap e per la ricerca
dei vicini (vedi \ref{sec:IP_ipv6_autoconf}); un pacchetto che abbia tale
-indirizzo come sorgente o destinazione non deve venire ritrasmesso dai router.
+indirizzo come sorgente o destinazione non deve venire ritrasmesso dai router,
+sono gli indirizzi che identificano la macchina sulla rete locale, per questo
+sono chiamati in questo modo, in quanto sono usati solo su di essa.
Un indirizzo \textit{site-local} invece è usato per l'indirizzamento
all'interno di un sito che non necessita di un prefisso globale; la struttura
\end{table}
L'utilizzo del campo di \textit{scope} e di questi indirizzi predefiniti serve
-a recuperare le funzionalità del \itindex{broadcast} \textit{broadcasting} (ad
-esempio inviando un pacchetto all'indirizzo \texttt{FF02:0:0:0:0:0:0:1} si
-raggiungono tutti i nodi locali).
+a recuperare le funzionalità del \textit{broadcasting} (ad esempio inviando un
+pacchetto all'indirizzo \texttt{FF02:0:0:0:0:0:0:1} si raggiungono tutti i
+nodi locali).
\itindend{multicast}
automaticamente il suo indirizzo acquisendo i parametri necessari per potersi
connettere a internet.
-L'auto-configurazione sfrutta gli indirizzi link-local; qualora sul nodo sia
+L'auto-configurazione sfrutta gli indirizzi \textit{link-local}; qualora sul nodo sia
presente una scheda di rete che supporta lo standard IEEE802 (ethernet) questo
garantisce la presenza di un indirizzo fisico a 48 bit unico; pertanto il nodo
può assumere automaticamente senza pericoli di collisione l'indirizzo
-link-local \texttt{FE80::xxxx:xxxx:xxxx} dove \texttt{xxxx:xxxx:xxxx} è
+\textit{link-local} \texttt{FE80::xxxx:xxxx:xxxx} dove \texttt{xxxx:xxxx:xxxx} è
l'indirizzo hardware della scheda di rete.
Nel caso in cui non sia presente una scheda che supporta lo standard IEEE802
-allora il nodo assumerà ugualmente un indirizzo link-local della forma
+allora il nodo assumerà ugualmente un indirizzo \textit{link-local} della forma
precedente, ma il valore di \texttt{xxxx:xxxx:xxxx} sarà generato
casualmente; in questo caso la probabilità di collisione è di 1 su 300
milioni. In ogni caso per prevenire questo rischio il nodo invierà un
Una volta ottenuto un indirizzo locale valido diventa possibile per il nodo
comunicare con la rete locale; sono pertanto previste due modalità di
auto-configurazione, descritte nelle seguenti sezioni. In ogni caso
-l'indirizzo link-local resta valido.
+l'indirizzo \textit{link-local} resta valido.
\subsection{Auto-configurazione stateless}
\label{sec:stateless}
Questa è la forma più semplice di auto-configurazione, possibile quando
-l'indirizzo globale può essere ricavato dall'indirizzo link-local cambiando
+l'indirizzo globale può essere ricavato dall'indirizzo \textit{link-local} cambiando
semplicemente il prefisso a quello assegnato dal provider per ottenere un
indirizzo globale.
La procedura di configurazione è la seguente: all'avvio tutti i nodi IPv6
-iniziano si devono aggregare al gruppo di \itindex{multicast}
-\textit{multicast} \textit{all-nodes} programmando la propria interfaccia per
-ricevere i messaggi dall'indirizzo \textit{multicast} \texttt{FF02::1} (vedi
+iniziano si devono aggregare al gruppo di \textit{multicast}
+\textit{all-nodes} programmando la propria interfaccia per ricevere i messaggi
+dall'indirizzo \textit{multicast} \texttt{FF02::1} (vedi
sez.~\ref{sec:IP_ipv6_multicast}); a questo punto devono inviare un messaggio
ICMP \textit{Router solicitation} a tutti i router locali usando l'indirizzo
-\itindex{multicast} \textit{multicast} \texttt{FF02::2} usando come sorgente
-il proprio indirizzo link-local.
+\textit{multicast} \texttt{FF02::2} usando come sorgente il proprio indirizzo
+\textit{link-local}.
Il router risponderà con un messaggio ICMP \textit{Router Advertisement} che
fornisce il prefisso e la validità nel tempo del medesimo, questo tipo di
messaggio può essere trasmesso anche a intervalli regolari. Il messaggio
contiene anche l'informazione che autorizza un nodo a autocostruire
-l'indirizzo, nel qual caso, se il prefisso unito all'indirizzo link-local non
+l'indirizzo, nel qual caso, se il prefisso unito all'indirizzo \textit{link-local} non
supera i 128 bit, la stazione ottiene automaticamente il suo indirizzo
globale.
che offra una versione IPv6 del DHCP; un apposito gruppo di \textit{multicast}
\texttt{FF02::1:0} è stato riservato per questi server; in questo caso il nodo
interrogherà il server su questo indirizzo di \textit{multicast} con
-l'indirizzo link-local e riceverà un indirizzo unicast globale.
+l'indirizzo \textit{link-local} e riceverà un indirizzo unicast globale.
\section{Il protocollo ICMP}