Aggiornamento data copyright
[gapil.git] / netlayer.tex
index 4195888260a9365081d9cc3bd292bf41a35b63c7..b49cb3687a52e06c3973a7d3ec41198c3a07810a 100644 (file)
@@ -1,13 +1,13 @@
 %% netlayer.tex
 %%
-%% Copyright (C) 2000-2007 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2011 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}
@@ -237,45 +237,46 @@ pacchetto (cio
       \textbf{Nome} & \textbf{Bit} & \textbf{Significato} \\
       \hline
       \hline
-      \textit{version}       & 4& numero di \textsl{versione}, nel caso 
+      \textit{version}       & 4& Numero di \textsl{versione}, nel caso 
                                   specifico vale sempre 4.\\
-      \textit{head length}   & 4& lunghezza dell'intestazione,
+      \textit{head length}   & 4& Lunghezza dell'intestazione,
                                   in multipli di 32 bit.\\
-      \textit{type of service}&8& \textsl{tipo di servizio}, è suddiviso in:
-                                  3 bit di precedenza, che nelle attuali
+      \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& \textsl{lunghezza totale}, indica 
+      \textit{total length}  &16& La \textsl{lunghezza totale}, indica 
                                   la dimensione del carico di dati del
                                   pacchetto IP in byte.\\ 
-      \textit{identification}&16& \textsl{identificazione}, assegnato alla
+      \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& \textsl{flag}, sono 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& \textsl{offset di frammento}, indica
+      \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& \textsl{tempo di vita}, è decrementato di
+      \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& \textsl{protocollo}, identifica il tipo di
+      \textit{protocol}      & 8& Il \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}.\\
+      \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}
@@ -287,25 +288,49 @@ pacchetto (cio
 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. 
+questo campo. Abbiamo già visto come il valore di questo campo può essere
+impostato sul singolo socket con l'opzione \const{IP\_TOS} (vedi
+sez.~\ref{sec:sock_ipv4_options}), esso inoltre può essere manipolato sia dal
+sistema del \textit{netfilter} di Linux con il comando \texttt{iptables} che
+dal sistema del routing avanzato del comando \texttt{ip route} per consentire
+un controllo più dettagliato dell'instradamento dei pacchetti e l'uso di
+priorità e politiche di distribuzione degli stessi.
 
 \begin{table}[!htb]
   \centering
   \footnotesize
-  \begin{tabular}[c]{|l|p{6 cm}|}
+  \begin{tabular}{|l|l|p{8cm}|}
+    \hline
+    \multicolumn{2}{|c|}{\textbf{Valore}}&\textbf{Significato}\\
     \hline
-    \textbf{Costante} & \textbf{Significato} \\
     \hline
+    \const{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
+                                                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
+                                                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,
+                                                dove non interessa se si ha
+                                                una bassa velocità di
+                                                trasmissione, da utilizzare
+                                                per i collegamenti con minor
+                                                costo (usato per i protocolli
+                                                di streaming).\\ 
+    \textit{Normal-Service}&\texttt{0x0}      & Nessuna richiesta specifica.\\
     \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
@@ -313,14 +338,40 @@ questo campo.
   \label{tab:IP_TOS_values}
 \end{table}
 
+I possibili valori del campo TOS, insieme al relativo significato ed alle
+costanti numeriche ad esso associati, sono riportati in
+tab.~\ref{tab:IP_TOS_values}. Per il valore nullo, usato di default per tutti
+i pacchetti, e relativo al traffico normale, non esiste nessuna costante
+associata. 
 
+Il campo TTL, acromino di \textit{Time To Live}, viene utilizzato per
+stabilire una sorta di tempo di vita massimo dei pacchetti sulla rete. In
+realtà più che di un tempo, il campo serve a limitare il numero massimo di
+salti (i cosiddetti \textit{hop}) che un pacchetto IP può compiere nel passare
+da un router ad un altro nel suo attraversamento della rete verso la
+destinazione.
 
-\subsection{Le opzioni di IP}
-\label{sec:IP_options}
+Il protocollo IP prevede infatti che il valore di questo campo venga
+decrementato di uno da ciascun router che ritrasmette il pacchetto verso la
+sua destinazione, e che quando questo diventa nullo il router lo debba
+scartare, inviando all'indirizzo sorgente un pacchetto ICMP di tipo
+\textit{time-exceeded} con un codice \textit{ttl-zero-during-transit} se
+questo avviene durante il transito sulla rete o
+\textit{ttl-zero-during-reassembly} se questo avviene alla destinazione finale
+(vedi sez.~\ref{sec:ICMP_protocol}).
+
+In sostanza grazie all'uso di questo accorgimento un pacchetto non può
+continuare a vagare indefinitamente sulla rete, e viene comunque scartato dopo
+un certo tempo, o meglio, dopo che ha attraversato in certo numero di
+router. Nel caso di Linux il valore iniziale utilizzato normalmente è 64 (vedi
+sez.~\ref{sec:sock_ipv4_sysctl}).
 
 
 
+\subsection{Le opzioni di IP}
+\label{sec:IP_options}
 
+Da fare ...
 
 
 \section{Il protocollo IPv6}
@@ -394,7 +445,7 @@ 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{unicast} e \itindex{multicast}
   \textit{multicast}
@@ -480,25 +531,25 @@ numero dei campi da 12 a 8.
       \textbf{Nome} & \textbf{Bit} & \textbf{Significato} \\
       \hline
       \hline
-      \textit{version}       & 4& \textsl{versione}, nel caso specifico vale
+      \textit{version}       & 4& La \textsl{versione}, nel caso specifico vale
                                   sempre 6.\\ 
-      \textit{priority}      & 4& \textsl{priorità}, vedi
+      \textit{priority}      & 4& La \textsl{priorità}, vedi
                                   sez.~\ref{sec:IPv6_prio}.\\
-      \textit{flow label}    &24& \textsl{etichetta di flusso}, vedi
+      \textit{flow label}    &24& L'\textsl{etichetta di flusso}, vedi
                                   sez.~\ref{sec:IP_ipv6_flow}.\\ 
-      \textit{payload length}&16& \textsl{lunghezza del carico}, cioè del
+      \textit{payload length}&16& La \textsl{lunghezza del carico}, cioè del
                                   corpo dei dati che segue l'intestazione, in
                                   byte. \\ 
-      \textit{next header}   & 8& \textsl{intestazione successiva}, identifica
-                                  il tipo di pacchetto che segue
-                                  l'intestazione di IPv6, usa gli stessi
+      \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& \textsl{limite di salti}, stesso significato
-                                  del \textit{time to live} nell'intestazione
-                                  di IPv4.\\ 
-      \textit{source IP}     &128&\textsl{indirizzo di origine}.\\
-      \textit{destination IP}&128&\textsl{indirizzo di destinazione}.\\
+      \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}
@@ -799,9 +850,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.
 
@@ -847,7 +898,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]
@@ -1191,24 +1242,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  & IGMP & 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}
@@ -1286,12 +1337,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}.}
@@ -1435,15 +1486,15 @@ fino al vettore di inizializzazione, il resto 
 
 
 
-\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
@@ -1462,13 +1513,13 @@ 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.
@@ -1490,10 +1541,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
@@ -1509,18 +1560,21 @@ l'indirizzo link-local e ricever
 
 
 \section{Il protocollo ICMP}
-\label{sec:icmp_protocol}
-
-Il protocollo ICMP \textit{Internet Control Message Protocol} è un protocollo
-di servizio fondamentale per il funzionamento del livello di rete. I pacchetti
+\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}
 
-
-In fig.~\ref{fig:ICMP_header} si è riportata la struttura dell'intestazione di
-un pacchetto ICMP generico. 
+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}
@@ -1528,8 +1582,10 @@ un pacchetto ICMP generico.
   \label{fig:ICMP_header}
 \end{figure}
 
-
-
+Ciascun pacchetto ICMP è contraddistinto dal valore del primo campo, il tipo,
+che indica appunto che tipo di messaggio di controllo viene veicolato dal
+pacchetto in questione; i valori possibili per questo campo, insieme al
+relativo significato, sono riportati in tab.~\ref{tab:ICMP_type}.
 
 \begin{table}[!htb]
   \centering
@@ -1541,49 +1597,56 @@ un pacchetto ICMP generico.
     \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 
+    \textit{echo-reply}             &0& Inviato in risposta ad un ICMP
+                                        \textit{echo-request}.\\ 
+    \textit{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
+                                        destinazione.\\
+    \textit{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
+    \textit{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
+                                        altro router da esso specificato.\\
+    \textit{echo-request}           &8& Richiede l'invio in risposta di un
+                                        \textit{echo-reply}.\\
+%    \textit{router-advertisement}   & & \\
+%    \textit{router-solicitation}    & & \\
+    \textit{time-exceeded}          &11& Inviato quando il TTL di un pacchetto
                                          viene azzerato.\\
-    \texttt{parameter-problem}      &12& inviato da un router che rileva dei
+    \textit{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}. \\
+                                         pacchetto.\\
+    \textit{timestamp-request}      &13& Richiede l'invio in risposta di un
+                                         \textit{timestamp-reply}.\\
+    \textit{timestamp-reply}        &14& Inviato in risposta di un
+                                         \textit{timestamp-request}.\\
+    \textit{info-request}           &15& Richiede l'invio in risposta di un
+                                         \textit{info-reply}.\\
+    \textit{info-reply}             &16& Inviato in risposta di un
+                                         \textit{info-request}.\\
+    \textit{address-mask-request}   &17& Richiede l'invio in risposta di un
+                                         \textit{address-mask-reply}.\\
+    \textit{address-mask-reply}     &18& Inviato in risposta di un
+                                         \textit{address-mask-request}.\\
     \hline
   \end{tabular}
   \caption{I valori del \textsl{tipo} per i pacchetti ICMP.}
 \label{tab:ICMP_type}
 \end{table}
 
-
+Per alcuni tipi di messaggi ICMP, esiste un secondo campo, detto codice, che
+specifica ulteriormente la natura del messaggio; i soli messaggi che
+utilizzano un valore per questo campo sono quelli di tipo
+\textit{destination-unreachable}, \textit{redirect}, \textit{time-exceeded} e
+\textit{parameter-problem}. I possibili valori del codice relativi a ciascuno
+di essi sono stati riportati nelle quattro sezioni in cui si è suddivisa
+tab.~\ref{tab:ICMP_code}, rispettivamente nell'ordine con cui sono appena
+elencati i tipi a cui essi fanno riferimento. 
 
 \begin{table}[!htb]
   \centering
@@ -1593,33 +1656,33 @@ un pacchetto ICMP generico.
     \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 \\
+    \textit{network-unreachable}      &0\\
+    \textit{host-unreachable}         &1\\
+    \textit{protocol-unreachable}     &2\\
+    \textit{port-unreachable}         &3 \\
+    \textit{fragmentation-needed}     &4\\
+    \textit{source-route-failed}      &5\\
+    \textit{network-unknown}          &6\\
+    \textit{host-unknown}             &7\\
+    \textit{host-isolated}            &8\\
+    \textit{network-prohibited}       &9\\
+    \textit{host-prohibited}          &10 \\
+    \textit{TOS-network-unreachable}  &11 \\
+    \textit{TOS-host-unreachable}     &12 \\
+    \textit{communication-prohibited} &13 \\
+    \textit{host-precedence-violation}&14 \\
+    \textit{precedence-cutoff}        &15 \\
     \hline
-    \texttt{network-redirect}         &0  \\
-    \texttt{host-redirect}            &1  \\
-    \texttt{TOS-network-redirect}     &2  \\
-    \texttt{TOS-host-redirect}        &3  \\
+    \textit{network-redirect}         &0  \\
+    \textit{host-redirect}            &1  \\
+    \textit{TOS-network-redirect}     &2  \\
+    \textit{TOS-host-redirect}        &3  \\
     \hline
-    \texttt{ttl-zero-during-transit}  &0 \\
-    \texttt{ttl-zero-during-reassembly}&1 \\
+    \textit{ttl-zero-during-transit}  &0 \\
+    \textit{ttl-zero-during-reassembly}&1 \\
     \hline
-    \texttt{ip-header-bad}            &0 \\
-    \texttt{required-option-missing}  &1 \\
+    \textit{ip-header-bad}            &0 \\
+    \textit{required-option-missing}  &1 \\
     \hline
   \end{tabular}
   \caption{Valori del campo \textsl{codice} per il protocollo ICMP.}
@@ -1636,7 +1699,7 @@ un pacchetto ICMP generico.
 % 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 nell' Registry Subscriber Intra Regional
+% LocalWords:  routing format prefix Registry Subscriber Intra Regional SSH
 % 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
@@ -1646,7 +1709,7 @@ un pacchetto ICMP generico.
 % 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:  dell'autoconfigurazione L'autoconfigurazione Solicitation l'IP
+% LocalWords:  Solicitation netfilter iptables TFTP streaming Normal IGMP
 % 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