X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=netlayer.tex;h=597738b0a4d22948af385696615f7f4b2e8eb966;hb=83b2cb23f7f2026b0d487f9d9461c25d39d7031c;hp=db190ee01c17290fbfebebcee0b37c915ea4bf44;hpb=3b7696e141a7c9c5d9ddec1654aa2a1108350bde;p=gapil.git diff --git a/netlayer.tex b/netlayer.tex index db190ee..597738b 100644 --- a/netlayer.tex +++ b/netlayer.tex @@ -23,26 +23,27 @@ possa essere necessario per capirne meglio il funzionamento dal punto di vista della programmazione. Data la loro prevelenza il capitolo sarà sostanzialmente incentrato sui due -protocolli principali esistenti su questo livello: l'\textit{Internet - Protocol} IP (che più propriamente si dovrebbe chiamare IPv4) ed la sua -nuova versione denominata IPv6. +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. \section{Il protocollo IP} \label{sec:ip_protocol} L'attuale \textit{Internet Protocol} (IPv4) viene standardizzato nel 1981 -dall'\href{http://www.ietf.org/rfc/rfc719.txt}{RFC~719}; esso nasce per +dall'\href{http://www.ietf.org/rfc/rfc791.txt}{RFC~791}; 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.). +più disparate (Ethernet, Token Ring, FDDI, ecc.). \subsection{Introduzione} \label{sec:IP_intro} -Il compito di IP è pertanto quello di trasmettere i pacchetti da un computer +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: @@ -69,10 +70,10 @@ 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 sono stati -originariamente organizzati in \textit{classi}, (rappresentate in -tab.~\ref{tab:IP_ipv4class}), per consentire dispiegamenti di reti di -dimensioni diverse. +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. \begin{table}[htb] @@ -147,8 +148,9 @@ dimensioni diverse. \label{tab:IP_ipv4class} \end{table} -Le classi usate per il dispiegamento delle reti sono le prime tre; la classe D -è destinata al (non molto usato) \textit{multicast} mentre la classe E è +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 è riservata per usi sperimentali e non viene impiegata. Come si può notare però la suddivisione riportata in @@ -201,6 +203,49 @@ indirizzi di rete da inserire nelle tabelle di instradamento dei router. +\subsection{L'intestazione di IP} +\label{sec:IP_header} + + +Il campo TOS definisce il cosiddetto \textit{Type of Service}; questo permette +di definire il tipo di traffico contenuto nei pacchetti, e può essere +utilizzato dai router per dare diverse priorità in base al valore assunto da +questo campo. + +\begin{table}[!htb] + \centering + \footnotesize + \begin{tabular}[c]{|l|l|} + \hline + \textbf{Costante} & \textbf{Significato} \\ + \hline + \hline + \const{IPTOS\_LOWDELAY} & minimizza i ritardi per il traffico + interattivo. \\ + \const{IPTOS\_THROUGHPUT} & ottimizza la trasmissione per il massimo + flusso di dati.\\ + \const{IPTOS\_RELIABILITY}& ottimizza per l'affidabilità della + trasmissione. \\ + \const{IPTOS\_MINCOST} & usato per dati di riempimento, dove non + interessa se c'è una bassa velocità di + trasmissione.\\ + \hline + \end{tabular} + \caption{Le costanti che definiscono alcuni valori standard per il campo TOS + da usare come argomento \param{optval} per l'opzione \const{IP\_TOS}.} + \label{tab:IP_TOS_values} +\end{table} + + + +\subsection{Le opzioni di IP} +\label{sec:IP_options} + + + + + + \section{Il protocollo IPv6} \label{sec:ipv6_protocol} @@ -216,7 +261,7 @@ dall'\href{http://www.ietf.org/rfc/rfc719.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.). +più disparate (Ethernet, Token Ring, FDDI, ecc.). \subsection{I motivi della transizione} @@ -274,7 +319,8 @@ grandi linee nei seguenti punti: supportare una gerarchia con più livelli di indirizzamento, un numero di nodi indirizzabili molto maggiore e una autoconfigurazione degli indirizzi \item l'introduzione un nuovo tipo di indirizzamento, l'\textit{anycast} che - si aggiungono agli usuali \textit{unycast} e \textit{multicast} + si aggiungono agli usuali \textit{unicast} e \itindex{multicast} + \textit{multicast} \item la semplificazione del formato dell'intestazione, eliminando o rendendo opzionali alcuni dei campi di IPv4, per eliminare la necessità di riprocessamento della stessa da parte dei router e contenere l'aumento di @@ -454,8 +500,8 @@ differenze: 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. \\ + 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}, @@ -480,8 +526,9 @@ ulteriori caratteristiche che diversificano il comportamento di IPv4 da quello di IPv6 sono le seguenti: \begin{itemize} -\item il broadcasting non è previsto in IPv6, le applicazioni che lo usano - dovono essere reimplementate usando il multicasting (vedi +\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 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 @@ -570,7 +617,7 @@ pu unicast site-local & \texttt{1111 1110 11} & 1/1024 \\ \hline \hline - multicast & \texttt{1111 1111} & 1/256 \\ + \textit{multicast} & \texttt{1111 1111} & 1/256 \\ \hline \end{tabular} \caption{Classificazione degli indirizzi IPv6 a seconda dei bit più @@ -583,8 +630,8 @@ pu \label{sec:IP_ipv6_addr_arch} Come per IPv4 gli indirizzi sono identificatori per una singola (indirizzi -\textit{unicast}) o per un insieme (indirizzi \textit{multicast} e -\textit{anycast}) di interfacce di rete. +\textit{unicast}) o per un insieme (indirizzi \itindex{multicast} +\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ò @@ -592,19 +639,21 @@ 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 \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}. +\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}. 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 -\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. +\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. 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 @@ -612,9 +661,10 @@ bit e il tipo di indirizzo che loro corrispondente. I bit pi 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 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 \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. 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 @@ -904,12 +954,14 @@ l'accettazione di una connessione da qualunque host. \subsection{Multicasting} \label{sec:IP_ipv6_multicast} +\itindbeg{multicast} + Gli indirizzi \textit{multicast} sono usati per inviare un pacchetto a un -gruppo di interfacce; l'indirizzo identifica uno specifico gruppo di multicast -e il pacchetto viene inviato a tutte le interfacce di detto gruppo. -Un'interfaccia può appartenere ad un numero qualunque numero di gruppi di -multicast. Il formato degli indirizzi \textit{multicast} è riportato in -tab.~\ref{tab:IP_ipv6_multicast}: +gruppo di interfacce; l'indirizzo identifica uno specifico gruppo di +\textit{multicast} e il pacchetto viene inviato a tutte le interfacce di detto +gruppo. Un'interfaccia può appartenere ad un numero qualunque numero di +gruppi di \textit{multicast}. Il formato degli indirizzi \textit{multicast} è +riportato in tab.~\ref{tab:IP_ipv6_multicast}: \begin{table}[htb] \centering @@ -964,14 +1016,15 @@ Il prefisso di formato per tutti gli indirizzi \textit{multicast} 7 & non assegnato & F & riservato \\ \hline \end{tabular} -\caption{Possibili valori del campo \textsl{scop} di un indirizzo multicast.} +\caption{Possibili valori del campo \textsl{scop} di un indirizzo + \textit{multicast}.} \label{tab:IP_ipv6_multiscope} \end{table} -Infine l'ultimo campo identifica il gruppo di multicast, sia permanente che -transitorio, all'interno del raggio di validità del medesimo. Alcuni -indirizzi multicast, riportati in tab.~\ref{tab:multiadd} sono già riservati -per il funzionamento della rete. +Infine l'ultimo campo identifica il gruppo di \textit{multicast}, sia +permanente che transitorio, all'interno del raggio di validità del medesimo. +Alcuni indirizzi \textit{multicast}, riportati in tab.~\ref{tab:multiadd} sono +già riservati per il funzionamento della rete. \begin{table}[!htb] \centering @@ -997,15 +1050,16 @@ per il funzionamento della rete. \href{http://www.ietf.org/rfc/rfc1970.txt}{RFC~1970} \\ \hline \end{tabular} -\caption{Gruppi multicast predefiniti.} +\caption{Gruppi di \textit{multicast} predefiniti.} \label{tab:multiadd} \end{table} L'utilizzo del campo di \textit{scope} e di questi indirizzi predefiniti serve -a recuperare le funzionalità del 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 \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). +\itindend{multicast} \subsection{Indirizzi \textit{anycast}} \label{sec:IP_anycast} @@ -1257,7 +1311,7 @@ il nome di associazione di sicurezza. I pacchetti autenticati e crittografati portano un indice dei parametri di sicurezza (SPI, \textit{Security Parameter Index}) che viene negoziato prima di ogni comunicazione ed è definito dalla stazione sorgente. Nel caso di -multicast dovrà essere lo stesso per tutte le stazioni del gruppo. +\textit{multicast} dovrà essere lo stesso per tutte le stazioni del gruppo. \subsection{Autenticazione} \label{sec:auth} @@ -1350,7 +1404,7 @@ fino al vettore di inizializzazione, il resto \centering \includegraphics[width=10cm]{img/esp_option} \caption{Schema di pacchetto crittografato.} - \label{tab:ESP_criptopack} + \label{fig:ESP_criptopack} \end{figure} @@ -1394,12 +1448,13 @@ 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 multicast \textit{all-nodes} -programmando la propria interfaccia per ricevere i messaggi dall'indirizzo -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 multicast \texttt{FF02::2} usando come -sorgente il proprio indirizzo link-local. +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 +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. Il router risponderà con un messaggio ICMP \textit{Router Advertisement} che fornisce il prefisso e la validità nel tempo del medesimo, questo tipo di @@ -1420,11 +1475,11 @@ della singola stazione; il secondo problema introdurre in una rete una stazione autoconfigurante per ottenere un accesso legale. -Per questi motivi è previsto anche un protocollo stateful basato su un -server che offra una versione IPv6 del DHCP; un apposito gruppo di multicast -\texttt{FF02::1:0} è stato riservato per questi server; in questo caso il -nodo interrogherà il server su questo indirizzo di multicast con l'indirizzo -link-local e riceverà un indirizzo unicast globale. +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.