Aggiornamento anno note di copyright, dimenticato da gennaio...
[gapil.git] / netlayer.tex
index 4fb7e1f5e9367813ac8fdd113ac8cdec35348798..9ecb451e74261c71077e0b94683ba939959dc24e 100644 (file)
@@ -1,15 +1,13 @@
 %% netlayer.tex
 %%
-%% Copyright (C) 2000-2006 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}
@@ -26,7 +24,8 @@ Data la loro prevalenza il capitolo sar
 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.
+IPv6. Tratteremo comunque anche il protocollo ICMP e la sua versione
+modificata per IPv6 (cioè ICMPv6).
 
 
 \section{Il protocollo IP}
@@ -46,7 +45,6 @@ pi
 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
@@ -54,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
@@ -65,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 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.
+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
@@ -148,15 +146,20 @@ di reti di dimensioni diverse.
 \label{tab:IP_ipv4class}
 \end{table}
 
-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 è
+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
@@ -201,11 +204,86 @@ 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
@@ -215,18 +293,18 @@ questo campo.
 \begin{table}[!htb]
   \centering
   \footnotesize
-  \begin{tabular}[c]{|l|l|}
+  \begin{tabular}[c]{|l|p{6 cm}|}
     \hline
     \textbf{Costante} & \textbf{Significato} \\
     \hline
     \hline
-    \const{IPTOS\_LOWDELAY}   & minimizza i ritardi per il traffico
+    \const{IPTOS\_LOWDELAY}   & Minimizza i ritardi per il traffico
                                 interattivo. \\
-    \const{IPTOS\_THROUGHPUT} & ottimizza la trasmissione per il massimo
+    \const{IPTOS\_THROUGHPUT} & Ottimizza la trasmissione per il massimo
                                 flusso di dati.\\
-    \const{IPTOS\_RELIABILITY}& ottimizza per l'affidabilità della
+    \const{IPTOS\_RELIABILITY}& Ottimizza per l'affidabilità della
                                 trasmissione. \\
-    \const{IPTOS\_MINCOST}    & usato per dati di riempimento, dove non
+    \const{IPTOS\_MINCOST}    & Usato per dati di riempimento, dove non
                                 interessa se c'è una bassa velocità di
                                 trasmissione.\\
     \hline
@@ -317,7 +395,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}
@@ -400,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}
@@ -468,59 +547,6 @@ 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:
@@ -535,10 +561,11 @@ quello di IPv6 sono le seguenti:
   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}
@@ -773,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.
 
@@ -821,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]
@@ -1165,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}
@@ -1238,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
@@ -1260,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}.}
@@ -1409,15 +1436,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
@@ -1436,13 +1463,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.
@@ -1464,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
@@ -1482,11 +1509,128 @@ interrogher
 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}
 
-%%% Local Variables: 
-%%% mode: latex
-%%% TeX-master: "gapil"
-%%% End: 
 
 % LocalWords:  sez Protocol IPv dall' RFC Ethernet Token FDDI Universal host of
 % LocalWords:  addressing Best effort l'host router IANA Assigned Number tab to
@@ -1497,16 +1641,27 @@ l'indirizzo link-local e ricever
 % 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
 % 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
+% 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
-% LocalWords:  dell'autoconfigurazione L'autoconfigurazione Solicitation
-% LocalWords:  stateless solicitation Advertisement stateful
-% LocalWords:  l'autoconfigurazione
+% 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
+
+
+
+%%% Local Variables: 
+%%% mode: latex
+%%% TeX-master: "gapil"
+%%% End: