Merge branch 'master' of ssh://gapil.gnulinux.it/srv/git/gapil
[gapil.git] / netlayer.tex
index d27a53323d4ebd0df86ba99426d2a2dc645d9fdf..4ed5260559a9e947dcdc98a597731c35566238cc 100644 (file)
@@ -1,6 +1,6 @@
 %% netlayer.tex
 %%
-%% Copyright (C) 2000-2012 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2019 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",
@@ -148,18 +148,18 @@ dispiegamenti di reti di varie dimensioni a seconda delle diverse esigenze.
 
 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.
+destinata al \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, che ne prevede 65536,\footnote{in
-  realtà i valori esatti sarebbero 254 e 65536, una rete con a disposizione
+  realtà i valori esatti sarebbero 254 e 65534, 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.
+  uno per l'indirizzo di \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
@@ -304,24 +304,24 @@ priorità e politiche di distribuzione degli stessi.
     \multicolumn{2}{|c|}{\textbf{Valore}}&\textbf{Significato}\\
     \hline
     \hline
-    \const{IPTOS\_LOWDELAY}     &\texttt{0x10}& Minimizza i ritardi
+    \constd{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
+    \constd{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
+    \constd{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,
+    \constd{IPTOS\_MINCOST}     &\texttt{0x2} & Indica i dati di riempimento,
                                                 dove non interessa se si ha
                                                 una bassa velocità di
                                                 trasmissione, da utilizzare
@@ -447,8 +447,7 @@ grandi linee nei seguenti punti:
   supportare una gerarchia con più livelli di indirizzamento, un numero di
   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}
+  si aggiungono agli usuali \textit{unicast} e \textit{multicast}
 \item la semplificazione del formato dell'intestazione, eliminando o rendendo
   opzionali alcuni dei campi di IPv4, per eliminare la necessità di
   riprocessare la stessa da parte dei router e contenere l'aumento di
@@ -602,20 +601,18 @@ ulteriori caratteristiche che diversificano il comportamento di IPv4 da
 quello di IPv6 sono le seguenti:
 
 \begin{itemize}
-\item il \itindex{broadcast} \textit{broadcasting} non è previsto in IPv6, le
-  applicazioni che lo usano dovono essere reimplementate usando il
-  \itindex{multicast} \textit{multicasting} (vedi
+\item il \textit{broadcasting} non è previsto in IPv6, le applicazioni che lo
+  usano dovono essere reimplementate usando il \textit{multicasting} (vedi
   sez.~\ref{sec:IP_ipv6_multicast}), che da opzionale diventa obbligatorio.
 \item è stato introdotto un nuovo tipo di indirizzi, gli \textit{anycast}.
 \item i router non possono più frammentare i pacchetti lungo il cammino, la
   frammentazione di pacchetti troppo grandi potrà essere gestita solo ai
   capi della comunicazione (usando un'apposita estensione vedi
   sez.~\ref{sec:IP_ipv6_extens}).
-\item IPv6 richiede il supporto per il \itindex{Maximum~Transfer~Unit~(MTU)}
-  \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 \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}
@@ -644,15 +641,15 @@ coi numeri decimali di IPv4 per rappresentare un numero IP. Per questo gli
 indirizzi di IPv6 sono in genere scritti come sequenze di otto numeri
 esadecimali di 4 cifre (cioè a gruppi di 16 bit) usando i due punti come
 separatore; cioè qualcosa del tipo
-\texttt{5f1b:df00:ce3e:e200:0020:0800:2078:e3e3}.
-
+\texttt{1080:0000:0000:0008:0800:ba98:2078:e3e3}.
 
 Visto che la notazione resta comunque piuttosto pesante esistono alcune
-abbreviazioni; si può evitare di scrivere gli zeri iniziali per cui si
-può scrivere \texttt{1080:0:0:0:8:800:ba98:2078:e3e3}; se poi un intero è
-zero si può omettere del tutto, così come un insieme di zeri (ma questo
-solo una volta per non generare ambiguità) per cui il precedente indirizzo
-si può scrivere anche come \texttt{1080::8:800:ba98:2078:e3e3}.
+abbreviazioni: si può evitare di scrivere gli zeri iniziali delle singole
+cifre, abbreviando l'indirizzo precedente in
+\texttt{1080:0:0:8:800:ba98:2078:e3e3}; se poi un intero è zero si può
+omettere del tutto, così come un insieme di zeri (ma questo solo una volta per
+non generare ambiguità) per cui il precedente indirizzo si può scrivere anche
+come \texttt{1080::8:800:ba98:2078:e3e3}.
 
 Infine per scrivere un indirizzo IPv4 all'interno di un indirizzo IPv6 si
 può usare la vecchia notazione con i punti, per esempio
@@ -707,8 +704,8 @@ può usare la vecchia notazione con i punti, per esempio
 \label{sec:IP_ipv6_addr_arch}
 
 Come per IPv4 gli indirizzi sono identificatori per una singola (indirizzi
-\textit{unicast}) o per un insieme (indirizzi \itindex{multicast}
-\textit{multicast} e \textit{anycast}) di interfacce di rete.
+\textit{unicast}) o per un insieme (indirizzi \textit{multicast} e
+\textit{anycast}) di interfacce di rete.
 
 Gli indirizzi sono sempre assegnati all'interfaccia, non al nodo che la
 ospita; dato che ogni interfaccia appartiene ad un nodo quest'ultimo può
@@ -716,21 +713,19 @@ essere identificato attraverso uno qualunque degli indirizzi unicast delle sue
 interfacce. A una interfaccia possono essere associati anche più indirizzi.
 
 IPv6 presenta tre tipi diversi di indirizzi: due di questi, gli indirizzi
-\textit{unicast} e \itindex{multicast} \textit{multicast} hanno le stesse
-caratteristiche che in IPv4, un terzo tipo, gli indirizzi \textit{anycast} è
-completamente nuovo.  In IPv6 non esistono più gli indirizzi
-\itindex{broadcast} \textit{broadcast}, la funzione di questi ultimi deve
-essere reimplementata con gli indirizzi \itindex{multicast}
-\textit{multicast}.
+\textit{unicast} e \textit{multicast} hanno le stesse caratteristiche che in
+IPv4, un terzo tipo, gli indirizzi \textit{anycast} è completamente nuovo.  In
+IPv6 non esistono più gli indirizzi \textit{broadcast}, la funzione di questi
+ultimi deve essere reimplementata con gli indirizzi \textit{multicast}.
 
 Gli indirizzi \textit{unicast} identificano una singola interfaccia: i
 pacchetti mandati ad un tale indirizzo verranno inviati a quella interfaccia,
 gli indirizzi \textit{anycast} identificano un gruppo di interfacce tale che
 un pacchetto mandato a uno di questi indirizzi viene inviato alla più vicina
 (nel senso di distanza di routing) delle interfacce del gruppo, gli indirizzi
-\itindex{multicast} \textit{multicast} identificano un gruppo di interfacce
-tale che un pacchetto mandato a uno di questi indirizzi viene inviato a tutte
-le interfacce del gruppo.
+\textit{multicast} identificano un gruppo di interfacce tale che un pacchetto
+mandato a uno di questi indirizzi viene inviato a tutte le interfacce del
+gruppo.
 
 In IPv6 non ci sono più le classi ma i bit più significativi indicano il tipo
 di indirizzo; in tab.~\ref{tab:IP_ipv6addr} sono riportati i valori di detti
@@ -738,10 +733,9 @@ bit e il tipo di indirizzo che loro corrispondente.  I bit più significativi
 costituiscono quello che viene chiamato il \textit{format prefix} ed è sulla
 base di questo che i vari tipi di indirizzi vengono identificati.  Come si
 vede questa architettura di allocazione supporta l'allocazione di indirizzi
-per i provider, per uso locale e per il \itindex{multicast}
-\textit{multicast}; inoltre è stato riservato lo spazio per indirizzi NSAP,
-IPX e per le connessioni; gran parte dello spazio (più del 70\%) è riservato
-per usi futuri.
+per i provider, per uso locale e per il \textit{multicast}; inoltre è stato
+riservato lo spazio per indirizzi NSAP, IPX e per le connessioni; gran parte
+dello spazio (più del 70\%) è riservato per usi futuri.
 
 Si noti infine che gli indirizzi \textit{anycast} non sono riportati in
 tab.~\ref{tab:IP_ipv6addr} in quanto allocati al di fuori dello spazio di
@@ -925,7 +919,9 @@ tab.~\ref{tab:IP_ipv6_linklocal}, questi indirizzi iniziano sempre con un
 valore nell'intervallo \texttt{FE80}--\texttt{FEBF} e vengono in genere usati
 per la configurazione automatica dell'indirizzo al bootstrap e per la ricerca
 dei vicini (vedi \ref{sec:IP_ipv6_autoconf}); un pacchetto che abbia tale
-indirizzo come sorgente o destinazione non deve venire ritrasmesso dai router.
+indirizzo come sorgente o destinazione non deve venire ritrasmesso dai router,
+sono gli indirizzi che identificano la macchina sulla rete locale, per questo
+sono chiamati in questo modo, in quanto sono usati solo su di essa.
 
 Un indirizzo \textit{site-local} invece è usato per l'indirizzamento
 all'interno di un sito che non necessita di un prefisso globale; la struttura
@@ -1132,9 +1128,9 @@ già riservati per il funzionamento della rete.
 \end{table}
 
 L'utilizzo del campo di \textit{scope} e di questi indirizzi predefiniti serve
-a recuperare le funzionalità del \itindex{broadcast} \textit{broadcasting} (ad
-esempio inviando un pacchetto all'indirizzo \texttt{FF02:0:0:0:0:0:0:1} si
-raggiungono tutti i nodi locali).
+a recuperare le funzionalità del \textit{broadcasting} (ad esempio inviando un
+pacchetto all'indirizzo \texttt{FF02:0:0:0:0:0:0:1} si raggiungono tutti i
+nodi locali).
 
 \itindend{multicast}
 
@@ -1492,15 +1488,15 @@ 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'auto-configurazione sfrutta gli indirizzi link-local; qualora sul nodo sia
+L'auto-configurazione sfrutta gli indirizzi \textit{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
-link-local \texttt{FE80::xxxx:xxxx:xxxx} dove \texttt{xxxx:xxxx:xxxx} è
+\textit{link-local} \texttt{FE80::xxxx:xxxx:xxxx} dove \texttt{xxxx:xxxx:xxxx} è
 l'indirizzo hardware della scheda di rete. 
 
 Nel caso in cui non sia presente una scheda che supporta lo standard IEEE802
-allora il nodo assumerà ugualmente un indirizzo link-local della forma
+allora il nodo assumerà ugualmente un indirizzo \textit{link-local} della forma
 precedente, ma il valore di \texttt{xxxx:xxxx:xxxx} sarà generato
 casualmente; in questo caso la probabilità di collisione è di 1 su 300
 milioni. In ogni caso per prevenire questo rischio il nodo invierà un
@@ -1512,30 +1508,30 @@ 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
 auto-configurazione, descritte nelle seguenti sezioni. In ogni caso
-l'indirizzo link-local resta valido.
+l'indirizzo \textit{link-local} resta valido.
 
 \subsection{Auto-configurazione stateless}
 \label{sec:stateless}
 
 Questa è la forma più semplice di auto-configurazione, possibile quando
-l'indirizzo globale può essere ricavato dall'indirizzo link-local cambiando
+l'indirizzo globale può essere ricavato dall'indirizzo \textit{link-local} cambiando
 semplicemente il prefisso a quello assegnato dal provider per ottenere un
 indirizzo globale.
 
 La procedura di configurazione è la seguente: all'avvio tutti i nodi IPv6
-iniziano si devono aggregare al gruppo di \itindex{multicast}
-\textit{multicast} \textit{all-nodes} programmando la propria interfaccia per
-ricevere i messaggi dall'indirizzo \textit{multicast} \texttt{FF02::1} (vedi
+iniziano si devono aggregare al gruppo di \textit{multicast}
+\textit{all-nodes} programmando la propria interfaccia per ricevere i messaggi
+dall'indirizzo \textit{multicast} \texttt{FF02::1} (vedi
 sez.~\ref{sec:IP_ipv6_multicast}); a questo punto devono inviare un messaggio
 ICMP \textit{Router solicitation} a tutti i router locali usando l'indirizzo
-\itindex{multicast} \textit{multicast} \texttt{FF02::2} usando come sorgente
-il proprio indirizzo link-local.
+\textit{multicast} \texttt{FF02::2} usando come sorgente il proprio indirizzo
+\textit{link-local}.
 
 Il router risponderà con un messaggio ICMP \textit{Router Advertisement} che
 fornisce il prefisso e la validità nel tempo del medesimo, questo tipo di
 messaggio può essere trasmesso anche a intervalli regolari. Il messaggio
 contiene anche l'informazione che autorizza un nodo a autocostruire
-l'indirizzo, nel qual caso, se il prefisso unito all'indirizzo link-local non
+l'indirizzo, nel qual caso, se il prefisso unito all'indirizzo \textit{link-local} non
 supera i 128 bit, la stazione ottiene automaticamente il suo indirizzo
 globale.
 
@@ -1554,7 +1550,7 @@ Per questi motivi è previsto anche un protocollo stateful basato su un server
 che offra una versione IPv6 del DHCP; un apposito gruppo di \textit{multicast}
 \texttt{FF02::1:0} è stato riservato per questi server; in questo caso il nodo
 interrogherà il server su questo indirizzo di \textit{multicast} con
-l'indirizzo link-local e riceverà un indirizzo unicast globale.
+l'indirizzo \textit{link-local} e riceverà un indirizzo unicast globale.
 
 
 \section{Il protocollo ICMP}