\label{sec:ip_protocol}
L'attuale \textit{Internet Protocol} (IPv4) viene standardizzato nel 1981
-dall'RFC~719; esso nasce per disaccoppiare le applicazioni della struttura
-hardware delle reti di trasmissione, e creare una interfaccia di trasmissione
-dei dati indipendente dal sottostante substrato di rete, che può essere
-realizzato con le tecnologie più disparate (Ethernet, Token Ring, FDDI, etc.).
+dall'\href{http://www.ietf.org/rfc/rfc0719.txt}{RFC~719}; esso nasce per
+disaccoppiare le applicazioni della struttura hardware delle reti di
+trasmissione, e creare una interfaccia di trasmissione dei dati indipendente
+dal sottostante substrato di rete, che può essere realizzato con le tecnologie
+più disparate (Ethernet, Token Ring, FDDI, etc.).
\subsection{Introduzione}
Per questo motivo si iniziò a progettare una nuova versione del protocollo
L'attuale Internet Protocol (IPv4) viene standardizzato nel 1981
-dall'RFC~719; esso nasce per disaccoppiare le applicazioni della struttura
-hardware delle reti di trasmissione, e creare una interfaccia di trasmissione
-dei dati indipendente dal sottostante substrato di rete, che può essere
-realizzato con le tecnologie più disparate (Ethernet, Token Ring, FDDI,
-etc.).
+dall'\href{http://www.ietf.org/rfc/rfc0719.txt}{RFC~719}; esso nasce per
+disaccoppiare le applicazioni della struttura hardware delle reti di
+trasmissione, e creare una interfaccia di trasmissione dei dati indipendente
+dal sottostante substrato di rete, che può essere realizzato con le tecnologie
+più disparate (Ethernet, Token Ring, FDDI, etc.).
\subsection{I motivi della transizione}
\begin{center}
\begin{tabular}{|l|c|p{9cm}|}
\hline
- \textbf{Nome} & \textbf{Lunghezza} & \textbf{Significato} \\
+ \textbf{Nome} & \textbf{Bit} & \textbf{Significato} \\
\hline
\hline
- \textit{version} & 4 bit & \textsl{versione}, nel caso
+ \textit{version} & 4 & \textsl{versione}, nel caso
specifico vale sempre 4\\
- \textit{head length} & 4 bit &\textsl{lunghezza dell'intestazione},
+ \textit{head length} & 4 &\textsl{lunghezza dell'intestazione},
in multipli di 32 bit\\
- \textit{type of service} & 8 bit & \textsl{tipo di servizio},
+ \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 bit & \textsl{lunghezza totale}, indica
+ \textit{total length} & 16 & \textsl{lunghezza totale}, indica
la dimensione del pacchetto IP in byte\\
- \textit{identification} & 16 bit & \textsl{identificazione},
+ \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 bit &
+ \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 bit & \textsl{offset di frammento},
+ \textit{fragmentation offset} & 13 & \textsl{offset di frammento},
indica la posizione del frammento rispetto al pacchetto originale\\
- \textit{time to live} & 16 bit & \textsl{tempo di vita},
+ \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 bit & \textsl{protocollo}
+ \textit{protocol} & 8 & \textsl{protocollo}
identifica il tipo di pacchetto che segue
l'intestazione di IPv4\\
- \textit{header checksum} & 16 bit & \textsl{checksum di intestazione},
+ \textit{header checksum} & 16 & \textsl{checksum di intestazione},
somma di controllo per l'intestazione\\
- \textit{source IP} & 32 bit & \textsl{indirizzo di origine}\\
- \textit{destination IP} & 32 bit & \textsl{indirizzo di destinazione}\\
+ \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{sec:IP_ipv6_unicast}
Gli indirizzi \textit{provider-based} sono gli indirizzi usati per le
-comunicazioni globali, questi sono definiti nell'RFC 2073 e sono gli
+comunicazioni globali, questi sono definiti
+nell'\href{http://www.ietf.org/rfc/rfc2073.txt}{RFC~2073} e sono gli
equivalenti degli attuali indirizzi delle classi da A a C.
L'autorità che presiede all'allocazione di questi indirizzi è la IANA; per
\multicolumn{1}{c}{$n$ bit}&\multicolumn{1}{c}{$56-n$ bit}&
\multicolumn{1}{c}{64 bit} \\
\hline
- \omit\vrule\hfill\vrule&\hspace{16mm} & & &\omit\hspace{76mm}\hfill\vrule\\
+ \omit\vrule\hfill\vrule&\hspace{16mm} & & &\omit\hspace{76mm}\hfill\vrule\\
\centering 010&
\centering \textsl{Registry Id}&
\centering \textsl{Provider Id}&
i seguenti possibili valori per il \textsl{Registry Id};
gli altri valori restano riservati per la IANA.
\begin{table}[htb]
- \begin{center}
+ \centering
+ \footnotesize
\begin{tabular}{|l|l|l|}
\hline
\textbf{Regione} & \textbf{Registro} & \textbf{Id} \\
\caption{Valori dell'identificativo dei
Regional Register allocati ad oggi.}
\label{tab:IP_ipv6_regid}
- \end{center}
\end{table}
L'organizzazione degli indirizzi prevede poi che i due livelli successivi, di
\label{tab:IP_ipv6_map}
\end{table}
-Un secondo tipo di indirizzi di compatibilità sono gli \textit{IPv4
+Un secondo tipo di indirizzi di compatibilità sono gli \textsl{IPv4
compatibili IPv6} (vedi \tabref{tab:IP_ipv6_comp}) usati nella transizione
da IPv4 a IPv6: quando un nodo che supporta sia IPv6 che IPv4 non ha un router
IPv6 deve usare nel DNS un indirizzo di questo tipo, ogni pacchetto IPv6
\begin{table}[!htb]
\centering
\footnotesize
- \begin{tabular}[c]{l l r}
+ \begin{tabular}[c]{|l|l|l|}
\hline
\textbf{Uso}& \textbf{Indirizzi riservati} & \textbf{Definizione}\\
\hline
\hline
- all-nodes & \texttt{FFxx:0:0:0:0:0:0:1} & RFC 1970\\
- all-routers & \texttt{FFxx:0:0:0:0:0:0:2} & RFC 1970\\
- all-rip-routers & \texttt{FFxx:0:0:0:0:0:0:9} & RFC 2080\\
- all-cbt-routers & \texttt{FFxx:0:0:0:0:0:0:10} &\\
- reserved & \texttt{FFxx:0:0:0:0:0:1:0} & IANA \\
- link-name & \texttt{FFxx:0:0:0:0:0:1:1} & \\
- all-dhcp-agents & \texttt{FFxx:0:0:0:0:0:1:2} & \\
- all-dhcp-servers & \texttt{FFxx:0:0:0:0:0:1:3} & \\
- all-dhcp-relays & \texttt{FFxx:0:0:0:0:0:1:4} & \\
- solicited-nodes & \texttt{FFxx:0:0:0:0:1:0:0} & RFC 1970\\
+ all-nodes & \texttt{FFxx:0:0:0:0:0:0:1} &
+ \href{http://www.ietf.org/rfc/rfc1970.txt}{RFC~1970} \\
+ all-routers & \texttt{FFxx:0:0:0:0:0:0:2} &
+ \href{http://www.ietf.org/rfc/rfc1970.txt}{RFC~1970} \\
+ all-rip-routers & \texttt{FFxx:0:0:0:0:0:0:9} &
+ \href{http://www.ietf.org/rfc/rfc2080.txt}{RFC~2080} \\
+ all-cbt-routers & \texttt{FFxx:0:0:0:0:0:0:10} & \\
+ reserved & \texttt{FFxx:0:0:0:0:0:1:0} & IANA \\
+ link-name & \texttt{FFxx:0:0:0:0:0:1:1} & \\
+ all-dhcp-agents & \texttt{FFxx:0:0:0:0:0:1:2} & \\
+ all-dhcp-servers& \texttt{FFxx:0:0:0:0:0:1:3} & \\
+ all-dhcp-relays & \texttt{FFxx:0:0:0:0:0:1:4} & \\
+ solicited-nodes & \texttt{FFxx:0:0:0:0:1:0:0} &
+ \href{http://www.ietf.org/rfc/rfc1970.txt}{RFC~1970} \\
\hline
\end{tabular}
\caption{Gruppi multicast predefiniti.}
vuole frammentare un pacchetto, ed è riprocessato automaticamente alla
destinazione che riassembla i frammenti.
\item \textbf{Authentication} gestisce l'autenticazione e il controllo di
- integrità dei pacchetti; è documentato dall'RFC 162.
+ integrità dei pacchetti; è documentato
+ dall'\href{http://www.ietf.org/rfc/rfc1826.txt}{RFC~1826}.
\item \textbf{Encapsulation} serve a gestire la segretezza del contenuto
- trasmesso; è documentato dall'RFC 1827.
+ trasmesso; è documentato
+ dall'\href{http://www.ietf.org/rfc/rfc1827.txt}{RFC~1827}.
\end{itemize}
La presenza di opzioni è rilevata dal valore del campo \textit{next header}
IPv6 è stato progettata la possibilità di intervenire al livello di rete (il
terzo) prevedendo due apposite estensioni che possono essere usate per fornire
livelli di sicurezza a seconda degli utenti. La codifica generale di questa
-architettura è riportata nell'RFC 2401.
+architettura è riportata
+nell'\href{http://www.ietf.org/rfc/rfc2401.txt}{RFC~2401}.
Il meccanismo in sostanza si basa su due estensioni:
\begin{itemize}
di integrità (ma senza riservatezza) dei pacchetti IP.
L'intestazione di autenticazione ha il formato descritto in
-\tabref{tab:autent_head}: il campo \textit{Next Header} indica l'intestazione
-successiva, con gli stessi valori del campo omonimo nell'intestazione
-principale di IPv6, il campo \textit{Length} indica la lunghezza
-dell'intestazione di autenticazione in numero di parole a 32 bit, il campo
-riservato deve essere posto a zero, seguono poi l'indice di sicurezza,
+\figref{fig:autent_estens}: il campo \textit{Next Header} indica
+l'intestazione successiva, con gli stessi valori del campo omonimo
+nell'intestazione principale di IPv6, il campo \textit{Length} indica la
+lunghezza dell'intestazione di autenticazione in numero di parole a 32 bit, il
+campo riservato deve essere posto a zero, seguono poi l'indice di sicurezza,
stabilito nella associazione di sicurezza, e un numero di sequenza che la
stazione sorgente deve incrementare di pacchetto in pacchetto.
per allineare l'intestazione a 64 bit. Tutti gli algoritmi di autenticazione
devono provvedere questa capacità.
-\renewcommand\arraystretch{1.2}
-\begin{table}[htb]
- \footnotesize
- \begin{center}
- \begin{tabular}{@{\vrule}p{24mm}@{\vrule}p{24mm}
- @{\vrule}p{48mm}@{\vrule} }
- \multicolumn{3}{@{}c@{}}{0\hfill 15 16\hfill 31}\\
- \hline
- \centering Next Header&\centering Length&
- \centering Reserved \tabularnewline
- \hline
- \multicolumn{3}{@{\vrule}c@{\vrule}}
- {\centering Security Parameter Index (SPI)}\\
- \hline
- \multicolumn{3}{@{\vrule}c@{\vrule}}
- {\centering Sequence Number}\\
- \hline
- \multicolumn{3}{@{\vrule}c@{\vrule}}{} \\
- \multicolumn{3}{@{\vrule}c@{\vrule}}{Authentication Data} \\
- \multicolumn{3}{@{\vrule}c@{\vrule}}
- {\centering ... } \\
- \multicolumn{3}{@{\vrule}c@{\vrule}}{} \\
- \hline
- \end{tabular}
- \caption{Formato dell'intestazione dell'estensione di autenticazione}
- \label{tab:autent_estens}
- \end{center}
-\end{table}
-\renewcommand\arraystretch{1} %default
-
+\begin{figure}[!htb]
+ \centering
+ \includegraphics[width=10cm]{img/ah_option}
+ \caption{Formato dell'intestazione dell'estensione di autenticazione.}
+ \label{fig:autent_estens}
+\end{figure}
L'intestazione di autenticazione può essere impiegata in due modi diverse
modalità: modalità trasporto e modalità tunnel.
eccezion fatta per la \textit{Destination Option} che può comparire sia
prima che dopo.
-\begin{table}[htb]
- \footnotesize
- \begin{center}
- \begin{tabular*}{90mm}{|c|c|c|c|c|c|}
- \hline
- & & & & & \\
- IP Head &
- \parbox[c]{28mm}{hop by hop, dest., \\
- routing, fragment}& AH &
- dest.opt & TCP & data \\
- & & & & & \\
- \hline
- \end{tabular*}
- \caption{Formato dell'intestazione dell'estensione di autenticazione}
- \label{tab:autent_head}
- \end{center}
-\end{table}
-\begin{center}
- \begin{pspicture}(0,0)(9,0.8)
- \pnode(0,0){A}
- \pnode(9,0.4){B}
- \ncline{<->}{A}{B}\ncput{copertura dell'autenticazione}
- \end{pspicture}
-\end{center}
+\begin{figure}[!htb]
+ \centering
+ \includegraphics[width=10cm]{img/IP_AH_packet}
+ \caption{Formato di un pacchetto IPv6 che usa l'opzione di autenticazione.}
+ \label{fig:AH_autent_head}
+\end{figure}
La modalità tunnel può essere utilizzata sia per comunicazioni fra stazioni
-singole che con un gateway di sicurezza; in questa modalità
+singole che con un gateway di sicurezza; in questa modalità ...
L'intestazione di autenticazione è una intestazione di estensione inserita
estensione; ad essa segue il carico del pacchetto che viene criptato.
Un pacchetto crittografato pertanto viene ad avere una struttura del tipo di
-quella mostrata in Tab~.\ref{tab:criptopack}, tutti i campi sono in chiaro
+quella mostrata in \figref{fig:ESP_criptopack}, tutti i campi sono in chiaro
fino al vettore di inizializzazione, il resto è crittografato.
-\renewcommand\arraystretch{1.2}
-\begin{table}[htb]
- \footnotesize
- \begin{center}
- \begin{tabular}{@{\vrule}p{24mm}@{\vrule}p{24mm}@{\vrule}
- p{24mm}@{\vrule}p{24mm}@{\vrule}}
- \multicolumn{4}{@{}c@{}}{0\hfill 15 16\hfill 31}\\
- \hline
- \multicolumn{4}{@{\vrule}c@{\vrule}}{}\\
- \multicolumn{4}{@{\vrule}c@{\vrule}}{Intestazione Principale}\\
- \multicolumn{4}{@{\vrule}c@{\vrule}}{...}\\
- \multicolumn{4}{@{\vrule}c@{\vrule}}{}\\
- \hline
- \multicolumn{4}{@{\vrule}c@{\vrule}}{}\\
- \multicolumn{4}{@{\vrule}c@{\vrule}}{Intestazioni di estensione}\\
- \multicolumn{4}{@{\vrule}c@{\vrule}}{...}\\
- \multicolumn{4}{@{\vrule}c@{\vrule}}{}\\
- \hline
- \multicolumn{4}{@{\vrule}c@{\vrule}}
- {\centering Security Parameter Index}\\
- \hline
- \multicolumn{4}{@{\vrule}c@{\vrule}}
- {\centering Vettore}\\
- \multicolumn{4}{@{\vrule}c@{\vrule}}
- {\centering di inizializzazione}\\
- \hline
- \multicolumn{4}{@{\vrule}c@{\vrule}}{carico}\\
- \multicolumn{4}{@{\vrule}c@{\vrule}}{crittografato}\\
- \multicolumn{4}{@{\vrule}c@{\vrule}}{...}\\
- \cline{2-4}
- & \multicolumn{3}{c@{\vrule}}{}\\
- \cline{1-1}
- \cline{3-4}
- \multicolumn{1}{@{\vrule}c}{}&
- \centering \raisebox{2mm}[0pt][0pt]{riempimento} &
- \centering lunghezza pad &\centering tipo carico\tabularnewline
- \hline
- \end{tabular}
- \caption{Schema di pacchetto crittografato}
- \label{tab:criptopack}
- \end{center}
-\end{table}
-\renewcommand\arraystretch{1} %default
+
+
+\begin{figure}[!htb]
+ \centering
+ \includegraphics[width=10cm]{img/esp_option}
+ \caption{Schema di pacchetto crittografato.}
+ \label{tab:ESP_criptopack}
+\end{figure}
+
\subsection{Autoconfigurazione}
Una delle caratteristiche salienti di IPv6 è quella dell'autoconfigurazione,
il protocollo infatti fornisce la possibilità ad un nodo di scoprire
automaticamente il suo indirizzo acquisendo i parametri necessari per potersi
-connettere a internet.
+connettere a internet.
L'autoconfigurazione sfrutta gli indirizzi link-local; qualora sul nodo sia
presente una scheda di rete che supporta lo standard IEEE802 (ethernet) questo