Correzioni ortografiche e materiale su sysctl del TCP
[gapil.git] / netlayer.tex
index 9911d78fd06cd0e1c0b3d1cc755cb53a16cebff3..a9c7222d137f00c80c556da19af11ed034452825 100644 (file)
@@ -1,15 +1,13 @@
 %% netlayer.tex
 %%
 %% netlayer.tex
 %%
-%% Copyright (C) 2000-2006 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2007 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".
 %% 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}
 
 \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
 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}
 
 
 \section{Il protocollo IP}
@@ -159,7 +158,7 @@ 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
   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
+  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
 conseguente spreco di numeri.
 
 Inoltre, in particolare per le reti di classe C, la presenza di tanti
@@ -238,45 +237,46 @@ pacchetto (cio
       \textbf{Nome} & \textbf{Bit} & \textbf{Significato} \\
       \hline
       \hline
       \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.\\
                                   specifico vale sempre 4.\\
-      \textit{head length}   & 4& lunghezza dell'intestazione,
+      \textit{head length}   & 4& Lunghezza dell'intestazione,
                                   in multipli di 32 bit.\\
                                   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.\\ 
                                   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.\\ 
                                   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.\\
                                   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.\\
                                   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.\\ 
                                   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.\\
                                   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}
       \hline
     \end{tabular}
     \caption{Legenda per il significato dei campi dell'intestazione di IPv4}
@@ -293,18 +293,18 @@ questo campo.
 \begin{table}[!htb]
   \centering
   \footnotesize
 \begin{table}[!htb]
   \centering
   \footnotesize
-  \begin{tabular}[c]{|l|l|}
+  \begin{tabular}[c]{|l|p{6 cm}|}
     \hline
     \textbf{Costante} & \textbf{Significato} \\
     \hline
     \hline
     \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. \\
                                 interattivo. \\
-    \const{IPTOS\_THROUGHPUT} & ottimizza la trasmissione per il massimo
+    \const{IPTOS\_THROUGHPUT} & Ottimizza la trasmissione per il massimo
                                 flusso di dati.\\
                                 flusso di dati.\\
-    \const{IPTOS\_RELIABILITY}& ottimizza per l'affidabilità della
+    \const{IPTOS\_RELIABILITY}& Ottimizza per l'affidabilità della
                                 trasmissione. \\
                                 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
                                 interessa se c'è una bassa velocità di
                                 trasmissione.\\
     \hline
@@ -481,25 +481,25 @@ numero dei campi da 12 a 8.
       \textbf{Nome} & \textbf{Bit} & \textbf{Significato} \\
       \hline
       \hline
       \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.\\ 
                                   sempre 6.\\ 
-      \textit{priority}      & 4& \textsl{priorità}, vedi
+      \textit{priority}      & 4& La \textsl{priorità}, vedi
                                   sez.~\ref{sec:IPv6_prio}.\\
                                   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}.\\ 
                                   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. \\ 
                                   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.\\ 
                                   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}
       \hline
     \end{tabular}
     \caption{Legenda per il significato dei campi dell'intestazione di IPv6}
@@ -1192,24 +1192,24 @@ tab.~\ref{tab:IP_ipv6_nexthead}.
       \textbf{Valore} & \textbf{Keyword} & \textbf{Tipo di protocollo} \\
       \hline
       \hline
       \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}
     \hline
     \end{tabular}
     \caption{Tipi di protocolli e intestazioni di estensione}
@@ -1287,12 +1287,12 @@ valori di priorit
     \textbf{Valore} & \textbf{Tipo di traffico} \\
     \hline
     \hline
     \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}.}
     \hline
 \end{tabular}
 \caption{Formato di un indirizzo \textit{site-local}.}
@@ -1509,11 +1509,128 @@ interrogher
 l'indirizzo link-local e riceverà un indirizzo unicast globale.
 
 
 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
 
 % LocalWords:  sez Protocol IPv dall' RFC Ethernet Token FDDI Universal host of
 % LocalWords:  addressing Best effort l'host router IANA Assigned Number tab to
@@ -1530,10 +1647,21 @@ l'indirizzo link-local e ricever
 % 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:  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:  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:  dell'autoconfigurazione L'autoconfigurazione Solicitation l'IP
+% 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: