X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=netlayer.tex;h=4ed5260559a9e947dcdc98a597731c35566238cc;hp=9e8d27c41e45d906351e20ae0752356ba68b82d1;hb=26f7a8bb19c6cb198c213757a97b6ac79e40db4b;hpb=8f0d759b2a9864c839d8803b2ea12860f386f17d diff --git a/netlayer.tex b/netlayer.tex index 9e8d27c..4ed5260 100644 --- a/netlayer.tex +++ b/netlayer.tex @@ -1,6 +1,6 @@ %% netlayer.tex %% -%% Copyright (C) 2000-2015 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,8 +148,8 @@ 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 @@ -158,8 +158,8 @@ classe A occorre passare a una classe B, che ne prevede 65536,\footnote{in 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}