della programmazione.
Data la loro prevelenza il capitolo sarà sostanzialmente incentrato sui due
-protocolli principali esistenti su questo livello: l'\textit{Internet
- Protocol} IP (che più propriamente si dovrebbe chiamare IPv4) ed la sua
-nuova versione denominata IPv6.
+protocolli principali esistenti su questo livello: il protocollo IP, sigla che
+sta per \textit{Internet Protocol}, (ma che più propriamente si dovrebbe
+chiamare IPv4) ed la nuova versione di questo stesso protocollo, denominata
+IPv6.
\section{Il protocollo IP}
\label{sec:ip_protocol}
L'attuale \textit{Internet Protocol} (IPv4) viene standardizzato nel 1981
-dall'\href{http://www.ietf.org/rfc/rfc719.txt}{RFC~719}; esso nasce per
+dall'\href{http://www.ietf.org/rfc/rfc791.txt}{RFC~791}; esso nasce per
disaccoppiare le applicazioni della struttura hardware delle reti di
trasmissione, e creare una interfaccia di trasmissione dei dati indipendente
dal sottostante substrato di rete, che può essere realizzato con le tecnologie
-più disparate (Ethernet, Token Ring, FDDI, etc.).
+più disparate (Ethernet, Token Ring, FDDI, ecc.).
\subsection{Introduzione}
\label{sec:IP_intro}
-Il compito di IP è pertanto quello di trasmettere i pacchetti da un computer
+Il compito principale di IP è quello di trasmettere i pacchetti da un computer
all'altro della rete; le caratteristiche essenziali con cui questo viene
realizzato in IPv4 sono due:
numeri di rete alle organizzazioni che ne fanno richiesta; è poi compito di
quest'ultime assegnare i numeri dei singoli host.
-Per venire incontro alle diverse esigenze gli indirizzi di rete sono stati
-originariamente organizzati in \textit{classi}, (rappresentate in
-tab.~\ref{tab:IP_ipv4class}), per consentire dispiegamenti di reti di
-dimensioni diverse.
+Per venire incontro alle diverse esigenze gli indirizzi di rete erano stati
+originariamente organizzati all'interno delle cosiddette \textit{classi},
+(rappresentate in tab.~\ref{tab:IP_ipv4class}), per consentire dispiegamenti
+di reti di dimensioni diverse.
\begin{table}[htb]
\label{tab:IP_ipv4class}
\end{table}
-Le classi usate per il dispiegamento delle reti sono le prime tre; la classe D
-è destinata al (non molto usato) \textit{multicast} mentre la classe E è
+Le classi usate per il dispiegamento delle reti su quella che comunemente
+viene chiamata \textit{Internet} sono le prime tre; la classe D è destinata al
+(non molto usato) \itindex{multicast} \textit{multicast} mentre la classe E è
riservata per usi sperimentali e non viene impiegata.
Come si può notare però la suddivisione riportata in
+\subsection{L'intestazione di IP}
+\label{sec:IP_header}
+
+
+Il campo TOS definisce il cosiddetto \textit{Type of Service}; questo permette
+di definire il tipo di traffico contenuto nei pacchetti, e può essere
+utilizzato dai router per dare diverse priorità in base al valore assunto da
+questo campo.
+
+\begin{table}[!htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|l|}
+ \hline
+ \textbf{Costante} & \textbf{Significato} \\
+ \hline
+ \hline
+ \const{IPTOS\_LOWDELAY} & minimizza i ritardi per il traffico
+ interattivo. \\
+ \const{IPTOS\_THROUGHPUT} & ottimizza la trasmissione per il massimo
+ flusso di dati.\\
+ \const{IPTOS\_RELIABILITY}& ottimizza per l'affidabilità della
+ trasmissione. \\
+ \const{IPTOS\_MINCOST} & usato per dati di riempimento, dove non
+ interessa se c'è una bassa velocità di
+ trasmissione.\\
+ \hline
+ \end{tabular}
+ \caption{Le costanti che definiscono alcuni valori standard per il campo TOS
+ da usare come argomento \param{optval} per l'opzione \const{IP\_TOS}.}
+ \label{tab:IP_TOS_values}
+\end{table}
+
+
+
+\subsection{Le opzioni di IP}
+\label{sec:IP_options}
+
+
+
+
+
+
\section{Il protocollo IPv6}
\label{sec:ipv6_protocol}
disaccoppiare le applicazioni della struttura hardware delle reti di
trasmissione, e creare una interfaccia di trasmissione dei dati indipendente
dal sottostante substrato di rete, che può essere realizzato con le tecnologie
-più disparate (Ethernet, Token Ring, FDDI, etc.).
+più disparate (Ethernet, Token Ring, FDDI, ecc.).
\subsection{I motivi della transizione}
supportare una gerarchia con più livelli di indirizzamento, un numero di
nodi indirizzabili molto maggiore e una autoconfigurazione degli indirizzi
\item l'introduzione un nuovo tipo di indirizzamento, l'\textit{anycast} che
- si aggiungono agli usuali \textit{unycast} e \textit{multicast}
+ si aggiungono agli usuali \textit{unicast} e \itindex{multicast}
+ \textit{multicast}
\item la semplificazione del formato dell'intestazione, eliminando o rendendo
opzionali alcuni dei campi di IPv4, per eliminare la necessità di
riprocessamento della stessa da parte dei router e contenere l'aumento di
pacchetti frammentati\\
\textit{flag} & 3 &
\textsl{flag} bit di frammentazione, uno indica se un
- pacchetto è frammentato, un'altro se ci sono ulteriori frammenti, e
- un'altro se il pacchetto non può essere frammentato. \\
+ pacchetto è frammentato, un altro se ci sono ulteriori frammenti, e
+ un altro se il pacchetto non può essere frammentato. \\
\textit{fragmentation offset} & 13 & \textsl{offset di frammento},
indica la posizione del frammento rispetto al pacchetto originale\\
\textit{time to live} & 16 & \textsl{tempo di vita},
quello di IPv6 sono le seguenti:
\begin{itemize}
-\item il broadcasting non è previsto in IPv6, le applicazioni che lo usano
- dovono essere reimplementate usando il multicasting (vedi
+\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
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
unicast site-local & \texttt{1111 1110 11} & 1/1024 \\
\hline
\hline
- multicast & \texttt{1111 1111} & 1/256 \\
+ \textit{multicast} & \texttt{1111 1111} & 1/256 \\
\hline
\end{tabular}
\caption{Classificazione degli indirizzi IPv6 a seconda dei bit più
\label{sec:IP_ipv6_addr_arch}
Come per IPv4 gli indirizzi sono identificatori per una singola (indirizzi
-\textit{unicast}) o per un insieme (indirizzi \textit{multicast} e
-\textit{anycast}) di interfacce di rete.
+\textit{unicast}) o per un insieme (indirizzi \itindex{multicast}
+\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 \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}.
+\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}.
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
-\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.
+\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.
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 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 \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.
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
\subsection{Multicasting}
\label{sec:IP_ipv6_multicast}
+\itindbeg{multicast}
+
Gli indirizzi \textit{multicast} sono usati per inviare un pacchetto a un
-gruppo di interfacce; l'indirizzo identifica uno specifico gruppo di multicast
-e il pacchetto viene inviato a tutte le interfacce di detto gruppo.
-Un'interfaccia può appartenere ad un numero qualunque numero di gruppi di
-multicast. Il formato degli indirizzi \textit{multicast} è riportato in
-tab.~\ref{tab:IP_ipv6_multicast}:
+gruppo di interfacce; l'indirizzo identifica uno specifico gruppo di
+\textit{multicast} e il pacchetto viene inviato a tutte le interfacce di detto
+gruppo. Un'interfaccia può appartenere ad un numero qualunque numero di
+gruppi di \textit{multicast}. Il formato degli indirizzi \textit{multicast} è
+riportato in tab.~\ref{tab:IP_ipv6_multicast}:
\begin{table}[htb]
\centering
7 & non assegnato & F & riservato \\
\hline
\end{tabular}
-\caption{Possibili valori del campo \textsl{scop} di un indirizzo multicast.}
+\caption{Possibili valori del campo \textsl{scop} di un indirizzo
+ \textit{multicast}.}
\label{tab:IP_ipv6_multiscope}
\end{table}
-Infine l'ultimo campo identifica il gruppo di multicast, sia permanente che
-transitorio, all'interno del raggio di validità del medesimo. Alcuni
-indirizzi multicast, riportati in tab.~\ref{tab:multiadd} sono già riservati
-per il funzionamento della rete.
+Infine l'ultimo campo identifica il gruppo di \textit{multicast}, sia
+permanente che transitorio, all'interno del raggio di validità del medesimo.
+Alcuni indirizzi \textit{multicast}, riportati in tab.~\ref{tab:multiadd} sono
+già riservati per il funzionamento della rete.
\begin{table}[!htb]
\centering
\href{http://www.ietf.org/rfc/rfc1970.txt}{RFC~1970} \\
\hline
\end{tabular}
-\caption{Gruppi multicast predefiniti.}
+\caption{Gruppi di \textit{multicast} predefiniti.}
\label{tab:multiadd}
\end{table}
L'utilizzo del campo di \textit{scope} e di questi indirizzi predefiniti serve
-a recuperare le funzionalità del 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 \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).
+\itindend{multicast}
\subsection{Indirizzi \textit{anycast}}
\label{sec:IP_anycast}
I pacchetti autenticati e crittografati portano un indice dei parametri di
sicurezza (SPI, \textit{Security Parameter Index}) che viene negoziato prima
di ogni comunicazione ed è definito dalla stazione sorgente. Nel caso di
-multicast dovrà essere lo stesso per tutte le stazioni del gruppo.
+\textit{multicast} dovrà essere lo stesso per tutte le stazioni del gruppo.
\subsection{Autenticazione}
\label{sec:auth}
\centering
\includegraphics[width=10cm]{img/esp_option}
\caption{Schema di pacchetto crittografato.}
- \label{tab:ESP_criptopack}
+ \label{fig:ESP_criptopack}
\end{figure}
indirizzo globale.
La procedura di configurazione è la seguente: all'avvio tutti i nodi IPv6
-iniziano si devono aggregare al gruppo multicast \textit{all-nodes}
-programmando la propria interfaccia per ricevere i messaggi dall'indirizzo
-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 multicast \texttt{FF02::2} usando come
-sorgente il proprio indirizzo link-local.
+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
+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.
Il router risponderà con un messaggio ICMP \textit{Router Advertisement} che
fornisce il prefisso e la validità nel tempo del medesimo, questo tipo di
introdurre in una rete una stazione autoconfigurante per ottenere un accesso
legale.
-Per questi motivi è previsto anche un protocollo stateful basato su un
-server che offra una versione IPv6 del DHCP; un apposito gruppo di multicast
-\texttt{FF02::1:0} è stato riservato per questi server; in questo caso il
-nodo interrogherà il server su questo indirizzo di multicast con l'indirizzo
-link-local e riceverà un indirizzo unicast globale.
+Per questi motivi è previsto anche un protocollo stateful basato su un server
+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.