Aggiornamenti del copyright all'anno nuovo, e risistemazione delle
[gapil.git] / netlayer.tex
index 4fb7e1f5e9367813ac8fdd113ac8cdec35348798..b143281510dbd68b42c8ba0e0b03461ea4cf057b 100644 (file)
@@ -1,6 +1,6 @@
 %% 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",
 %% 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",
@@ -9,8 +9,6 @@
 %% License".
 %%
 
 %% License".
 %%
 
-
-
 \chapter{Il livello di rete}
 \label{cha:network_layer}
 
 \chapter{Il livello di rete}
 \label{cha:network_layer}
 
@@ -46,7 +44,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:
 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
 \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 +51,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
 \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
 \end{itemize}
 
 Per effettuare la comunicazione e l'instradamento dei pacchetti fra le varie
@@ -65,16 +62,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.
 
 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
 
 \begin{table}[htb]
   \centering
@@ -148,15 +145,20 @@ di reti di dimensioni diverse.
 \label{tab:IP_ipv4class}
 \end{table}
 
 \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
 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
 
 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 +203,85 @@ rete o suddividere una classe B e diminuendo al contempo il numero di
 indirizzi di rete da inserire nelle tabelle di instradamento dei router.
 
 
 indirizzi di rete da inserire nelle tabelle di instradamento dei router.
 
 
-
-
 \subsection{L'intestazione di IP}
 \label{sec:IP_header}
 
 \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& \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 
+                                  la dimensione del carico di dati 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, 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
+                                  la posizione del frammento rispetto al
+                                  pacchetto originale.\\
+      \textit{time to live}  &16& \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
+                                  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}
+
 
 Il campo TOS definisce il cosiddetto \textit{Type of Service}; questo permette
 di definire il tipo di traffico contenuto nei pacchetti, e può essere
 
 Il campo TOS definisce il cosiddetto \textit{Type of Service}; questo permette
 di definire il tipo di traffico contenuto nei pacchetti, e può essere
@@ -400,27 +476,28 @@ numero dei campi da 12 a 8.
   \footnotesize
     \begin{tabular}{|l|c|p{8cm}|}
       \hline
   \footnotesize
     \begin{tabular}{|l|c|p{8cm}|}
       \hline
-      \textbf{Nome} & \textbf{Lunghezza} & \textbf{Significato} \\
+      \textbf{Nome} & \textbf{Bit} & \textbf{Significato} \\
       \hline
       \hline
       \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& \textsl{versione}, nel caso specifico vale
+                                  sempre 6.\\ 
+      \textit{priority}      & 4& \textsl{priorità}, vedi
+                                  sez.~\ref{sec:IPv6_prio}.\\
+      \textit{flow label}    &24& \textsl{etichetta di flusso}, vedi
+                                  sez.~\ref{sec:IP_ipv6_flow}.\\ 
+      \textit{payload length}&16& \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
+                                  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}.\\
       \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}
@@ -468,59 +545,6 @@ differenze:
   di dati per i quali si può provvedere un trattamento speciale.
 \end{itemize}
 
   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:
 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 +559,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}).
   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}
 \end{itemize}
 
 \subsection{Gli indirizzi di IPv6}
@@ -1238,7 +1263,7 @@ rendere utilizzabile un qualunque sottoinsieme dei bit come chiavi di hash per
 i router.
 
 \subsection{Priorità}
 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
 
 Il campo di priorità consente di indicare il livello di priorità dei
 pacchetti relativamente agli altri pacchetti provenienti dalla stessa
@@ -1507,6 +1532,6 @@ l'indirizzo link-local e ricever
 % 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:  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:  dell'autoconfigurazione L'autoconfigurazione Solicitation l'IP
+% LocalWords:  stateless solicitation Advertisement stateful Transfer Unit
 % LocalWords:  l'autoconfigurazione
 % LocalWords:  l'autoconfigurazione