Aggiornamento anno note di copyright, dimenticato da gennaio...
[gapil.git] / netlayer.tex
index baeb06ab3b144268afa841a372d5d296db5e9dbe..9ecb451e74261c71077e0b94683ba939959dc24e 100644 (file)
@@ -1,15 +1,13 @@
 %% netlayer.tex
 %%
-%% Copyright (C) 2000-2005 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2008 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",
 %% with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
-%%
-
-
+%% 
 
 \chapter{Il livello di rete}
 \label{cha:network_layer}
@@ -18,34 +16,35 @@ In questa appendice prenderemo in esame i vari protocolli disponibili a
 livello di rete.\footnote{per la spiegazione della suddivisione in livelli dei
   protocolli di rete, si faccia riferimento a quanto illustrato in
   sez.~\ref{sec:net_protocols}.} Per ciascuno di essi forniremo una descrizione
-generica delle principlai caratteristiche, del formato di dati usato e quanto
+generica delle principali caratteristiche, del formato di dati usato e quanto
 possa essere necessario per capirne meglio il funzionamento dal punto di vista
 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.
+Data la loro prevalenza il capitolo sarà sostanzialmente incentrato sui due
+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. Tratteremo comunque anche il protocollo ICMP e la sua versione
+modificata per IPv6 (cioè ICMPv6).
 
 
 \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:
-
 \begin{itemize}
 \item \textit{Universal addressing} la comunicazione avviene fra due host
   identificati univocamente con un indirizzo a 32 bit che può appartenere ad
@@ -53,7 +52,7 @@ realizzato in IPv4 sono due:
 \item \textit{Best effort} viene assicurato il massimo impegno nella
   trasmissione, ma non c'è nessuna garanzia per i livelli superiori né
   sulla percentuale di successo né sul tempo di consegna dei pacchetti di
-  dati.
+  dati, né sull'ordine in cui vengono consegnati.
 \end{itemize}
 
 Per effettuare la comunicazione e l'instradamento dei pacchetti fra le varie
@@ -64,16 +63,16 @@ ai router per stabilire a quale rete il pacchetto deve essere inviato, il
 numero di host indica la macchina di destinazione finale all'interno di detta
 rete.
 
-Per garantire l'unicità dell'indirizzo Internet esiste un'autorità
-centrale (la IANA, \textit{Internet Assigned Number Authority}) che assegna i
-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 garantire l'unicità dell'indirizzo Internet esiste un'autorità centrale
+(la IANA, \textit{Internet Assigned Number Authority}) che assegna i numeri di
+rete alle organizzazioni che ne fanno richiesta; è poi compito di quest'ultime
+assegnare i numeri dei singoli host all'interno della propria rete.
 
+Per venire incontro alle richieste dei vari enti e organizzazioni che volevano
+utilizzare questo protocollo di comunicazione, originariamente gli indirizzi
+di rete erano stati suddivisi all'interno delle cosiddette \textit{classi},
+(rappresentate in tab.~\ref{tab:IP_ipv4class}), in modo da consentire
+dispiegamenti di reti di varie dimensioni a seconda delle diverse esigenze.
 
 \begin{table}[htb]
   \centering
@@ -147,20 +146,26 @@ dimensioni diverse.
 \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 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.
 
 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, con un conseguente spreco di numeri.
+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
+  $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.
 
 Inoltre, in particolare per le reti di classe C, la presenza di tanti
 indirizzi di rete diversi comporta una crescita enorme delle tabelle di
 instradamento che ciascun router dovrebbe tenere in memoria per sapere dove
-inviare il pacchetto, con conseguente crescita dei tempi di processo da parte
-di questi ultimi ed inefficienza nel trasporto.
+inviare il pacchetto, con conseguente crescita dei tempi di elaborazione da
+parte di questi ultimi ed inefficienza nel trasporto.
 
 \begin{table}[htb]
   \centering
@@ -199,6 +204,124 @@ rete o suddividere una classe B e diminuendo al contempo il numero di
 indirizzi di rete da inserire nelle tabelle di instradamento dei router.
 
 
+\subsection{L'intestazione di IP}
+\label{sec:IP_header}
+
+Come illustrato in fig.~\ref{fig:net_tcpip_data_flux} (si ricordi quanto detto
+in sez.~\ref{sec:net_tcpip_overview} riguardo al funzionamento generale del
+TCP/IP), per eseguire il suo compito il protocollo IP inserisce (come
+praticamente ogni protocollo di rete) una opportuna intestazione in cima ai
+dati che deve trasmettere, la cui schematizzazione è riportata in
+fig.~\ref{fig:IP_ipv4_head}.
+
+\begin{figure}[htb]
+  \centering
+  \includegraphics[width=10cm]{img/ipv4_head}
+  \caption{L'intestazione o \textit{header} di IPv4.}
+  \label{fig:IP_ipv4_head}
+\end{figure}
+
+Ciascuno dei campi illustrati in fig.~\ref{fig:IP_ipv4_head} ha un suo preciso
+scopo e significato, che si è riportato brevemente in
+tab.~\ref{tab:IP_ipv4field}; si noti come l'intestazione riporti sempre due
+indirizzi IP, quello \textsl{sorgente}, che indica l'IP da cui è partito il
+pacchetto (cioè l'indirizzo assegnato alla macchina che lo spedisce) e quello
+\textsl{destinazione} che indica l'indirizzo a cui deve essere inviato il
+pacchetto (cioè l'indirizzo assegnato alla macchina che lo riceverà).
+
+\begin{table}[!hbt]
+  \footnotesize
+  \begin{center}
+    \begin{tabular}{|l|c|p{10cm}|}
+      \hline
+      \textbf{Nome} & \textbf{Bit} & \textbf{Significato} \\
+      \hline
+      \hline
+      \textit{version}       & 4& Numero di \textsl{versione}, nel caso 
+                                  specifico vale sempre 4.\\
+      \textit{head length}   & 4& Lunghezza dell'intestazione,
+                                  in multipli di 32 bit.\\
+      \textit{type of service}&8& Il ``\textsl{tipo di servizio}'', è suddiviso
+                                  in: 3 bit di precedenza, che nelle attuali
+                                  implementazioni del protocollo non vengono
+                                  comunque utilizzati; un bit riservato che
+                                  deve essere mantenuto a 0; 4 bit che
+                                  identificano il tipo di servizio
+                                  richiesto, uno solo dei quali può essere
+                                  attivo.\\ 
+      \textit{total length}  &16& La \textsl{lunghezza totale}, indica 
+                                  la dimensione del carico di dati del
+                                  pacchetto IP in byte.\\ 
+      \textit{identification}&16& L'\textsl{identificazione}, assegnato alla
+                                  creazione, è aumentato di uno all'origine
+                                  della trasmissione di ciascun pacchetto, ma
+                                  resta lo stesso per i pacchetti
+                                  frammentati, consentendo così di
+                                  identificare quelli che derivano dallo
+                                  stesso pacchetto originario.\\
+      \textit{flag}          & 3& I \textsl{flag} di controllo nell'ordine: il 
+                                  primo è riservato e sempre nullo, il secondo
+                                  indica se il pacchetto non può essere 
+                                  frammentato, il terzo se ci sono ulteriori
+                                  frammenti.\\  
+      \textit{fragmentation offset}&13& L'\textsl{offset di frammento}, indica
+                                  la posizione del frammento rispetto al
+                                  pacchetto originale.\\
+      \textit{time to live}  &16& Il \textsl{tempo di vita}, è decrementato di
+                                  uno ogni volta che un router ritrasmette il
+                                  pacchetto, se arriva a zero il pacchetto
+                                  viene scartato.\\ 
+      \textit{protocol}      & 8& Il \textsl{protocollo}, identifica il tipo di
+                                  pacchetto che segue l'intestazione di IPv4.\\
+      \textit{header checksum}&16&La \textsl{checksum di intestazione}, somma 
+                                  di controllo per l'intestazione.\\ 
+      \textit{source IP}     &32& L'\textsl{indirizzo di origine}.\\
+      \textit{destination IP}&32& L'\textsl{indirizzo di destinazione}.\\
+      \hline
+    \end{tabular}
+    \caption{Legenda per il significato dei campi dell'intestazione di IPv4}
+    \label{tab:IP_ipv4field}
+  \end{center}
+\end{table}
+
+
+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|p{6 cm}|}
+    \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}
@@ -216,7 +339,7 @@ dall'\href{http://www.ietf.org/rfc/rfc719.txt}{RFC~719}; 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{I motivi della transizione}
@@ -262,7 +385,7 @@ necessit
 \label{sec:IP_ipv6over}
 
 Per rispondere alle esigenze descritte in sez.~\ref{sec:IP_whyipv6} IPv6 nasce
-come evoluzione di IPv4, mantendone inalterate le funzioni che si sono
+come evoluzione di IPv4, mantenendone inalterate le funzioni che si sono
 dimostrate valide, eliminando quelle inutili e aggiungendone poche altre
 ponendo al contempo una grande attenzione a mantenere il protocollo il più
 snello e veloce possibile.
@@ -272,12 +395,13 @@ grandi linee nei seguenti punti:
 \begin{itemize}
 \item l'espansione delle capacità di indirizzamento e instradamento, per
   supportare una gerarchia con più livelli di indirizzamento, un numero di
-  nodi indirizzabili molto maggiore e una autoconfigurazione degli indirizzi
+  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{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
+  riprocessare la stessa da parte dei router e contenere l'aumento di
   dimensione dovuto ai nuovi indirizzi
 \item un supporto per le opzioni migliorato, per garantire una trasmissione
   più efficiente del traffico normale, limiti meno stringenti sulle
@@ -354,27 +478,28 @@ numero dei campi da 12 a 8.
   \footnotesize
     \begin{tabular}{|l|c|p{8cm}|}
       \hline
-      \textbf{Nome} & \textbf{Lunghezza} & \textbf{Significato} \\
+      \textbf{Nome} & \textbf{Bit} & \textbf{Significato} \\
       \hline
       \hline
-      \textit{version}       &  4 bit & 
-      \textsl{versione}, nel caso specifico vale sempre 6\\
-      \textit{priority}      &  4 bit & 
-      \textsl{priorità}, vedi sez.~\ref{sec:prio} \\
-      \textit{flow label}    & 24 bit & 
-      \textsl{etichetta di flusso}, vedi sez.~\ref{sec:IP_ipv6_flow}\\
-      \textit{payload length} & 16 bit & 
-      \textsl{lunghezza del carico}, cioè del corpo dei dati che segue 
-      l'intestazione, in byte. \\
-      \textit{next header}   &  8 bit & \textsl{intestazione successiva}, 
-      identifica il tipo di pacchetto che segue l'intestazione di IPv6, usa 
-      gli stessi valori del campo protocollo nell'intestazione di IPv4\\
-      \textit{hop limit}     &  8 bit & \textsl{limite di salti},
-      stesso significato del \textit{time to live} nell'intestazione di IPv4, 
-      è decrementato di uno ogni volta che un nodo ritrasmette il
-      pacchetto, se arriva a zero il pacchetto viene scartato \\
-      \textit{source IP}     & 128 bit & \textsl{indirizzo di origine} \\
-      \textit{destination IP}& 128 bit & \textsl{indirizzo di destinazione}\\
+      \textit{version}       & 4& La \textsl{versione}, nel caso specifico vale
+                                  sempre 6.\\ 
+      \textit{priority}      & 4& La \textsl{priorità}, vedi
+                                  sez.~\ref{sec:IPv6_prio}.\\
+      \textit{flow label}    &24& L'\textsl{etichetta di flusso}, vedi
+                                  sez.~\ref{sec:IP_ipv6_flow}.\\ 
+      \textit{payload length}&16& La \textsl{lunghezza del carico}, cioè del
+                                  corpo dei dati che segue l'intestazione, in
+                                  byte. \\ 
+      \textit{next header}   & 8& L'\textsl{intestazione successiva}, 
+                                  identifica il tipo di pacchetto che segue
+                                  l'intestazione di IPv6, ed usa gli stessi
+                                  valori del campo protocollo
+                                  nell'intestazione di IPv4.\\ 
+      \textit{hop limit}     & 8& Il \textsl{limite di salti}, ha lo stesso 
+                                  significato del \textit{time to live} 
+                                  nell'intestazione di IPv4.\\ 
+      \textit{source IP}     &128&L'\textsl{indirizzo di origine}.\\
+      \textit{destination IP}&128&L'\textsl{indirizzo di destinazione}.\\
       \hline
     \end{tabular}
     \caption{Legenda per il significato dei campi dell'intestazione di IPv6}
@@ -382,9 +507,9 @@ numero dei campi da 12 a 8.
   \end{center}
 \end{table}
 
-Abbiamo già anticipato in sez.~\ref{sec:IP_ipv6over} uno dei criteri principali
-nella progettazione di IPv6 è stato quello di ridurre al minimo il tempo di
-processamento dei pacchetti da parte dei router, un confronto con
+Abbiamo già anticipato in sez.~\ref{sec:IP_ipv6over} uno dei criteri
+principali nella progettazione di IPv6 è stato quello di ridurre al minimo il
+tempo di elaborazione dei pacchetti da parte dei router, un confronto con
 l'intestazione di IPv4 (vedi fig.~\ref{fig:IP_ipv4_head}) mostra le seguenti
 differenze:
 
@@ -398,8 +523,8 @@ differenze:
   veloce il processo da parte di computer con processori a 64 bit.
 \item i campi per gestire la frammentazione (\textit{identification},
   \textit{flag} e \textit{fragment offset}) sono stati eliminati; questo
-  perché la  frammentazione è un'eccezione che non deve rallentare il
-  processo dei pacchetti nel caso normale.
+  perché la frammentazione è un'eccezione che non deve rallentare
+  l'elaborazione dei pacchetti nel caso normale.
 \item è stato eliminato il campo \textit{checksum} in quanto tutti i
   protocolli di livello superiore (TCP, UDP e ICMPv6) hanno un campo di
   checksum che include, oltre alla loro intestazione e ai dati, pure i campi
@@ -407,9 +532,9 @@ differenze:
   di destinazione; una checksum esiste anche per la gran parte protocolli di
   livello inferiore (anche se quelli che non lo hanno, come SLIP, non possono
   essere usati con grande affidabilità); con questa scelta si è ridotto di
-  molti tempo di riprocessamento dato che i router non hanno più la
-  necessità di ricalcolare la checksum ad ogni passaggio di un pacchetto per
-  il cambiamento del campo \textit{hop limit}.
+  molto il tempo di elaborazione dato che i router non hanno più la necessità
+  di ricalcolare la checksum ad ogni passaggio di un pacchetto per il
+  cambiamento del campo \textit{hop limit}.
 \item è stato eliminato il campo \textit{type of service}, che praticamente
   non è mai stato utilizzato; una parte delle funzionalità ad esso delegate
   sono state reimplementate (vedi il campo \textit{priority} al prossimo
@@ -422,76 +547,25 @@ differenze:
   di dati per i quali si può provvedere un trattamento speciale.
 \end{itemize}
 
-
-\begin{figure}[htb]
-  \centering
-  \includegraphics[width=10cm]{img/ipv4_head}
-  \caption{L'intestazione o \textit{header} di IPv4.}
-  \label{fig:IP_ipv4_head}
-\end{figure}
-
-\begin{table}[htb]
-  \footnotesize
-  \begin{center}
-    \begin{tabular}{|l|c|p{9cm}|}
-      \hline
-      \textbf{Nome} & \textbf{Bit} & \textbf{Significato} \\
-      \hline
-      \hline
-      \textit{version}          &  4  & \textsl{versione}, nel caso 
-      specifico vale sempre 4\\
-      \textit{head length}      &  4  &\textsl{lunghezza dell'intestazione},
-      in multipli di 32 bit\\
-      \textit{type of service}  &  8  & \textsl{tipo di servizio}, 
-      consiste in: 3 bit di precedenza, 
-      correntemente ignorati; un bit non usato a 0;  4 bit che identificano
-      il tipo di servizio richiesto, uno solo dei quali può essere 1\\
-      \textit{total length}     & 16  & \textsl{lunghezza totale}, indica 
-      la dimensione del pacchetto IP in byte\\
-      \textit{identification}   & 16  & \textsl{identificazione}, 
-      assegnato alla creazione, è aumentato di uno all'origine della 
-      trasmissione di ciascun pacchetto, ma resta lo stesso per i 
-      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. \\
-      \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},
-      ha lo stesso significato di
-      \textit{hop limit}, vedi tab.~\ref{tab:IP_ipv6field}\\
-      \textit{protocol}        &  8  & \textsl{protocollo} 
-      identifica il tipo di pacchetto che segue
-      l'intestazione di IPv4\\
-      \textit{header checksum} & 16  & \textsl{checksum di intestazione}, 
-      somma di controllo per l'intestazione\\
-      \textit{source IP}       & 32  & \textsl{indirizzo di origine}\\
-      \textit{destination IP}  & 32  & \textsl{indirizzo di destinazione}\\
-      \hline
-    \end{tabular}
-    \caption{Legenda per il significato dei campi dell'intestazione di IPv4}
-    \label{tab:IP_ipv4field}
-  \end{center}
-\end{table}
-
 Oltre alle differenze precedenti, relative ai singoli campi nell'intestazione,
 ulteriori caratteristiche che diversificano il comportamento di IPv4 da
 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
   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 \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 \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).
 \end{itemize}
 
 \subsection{Gli indirizzi di IPv6}
@@ -570,7 +644,7 @@ pu
     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ù 
@@ -583,8 +657,8 @@ pu
 \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ò
@@ -592,19 +666,21 @@ essere identificato attraverso uno qualunque degli indirizzi unicast delle sue
 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
@@ -612,9 +688,10 @@ bit e il tipo di indirizzo che loro corrispondente.  I bit pi
 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
@@ -723,9 +800,9 @@ delle scheda di rete, e si usano i restanti 16~bit per indicare la sottorete.
 \end{table}
 
 Qualora si dovesse avere a che fare con una necessità di un numero più
-elevato di sottoreti, il precedente schema andrebbe modificato, per evitare
+elevato di sotto-reti, il precedente schema andrebbe modificato, per evitare
 l'enorme spreco dovuto all'uso dei MAC-address, a questo scopo si possono
-usare le capacità di autoconfigurazione di IPv6 per assegnare indirizzi
+usare le capacità di auto-configurazione di IPv6 per assegnare indirizzi
 generici con ulteriori gerarchie per sfruttare efficacemente tutto lo spazio
 di indirizzi.
 
@@ -771,7 +848,7 @@ localmente (all'interno di un sito o di una sottorete), e possono avere una
 unicità locale o globale.
 
 Questi indirizzi sono pensati per l'uso all'interno di un sito per mettere su
-una comunicazione locale immediata, o durante le fasi di autoconfigurazione
+una comunicazione locale immediata, o durante le fasi di auto-configurazione
 prima di avere un indirizzo globale.
 
 \begin{table}[htb]
@@ -833,7 +910,7 @@ costruirlo 
 Gli indirizzi di uso locale consentono ad una organizzazione che non è
 (ancora) connessa ad Internet di operare senza richiedere un prefisso globale,
 una volta che in seguito l'organizzazione venisse connessa a Internet
-potrebbe con4tinuare a usare la stessa suddivisione effettuata con gli
+potrebbe continuare a usare la stessa suddivisione effettuata con gli
 indirizzi \textit{site-local} utilizzando un prefisso globale e la
 rinumerazione degli indirizzi delle singole macchine sarebbe automatica.
 
@@ -904,12 +981,14 @@ l'accettazione di una connessione da qualunque host.
 \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
@@ -964,14 +1043,15 @@ Il prefisso di formato per tutti gli indirizzi \textit{multicast} 
     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 
@@ -997,15 +1077,16 @@ per il funzionamento della rete.
                       \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}
@@ -1056,10 +1137,10 @@ pacchetto, e poste in apposite \textsl{intestazioni di estensione} (o
 \textit{extension header}) poste fra l'intestazione di IPv6 e l'intestazione
 del protocollo di trasporto.
 
-Per aumentare la velocità di processo, sia dei dati del livello seguente che
-di ulteriori opzioni, ciascuna estensione deve avere una lunghezza multipla di
-8 byte per mantenere l'allineamento a 64~bit di tutti le intestazioni
-seguenti.
+Per aumentare la velocità di elaborazione, sia dei dati del livello seguente
+che di ulteriori opzioni, ciascuna estensione deve avere una lunghezza
+multipla di 8 byte per mantenere l'allineamento a 64~bit di tutti le
+intestazioni seguenti.
 
 Dato che la maggior parte di queste estensioni non sono esaminate dai router
 durante l'instradamento e la trasmissione dei pacchetti, ma solo all'arrivo
@@ -1096,7 +1177,7 @@ Le estensioni definite al momento sono le seguenti:
 \end{itemize}
 
 La presenza di opzioni è rilevata dal valore del campo \textit{next header}
-che indica qual'è l'intestazione successiva a quella di IPv6; in assenza di
+che indica qual è l'intestazione successiva a quella di IPv6; in assenza di
 opzioni questa sarà l'intestazione di un protocollo di trasporto del livello
 superiore, per cui il campo assumerà lo stesso valore del campo
 \textit{protocol} di IPv4, altrimenti assumerà il valore dell'opzione
@@ -1111,24 +1192,24 @@ tab.~\ref{tab:IP_ipv6_nexthead}.
       \textbf{Valore} & \textbf{Keyword} & \textbf{Tipo di protocollo} \\
       \hline
       \hline
-      0  &      & riservato\\
-         & HBH  & Hop by Hop \\
-      1  & ICMP & Internet Control Message (IPv4 o IPv6) \\
-      2  & ICMP & Internet Group Management (IPv4) \\
-      3  & GGP  & Gateway-to-Gateway \\
-      4  & IP   & IP in IP (IPv4 encapsulation) \\
-      5  & ST   & Stream \\
-      6  & TCP  & Trasmission Control \\
-      17 & UDP  & User Datagram \\
-      43 & RH   & Routing Header (IPv6) \\
-      44 & FH   & Fragment Header (IPv6) \\
-      45 & IDRP & Inter Domain Routing \\
-      51 & AH   & Authentication Header (IPv6) \\
-      52 & ESP  & Encrypted Security Payload (IPv6) \\
-      59 & Null & No next header (IPv6) \\
-      88 & IGRP & Internet Group Routing \\
-      89 & OSPF & Open Short Path First \\
-      255&      & riservato \\
+      0  &      & Riservato.\\
+         & HBH  & Hop by Hop.\\
+      1  & ICMP & Internet Control Message (IPv4 o IPv6).\\
+      2  & ICMP & Internet Group Management (IPv4).\\
+      3  & GGP  & Gateway-to-Gateway.\\
+      4  & IP   & IP in IP (IPv4 encapsulation).\\
+      5  & ST   & Stream.\\
+      6  & TCP  & Trasmission Control.\\
+      17 & UDP  & User Datagram.\\
+      43 & RH   & Routing Header (IPv6).\\
+      44 & FH   & Fragment Header (IPv6).\\
+      45 & IDRP & Inter Domain Routing.\\
+      51 & AH   & Authentication Header (IPv6).\\
+      52 & ESP  & Encrypted Security Payload (IPv6).\\
+      59 & Null & No next header (IPv6).\\
+      88 & IGRP & Internet Group Routing.\\
+      89 & OSPF & Open Short Path First.\\
+      255&      & Riservato.\\
     \hline
     \end{tabular}
     \caption{Tipi di protocolli e intestazioni di estensione}
@@ -1184,7 +1265,7 @@ rendere utilizzabile un qualunque sottoinsieme dei bit come chiavi di hash per
 i router.
 
 \subsection{Priorità}
-\label{sec:prio}
+\label{sec:IPv6_prio}
 
 Il campo di priorità consente di indicare il livello di priorità dei
 pacchetti relativamente agli altri pacchetti provenienti dalla stessa
@@ -1206,12 +1287,12 @@ valori di priorit
     \textbf{Valore} & \textbf{Tipo di traffico} \\
     \hline
     \hline
-    0 & traffico generico \\
-    1 & traffico di riempimento (es. news) \\
-    2 & trasferimento dati non interattivo (es. e-mail)\\
-    3 & riservato \\
-    4 & trasferimento dati interattivo (es. FTP, HTTP, NFS) \\
-    5 & riservato \\
+    0 & Traffico generico.\\
+    1 & Traffico di riempimento (es. news).\\
+    2 & Trasferimento dati non interattivo (es. e-mail).\\
+    3 & Riservato.\\
+    4 & Trasferimento dati interattivo (es. FTP, HTTP, NFS).\\
+    5 & Riservato.\\
     \hline
 \end{tabular}
 \caption{Formato di un indirizzo \textit{site-local}.}
@@ -1257,7 +1338,7 @@ il nome di associazione di sicurezza.
 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} 
@@ -1350,20 +1431,20 @@ fino al vettore di inizializzazione, il resto 
   \centering
   \includegraphics[width=10cm]{img/esp_option}
   \caption{Schema di pacchetto crittografato.}
-  \label{tab:ESP_criptopack}
+  \label{fig:ESP_criptopack}
 \end{figure}
 
 
 
-\subsection{Autoconfigurazione}
+\subsection{Auto-configurazione}
 \label{sec:IP_ipv6_autoconf}
 
-Una delle caratteristiche salienti di IPv6 è quella dell'autoconfigurazione,
+Una delle caratteristiche salienti di IPv6 è quella dell'auto-configurazione,
 il protocollo infatti fornisce la possibilità ad un nodo di scoprire
 automaticamente il suo indirizzo acquisendo i parametri necessari per potersi
 connettere a internet.
 
-L'autoconfigurazione sfrutta gli indirizzi link-local; qualora sul nodo sia
+L'auto-configurazione sfrutta gli indirizzi 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
@@ -1382,24 +1463,25 @@ richiedendo assistenza).
 
 Una volta ottenuto un indirizzo locale valido diventa possibile per il nodo
 comunicare con la rete locale; sono pertanto previste due modalità di
-autoconfigurazione, descritte nelle seguenti sezioni. In ogni caso
+auto-configurazione, descritte nelle seguenti sezioni. In ogni caso
 l'indirizzo link-local resta valido.
 
-\subsection{Autoconfigurazione stateless}
+\subsection{Auto-configurazione stateless}
 \label{sec:stateless}
 
-Questa è la forma più semplice di autoconfigurazione, possibile quando
+Questa è la forma più semplice di auto-configurazione, possibile quando
 l'indirizzo globale può essere ricavato dall'indirizzo 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 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
@@ -1409,10 +1491,10 @@ l'indirizzo, nel qual caso, se il prefisso unito all'indirizzo link-local non
 supera i 128 bit, la stazione ottiene automaticamente il suo indirizzo
 globale.
 
-\subsection{Autoconfigurazione stateful}
+\subsection{Auto-configurazione stateful}
 \label{sec:stateful}
 
-Benché estremamente semplice l'autoconfigurazione stateless presenta alcuni
+Benché estremamente semplice l'auto-configurazione stateless presenta alcuni
 problemi; il primo è che l'uso degli indirizzi delle schede di rete è
 molto inefficiente; nel caso in cui ci siano esigenze di creare una gerarchia
 strutturata su parecchi livelli possono non restare 48~bit per l'indirizzo
@@ -1420,11 +1502,162 @@ della singola stazione; il secondo problema 
 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.
+
+
+\section{Il protocollo ICMP}
+\label{sec:ICMP_protocol}
+
+Come già accennato nelle sezioni precedenti, l'\textit{Internet Control
+  Message Protocol} è un protocollo di servizio fondamentale per il
+funzionamento del livello di rete. Il protocollo ICMP viene trasportato
+direttamente su IP, ma proprio per questa sua caratteristica di protocollo di
+servizio è da considerarsi a tutti gli effetti appartenente al livello di
+rete.
+
+
+\subsection{L'intestazione di ICMP}
+\label{sec:ICMP_header}
+
+Il protocollo ICMP è estremamente semplice, ed il suo unico scopo è quello di
+inviare messaggi di controllo; in fig.~\ref{fig:ICMP_header} si è riportata la
+struttura dell'intestazione di un pacchetto ICMP generico. 
+
+\begin{figure}[htb]
+  \centering \includegraphics[width=12cm]{img/icmp_head}
+  \caption{L'intestazione del protocollo ICMP.}
+  \label{fig:ICMP_header}
+\end{figure}
+
+
+
+
+\begin{table}[!htb]
+  \centering
+  \footnotesize
+  \begin{tabular}{|l|l|p{9.5cm}|}
+    \hline
+    \textbf{Valore}&\textbf{Tipo}&\textbf{Significato}\\
+    \hline
+    \hline
+    \texttt{any} & -- & Seleziona tutti i possibili valori \\
+    \hline
+    \texttt{echo-reply}             &0& Inviato in risposta ad un ICMP
+                                        \textit{echo-request}.\\ 
+    \texttt{destination-unreachable}&3& Segnala una destinazione 
+                                        irraggiungibile, viene
+                                        inviato all'IP sorgente di un
+                                        pacchetto quando un router realizza
+                                        che questo non può essere inviato a
+                                        destinazione.\\
+    \texttt{source-quench}          &4& Inviato in caso di congestione della
+                                        rete per indicare all'IP sorgente di
+                                        diminuire il traffico inviato.\\
+    \texttt{redirect}               &5& Inviato per segnalare un errore di
+                                        routing, richiede che la macchina
+                                        sorgente rediriga il traffico ad un
+                                        altro router da esso specificato.\\
+    \texttt{echo-request}           &8& Richiede l'invio in risposta di un
+                                        \texttt{echo-reply}.\\
+%    \texttt{router-advertisement}   & & \\
+%    \texttt{router-solicitation}    & & \\
+    \texttt{time-exceeded}          &11& Inviato quando il TTL di un pacchetto
+                                         viene azzerato.\\
+    \texttt{parameter-problem}      &12& Inviato da un router che rileva dei
+                                         problemi con l'intestazione di un
+                                         pacchetto.\\
+    \texttt{timestamp-request}      &13& Richiede l'invio in risposta di un
+                                         \texttt{timestamp-reply}.\\
+    \texttt{timestamp-reply}        &14& Inviato in risposta di un
+                                         \texttt{timestamp-request}.\\
+    \texttt{info-request}           &15& Richiede l'invio in risposta di un
+                                         \texttt{info-reply}.\\
+    \texttt{info-reply}             &16& Inviato in risposta di un
+                                         \texttt{info-request}.\\
+    \texttt{address-mask-request}   &17& Richiede l'invio in risposta di un
+                                         \texttt{address-mask-reply}.\\
+    \texttt{address-mask-reply}     &18& Inviato in risposta di un
+                                         \texttt{address-mask-request}.\\
+    \hline
+  \end{tabular}
+  \caption{I valori del \textsl{tipo} per i pacchetti ICMP.}
+\label{tab:ICMP_type}
+\end{table}
+
+
+
+\begin{table}[!htb]
+  \centering
+  \footnotesize
+  \begin{tabular}{|l|l|}
+    \hline
+    \textbf{Valore}&\textbf{Codice}\\
+    \hline
+    \hline
+    \texttt{network-unreachable}      &0\\
+    \texttt{host-unreachable}         &1\\
+    \texttt{protocol-unreachable}     &2\\
+    \texttt{port-unreachable}         &3 \\
+    \texttt{fragmentation-needed}     &4\\
+    \texttt{source-route-failed}      &5\\
+    \texttt{network-unknown}          &6\\
+    \texttt{host-unknown}             &7\\
+    \texttt{host-isolated}            &8\\
+    \texttt{network-prohibited}       &9\\
+    \texttt{host-prohibited}          &10 \\
+    \texttt{TOS-network-unreachable}  &11 \\
+    \texttt{TOS-host-unreachable}     &12 \\
+    \texttt{communication-prohibited} &13 \\
+    \texttt{host-precedence-violation}&14 \\
+    \texttt{precedence-cutoff}        &15 \\
+    \hline
+    \texttt{network-redirect}         &0  \\
+    \texttt{host-redirect}            &1  \\
+    \texttt{TOS-network-redirect}     &2  \\
+    \texttt{TOS-host-redirect}        &3  \\
+    \hline
+    \texttt{ttl-zero-during-transit}  &0 \\
+    \texttt{ttl-zero-during-reassembly}&1 \\
+    \hline
+    \texttt{ip-header-bad}            &0 \\
+    \texttt{required-option-missing}  &1 \\
+    \hline
+  \end{tabular}
+  \caption{Valori del campo \textsl{codice} per il protocollo ICMP.}
+\label{tab:ICMP_code}
+\end{table}
+
+
+% LocalWords:  sez Protocol IPv dall' RFC Ethernet Token FDDI Universal host of
+% LocalWords:  addressing Best effort l'host router IANA Assigned Number tab to
+% LocalWords:  Authority quest'ultime multicast group reserved for CIDR Domain
+% LocalWords:  Classless Routing TOS Type Service IPTOS LOWDELAY THROUGHPUT QoS
+% LocalWords:  RELIABILITY MINCOST optval anycast unicast fig header version FE
+% LocalWords:  priority flow label payload length next hop limit live source FF
+% LocalWords:  destination identification fragment checksum TCP UDP ICMPv type
+% LocalWords:  service head total fragmentation protocol broadcast broadcasting
+% LocalWords:  multicasting path MTU discovery NSAP IPX based geografic local
+% LocalWords:  routing format prefix Registry Subscriber Intra Regional
+% LocalWords:  Register INTERNIC NCC APNIC subscriber Interface MAC address Reg
+% LocalWords:  Subnet Naz Prov Subscr FEBF bootstrap FEC FEFF DNS socket FFFF
+% LocalWords:  sull'host loopback scop all nodes routers rip cbt name dhcp HBH
+% LocalWords:  agents servers relays solicited extension options route Keyword
+% LocalWords:  Authentication Encapsulation ICMP Control Message GGP Gateway ST
+% LocalWords:  encapsulation Stream Trasmission Datagram RH FH IDRP ESP Null ip
+% LocalWords:  Encrypted Security IGRP OSPF Short First tunnelling FFFFFF hash
+% LocalWords:  news FTP NFS authentication Parameter Index ICV Integrity Value
+% LocalWords:  padding Option gateway dell'MD keyed Encripted IEEE ethernet any
+% LocalWords:  Solicitation
+% LocalWords:  stateless solicitation Advertisement stateful Transfer Unit echo
+% LocalWords:  l'autoconfigurazione reply request unreachable all'IP quench TTL
+% LocalWords:  redirect exceeded parameter problem timestamp info mask port ttl
+% LocalWords:  needed failed unknown isolated prohibited communication cutoff
+% LocalWords:  precedence violation during reassembly bad required option
+% LocalWords:  missing