X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=netlayer.tex;h=18caf86963c3bf8734c608283106dbbebdccbec8;hp=16d252d98109f0665d4ba05c4dfe0cb56a439705;hb=c474f4307db945bc45287edd0ea4c2c29374d0ee;hpb=687f101ae37d793ffda23c39ca8735e127b5fc9d diff --git a/netlayer.tex b/netlayer.tex index 16d252d..18caf86 100644 --- a/netlayer.tex +++ b/netlayer.tex @@ -17,7 +17,7 @@ In questa appendice prenderemo in esame i vari protocolli disponibili a livello di rete.\footnote{per la spiegazione della suddivisione in livelli dei protocolli di rete, si faccia riferimento a quanto illustrato in - \secref{sec:net_protocols}.} Per ciascuno di essi forniremo una descrizione + sez.~\ref{sec:net_protocols}.} Per ciascuno di essi forniremo una descrizione generica delle principlai caratteristiche, del formato di dati usato e quanto possa essere necessario per capirne meglio il funzionamento dal punto di vista della programmazione. @@ -71,8 +71,8 @@ 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 -\tabref{tab:IP_ipv4class}), per consentire dispiegamenti di reti di dimensioni -diverse. +tab.~\ref{tab:IP_ipv4class}), per consentire dispiegamenti di reti di +dimensioni diverse. \begin{table}[htb] @@ -151,10 +151,10 @@ 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 è riservata per usi sperimentali e non viene impiegata. -Come si può notare però la suddivisione riportata in \tabref{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. +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. Inoltre, in particolare per le reti di classe C, la presenza di tanti indirizzi di rete diversi comporta una crescita enorme delle tabelle di @@ -193,10 +193,10 @@ di questi ultimi ed inefficienza nel trasporto. Per questo nel 1992 è stato introdotto un indirizzamento senza classi (il CIDR, \textit{Classless Inter-Domain Routing}) in cui il limite fra i bit destinati a indicare il numero di rete e quello destinati a indicare l'host -finale può essere piazzato in qualunque punto (vedi \tabref{tab:IP_ipv4cidr}), -permettendo di accorpare più classi A su un'unica rete o suddividere una -classe B e diminuendo al contempo il numero di indirizzi di rete da inserire -nelle tabelle di instradamento dei router. +finale può essere piazzato in qualunque punto (vedi +tab.~\ref{tab:IP_ipv4cidr}), permettendo di accorpare più classi A su un'unica +rete o suddividere una classe B e diminuendo al contempo il numero di +indirizzi di rete da inserire nelle tabelle di instradamento dei router. @@ -261,7 +261,7 @@ necessit \subsection{Principali caratteristiche di IPv6} \label{sec:IP_ipv6over} -Per rispondere alle esigenze descritte in \secref{sec:IP_whyipv6} IPv6 nasce +Per rispondere alle esigenze descritte in sez.~\ref{sec:IP_whyipv6} IPv6 nasce come evoluzione di IPv4, mantendone inalterate le funzioni che si sono dimostrate valide, eliminando quelle inutili e aggiungendone poche altre ponendo al contempo una grande attenzione a mantenere il protocollo il più @@ -295,10 +295,10 @@ grandi linee nei seguenti punti: Per capire le caratteristiche di IPv6 partiamo dall'intestazione usata dal protocollo per gestire la trasmissione dei pacchetti; in -\figref{fig:IP_ipv6head} è riportato il formato dell'intestazione di IPv6 da -confrontare con quella di IPv4 in \figref{fig:IP_ipv4_head}. La spiegazione del -significato dei vari campi delle due intestazioni è riportato rispettivamente -in \tabref{tab:IP_ipv6field} e \tabref{tab:IP_ipv4field}) +fig.~\ref{fig:IP_ipv6head} è riportato il formato dell'intestazione di IPv6 da +confrontare con quella di IPv4 in fig.~\ref{fig:IP_ipv4_head}. La spiegazione +del significato dei vari campi delle due intestazioni è riportato +rispettivamente in tab.~\ref{tab:IP_ipv6field} e tab.~\ref{tab:IP_ipv4field}) % \begin{table}[htb] % \footnotesize @@ -360,9 +360,9 @@ numero dei campi da 12 a 8. \textit{version} & 4 bit & \textsl{versione}, nel caso specifico vale sempre 6\\ \textit{priority} & 4 bit & - \textsl{priorità}, vedi Sez.~\ref{sec:prio} \\ + \textsl{priorità}, vedi sez.~\ref{sec:prio} \\ \textit{flow label} & 24 bit & - \textsl{etichetta di flusso}, vedi Sez.~\ref{sec:IP_ipv6_flow}\\ + \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. \\ @@ -382,17 +382,17 @@ numero dei campi da 12 a 8. \end{center} \end{table} -Abbiamo già anticipato in \secref{sec:IP_ipv6over} uno dei criteri principali +Abbiamo già anticipato in sez.~\ref{sec:IP_ipv6over} uno dei criteri principali nella progettazione di IPv6 è stato quello di ridurre al minimo il tempo di processamento dei pacchetti da parte dei router, un confronto con -l'intestazione di IPv4 (vedi \figref{fig:IP_ipv4_head}) mostra le seguenti +l'intestazione di IPv4 (vedi fig.~\ref{fig:IP_ipv4_head}) mostra le seguenti differenze: \begin{itemize} \item è stato eliminato il campo \textit{header length} in quanto le opzioni sono state tolte dall'intestazione che ha così dimensione fissa; ci possono essere più intestazioni opzionali (\textsl{intestazioni di estensione}, vedi - \secref{sec:IP_ipv6_extens}), ciascuna delle quali avrà un suo campo di + sez.~\ref{sec:IP_ipv6_extens}), ciascuna delle quali avrà un suo campo di lunghezza all'interno. \item l'intestazione e gli indirizzi sono allineati a 64 bit, questo rende più veloce il processo da parte di computer con processori a 64 bit. @@ -417,7 +417,7 @@ differenze: \item è stato introdotto un nuovo campo \textit{flow label}, che viene usato, insieme al campo \textit{priority} (che recupera i bit di precedenza del campo \textit{type of service}) per implementare la gestione di una - ``\textsl{qualità di servizio}'' (vedi \secref{sec:IP_ipv6_qos}) che + ``\textsl{qualità di servizio}'' (vedi sez.~\ref{sec:IP_ipv6_qos}) che permette di identificare i pacchetti appartenenti a un ``\textsl{flusso}'' di dati per i quali si può provvedere un trattamento speciale. \end{itemize} @@ -460,7 +460,7 @@ differenze: 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{hop limit}, vedi tab.~\ref{tab:IP_ipv6field}\\ \textit{protocol} & 8 & \textsl{protocollo} identifica il tipo di pacchetto che segue l'intestazione di IPv4\\ @@ -482,12 +482,12 @@ 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 - \secref{sec:IP_ipv6_multicast}), che da opzionale diventa obbligatorio. + 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 - \secref{sec:IP_ipv6_extens}). + 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 @@ -607,7 +607,7 @@ 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 \tabref{tab:IP_ipv6addr} sono riportati i valori di detti +di indirizzo; in tab.~\ref{tab:IP_ipv6addr} sono riportati i valori di detti 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 @@ -617,7 +617,7 @@ 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 -\tabref{tab:IP_ipv6addr} in quanto allocati al di fuori dello spazio di +tab.~\ref{tab:IP_ipv6addr} in quanto allocati al di fuori dello spazio di allocazione degli indirizzi unicast. \subsection{Indirizzi unicast \textit{provider-based}} @@ -633,7 +633,7 @@ evitare i problemi di crescita delle tabelle di instradamento e una procedura efficiente di allocazione la struttura di questi indirizzi è organizzata fin dall'inizio in maniera gerarchica; pertanto lo spazio di questi indirizzi è stato suddiviso in una serie di campi secondo lo schema riportato in -\tabref{tab:IP_ipv6_unicast}. +tab.~\ref{tab:IP_ipv6_unicast}. \begin{table}[htb] \centering @@ -699,7 +699,7 @@ L'ultimo livello gestione dei singoli fruitori finali, gli indirizzi \textit{provider-based} lasciano normalmente gli ultimi 64~bit a disposizione per questo livello, la modalità più immediata è quella di usare uno schema del tipo mostrato in -\tabref{tab:IP_ipv6_uninterf} dove l'\textit{Interface Id} è dato dal +tab.~\ref{tab:IP_ipv6_uninterf} dove l'\textit{Interface Id} è dato dal MAC-address a 48~bit dello standard Ethernet, scritto in genere nell'hardware delle scheda di rete, e si usano i restanti 16~bit per indicare la sottorete. @@ -735,7 +735,7 @@ registri nazionali, quest'ultimi poi avranno il compito di gestire la attribuzione degli indirizzi per i fornitori di servizi nell'ambito del/i paese coperto dal registro nazionale con le modalità viste in precedenza. Una tale ripartizione andrà effettuata all'interno dei soliti 56~bit come -mostrato in \tabref{tab:IP_ipv6_uninaz}. +mostrato in tab.~\ref{tab:IP_ipv6_uninaz}. \begin{table}[htb] \centering @@ -794,20 +794,20 @@ prima di avere un indirizzo globale. Ci sono due tipi di indirizzi, \textit{link-local} e \textit{site-local}. Il primo è usato per un singolo link; la struttura è mostrata in -\tabref{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 +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. Un indirizzo \textit{site-local} invece è usato per l'indirizzamento all'interno di un sito che non necessita di un prefisso globale; la struttura -è mostrata in \tabref{tab:IP_ipv6_sitelocal}, questi indirizzi iniziano sempre -con un valore nell'intervallo \texttt{FEC0}--\texttt{FEFF} e non devono venire -ritrasmessi dai router all'esterno del sito stesso; sono in sostanza gli -equivalenti degli indirizzi riservati per reti private definiti su IPv4. Per -entrambi gli indirizzi il campo \textit{Interface Id} è un identificatore che -deve essere unico nel dominio in cui viene usato, un modo immediato per +è mostrata in tab.~\ref{tab:IP_ipv6_sitelocal}, questi indirizzi iniziano +sempre con un valore nell'intervallo \texttt{FEC0}--\texttt{FEFF} e non devono +venire ritrasmessi dai router all'esterno del sito stesso; sono in sostanza +gli equivalenti degli indirizzi riservati per reti private definiti su IPv4. +Per entrambi gli indirizzi il campo \textit{Interface Id} è un identificatore +che deve essere unico nel dominio in cui viene usato, un modo immediato per costruirlo è quello di usare il MAC-address delle schede di rete. \begin{table}[!h] @@ -844,9 +844,9 @@ Alcuni indirizzi sono riservati per scopi speciali, in particolare per scopi di compatibilità. Un primo tipo sono gli indirizzi \textit{IPv4 mappati su IPv6} (mostrati in -\tabref{tab:IP_ipv6_map}), questo sono indirizzi unicast che vengono usati per -consentire ad applicazioni IPv6 di comunicare con host capaci solo di IPv4; -questi sono ad esempio gli indirizzi generati da un DNS quando l'host +tab.~\ref{tab:IP_ipv6_map}), questo sono indirizzi unicast che vengono usati +per consentire ad applicazioni IPv6 di comunicare con host capaci solo di +IPv4; questi sono ad esempio gli indirizzi generati da un DNS quando l'host richiesto supporta solo IPv4; l'uso di un tale indirizzo in un socket IPv6 comporta la generazione di un pacchetto IPv4 (ovviamente occorre che sia IPv4 che IPv6 siano supportati sull'host di origine). @@ -871,7 +871,7 @@ che IPv6 siano supportati sull'host di origine). \end{table} Un secondo tipo di indirizzi di compatibilità sono gli \textsl{IPv4 - compatibili IPv6} (vedi \tabref{tab:IP_ipv6_comp}) usati nella transizione + compatibili IPv6} (vedi tab.~\ref{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 inviato a un tale indirizzo verrà automaticamente incapsulato in IPv4. @@ -909,7 +909,7 @@ 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 -\tabref{tab:IP_ipv6_multicast}: +tab.~\ref{tab:IP_ipv6_multicast}: \begin{table}[htb] \centering @@ -941,7 +941,7 @@ Il prefisso di formato per tutti gli indirizzi \textit{multicast} transitorio. \item \textsl{scop} è un numero di quattro bit che indica il raggio di validità dell'indirizzo, i valori assegnati per ora sono riportati in - \tabref{tab:IP_ipv6_multiscope}. + tab.~\ref{tab:IP_ipv6_multiscope}. \end{itemize} @@ -970,7 +970,7 @@ Il prefisso di formato per tutti gli indirizzi \textit{multicast} 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 \tabref{tab:multiadd} sono già riservati +indirizzi multicast, riportati in tab.~\ref{tab:multiadd} sono già riservati per il funzionamento della rete. \begin{table}[!htb] @@ -1100,7 +1100,8 @@ che indica qual' opzioni questa sarà l'intestazione di un protocollo di trasporto del livello superiore, per cui il campo assumerà lo stesso valore del campo \textit{protocol} di IPv4, altrimenti assumerà il valore dell'opzione -presente; i valori possibili sono riportati in \tabref{tab:IP_ipv6_nexthead}. +presente; i valori possibili sono riportati in +tab.~\ref{tab:IP_ipv6_nexthead}. \begin{table}[htb] \begin{center} @@ -1266,7 +1267,7 @@ Il primo meccanismo di sicurezza di integrità (ma senza riservatezza) dei pacchetti IP. L'intestazione di autenticazione ha il formato descritto in -\figref{fig:autent_estens}: il campo \textit{Next Header} indica +fig.~\ref{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 @@ -1340,7 +1341,7 @@ apposita opzione che deve essere sempre l'ultima delle intestazioni di 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 \figref{fig:ESP_criptopack}, tutti i campi sono in chiaro +quella mostrata in fig.~\ref{fig:ESP_criptopack}, tutti i campi sono in chiaro fino al vettore di inizializzazione, il resto è crittografato. @@ -1395,7 +1396,7 @@ 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 \secref{sec:IP_ipv6_multicast}); a questo +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.