From: Simone Piccardi Date: Wed, 25 Jul 2001 11:11:56 +0000 (+0000) Subject: Rinominati app_a e app_b X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=d99b4995b23505a9afde30adf3a716aa7a55f0e9 Rinominati app_a e app_b --- diff --git a/app_a.tex b/app_a.tex deleted file mode 100644 index 5c85730..0000000 --- a/app_a.tex +++ /dev/null @@ -1,1347 +0,0 @@ -\chapter{Il protocollo IP} -\label{cha:ip_protocol} - -L'attuale Internent 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.). - - -\section{Introduzione} -\label{sec:IP_intro} - -Il compito di IP è pertanto quello di trasmettere i pacchetti da un computer -all'altro della rete; le caratteristiche essenziali con cui questo viene -realizzato in IPv4 sono due: - -\begin{itemize} -\item \textit{Universal addressing} la comunicazione avviene fra due host - identificati univocamente con un indirizzo a 32 bit che può appartenere ad - una sola interfaccia di rete. -\item \textit{Best effort} viene assicurato il massimo impegno nella - trasmissione, ma non c'è nessuna garanzia per i livelli superiori né - sulla percentuale di successo né sul tempo di consegna dei pacchetti di - dati. -\end{itemize} - -Per effettuare la comunicazione e l'instradamento dei pacchetti fra le varie -reti di cui è composta Internet IPv4 organizza gli indirizzi in una -gerarchia a due livelli, in cui una parte dei 32 bit dell'indirizzo indica il -numero di rete, e un'altra l'host al suo interno. Il numero di rete serve -ai router per stabilire a quale rete il pacchetto deve essere inviato, il -numero di host indica la macchina di destinazione finale all'interno di detta -rete. - -Per garantire l'unicità dell'indirizzo Internet esiste un'autorità -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:ipv4class}), per consentire dispiegamenti di reti di dimensioni -diverse. - - -\begin{table}[htb] - \centering - \footnotesize - \begin{tabular} {c@{\hspace{1mm}\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}} - \omit&\omit& \multicolumn{7}{c}{7 bit}&\multicolumn{24}{c}{24 bit} \\ - \cline{2-33} - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - classe A &\centering 0& - \multicolumn{7}{@{}c@{\vrule}}{\parbox[c]{21mm}{\centering net Id}} & - \multicolumn{24}{@{}c@{\vrule}}{\parbox[c]{72mm}{\centering host Id}} \\ - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - \cline{2-33} - \multicolumn{33}{c}{ } \\ - \omit&\omit&\omit& - \multicolumn{14}{c}{14 bit}&\multicolumn{16}{c}{16 bit} \\ - \cline{2-33} - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - classe B&\centering 1&\centering 0& - \multicolumn{14}{@{}c@{\vrule}}{\parbox{42mm}{\centering net Id}} & - \multicolumn{16}{@{}c@{\vrule}}{\parbox{48mm}{\centering host Id}} \\ - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - \cline{2-33} - - \multicolumn{33}{c}{ } \\ - \omit&\omit&\omit& - \multicolumn{21}{c}{21 bit}&\multicolumn{8}{c}{8 bit} \\ - \cline{2-33} - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - classe C&\centering 1&\centering 1&\centering 0& - \multicolumn{21}{@{}c@{\vrule}}{\parbox{63mm}{\centering net Id}} & - \multicolumn{8}{@{}c@{\vrule}}{\parbox{24mm}{\centering host Id}} \\ - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - \cline{2-33} - - - \multicolumn{33}{c}{ } \\ - \omit&\omit&\omit&\omit& - \multicolumn{28}{c}{28 bit} \\ - \cline{2-33} - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - classe D&\centering 1&\centering 1&\centering 1&\centering 0& - \multicolumn{28}{@{}c@{\vrule}}{\parbox{63mm}{\centering - multicast group Id}} \\ - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - \cline{2-33} - - \multicolumn{33}{c}{ } \\ - \omit&\omit&\omit&\omit&\omit& - \multicolumn{27}{c}{27 bit} \\ - \cline{2-33} - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - classe E&\centering 1&\centering 1&\centering 1&\centering 1&\centering 0& - \multicolumn{27}{@{}c@{\vrule}}{\parbox{59mm}{\centering - reserved for future use}} \\ - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - \cline{2-33} - -\end{tabular} -\caption{Le classi di indirizzi secondo IPv4.} -\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 è -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. - -Inoltre, in particolare per le reti di classe C, la presenza di tanti -indirizzi di rete diversi comporta una crescita enorme delle tabelle di -instradamento che ciascun router dovrebbe tenere in memoria per sapere dove -inviare il pacchetto, con conseguente crescita dei tempi di processo da parte -di questi ultimi ed inefficienza nel trasporto. - -\begin{table}[htb] - \centering - \footnotesize - \begin{tabular} {c@{\hspace{1mm}\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule} - p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}p{3mm}@{\vrule}} - \omit& - \multicolumn{12}{c}{$n$ bit}&\multicolumn{20}{c}{$32-n$ bit} \\ - \cline{2-33} - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - CIDR & - \multicolumn{12}{@{}c@{\vrule}}{\parbox[c]{36mm}{\centering net Id}} & - \multicolumn{20}{@{}c@{\vrule}}{\parbox[c]{60mm}{\centering host Id}} \\ - \omit\hfill\vrule &&&&&&&& &&&&&&&& &&&&&&&& &&&&&&&& \\ - \cline{2-33} -\end{tabular} -\caption{Uno esempio di indirizzamento CIDR.} -\label{tab:IP_ipv4cidr} -\end{table} - -Per questo nel 1992 è stato introdotto un indirizzamento senza classi (il -CIDR) 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 Tab.~\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. - - -\section{I motivi della transizione} -\label{sec:IP_whyipv6} - -Negli ultimi anni la crescita vertiginosa del numero di macchine connesse a -internet ha iniziato a far emergere i vari limiti di IPv4; in particolare si -è iniziata a delineare la possibilità di arrivare a una carenza di -indirizzi disponibili. - -In realtà il problema non è propriamente legato al numero di indirizzi -disponibili; infatti con 32 bit si hanno $2^{32}$, cioè circa 4 miliardi, -numeri diversi possibili, che sono molti di più dei computer attualemente -esistenti. - -Il punto è che la suddivisione di questi numeri nei due livelli rete/host e -l'utilizzo delle classi di indirizzamento mostrate in precedenza, ha -comportato che, nella sua evoluzione storica, il dispiegamento delle reti e -l'allocazione degli indirizzi siano stati inefficienti; neanche l'uso del CIDR -ha permesso di eliminare le inefficienze che si erano formate, dato che il -ridispiegamento degli indirizzi comporta cambiamenti complessi a tutti i -livelli e la riassegnazione di tutti gli indirizzi dei computer di ogni -sottorete. - -Diventava perciò necessario progettare un nuovo protocollo che permettesse -di risolvere questi problemi, e garantisse flessibilità sufficiente per -poter continuare a funzionare a lungo termine; in particolare necessitava un -nuovo schema di indirizzamento che potesse rispondere alle seguenti -necessità: - -\begin{itemize} -\item un maggior numero di numeri disponibili che consentisse di non restare - più a corto di indirizzi -\item un'organizzazione gerarchica più flessibile dell'attuale -\item uno schema di assegnazione degli indirizzi in grado di minimizzare le - dimensioni delle tabelle di instradamento -\item uno spazio di indirizzi che consentisse un passaggio automatico dalle - reti locali a internet -\end{itemize} - - -\section{Principali caratteristiche di IPv6} -\label{sec:IP_ipv6over} - -Per rispondere alle esigenze descritte in \secref{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ù -snello e veloce possibile. - -I cambiamenti apportati sono comunque notevoli e si possono essere riassunti a -grandi linee nei seguenti punti: -\begin{itemize} -\item l'espansione delle capacità di indirizzamento e instradamento, per - 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} -\item la semplificazione del formato della testata, 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 - dimensione dovuto ai nuovi indirizzi -\item un supporto per le opzioni migliorato, per garantire una trasmissione - più efficiente del traffico normale, limiti meno stringenti sulle - dimensioni delle opzioni, e la flessibilità necessaria per introdurne di - nuove in futuro -\item il supporto per delle capacità di qualità di servizio (QoS) che - permetta di identificare gruppi di dati per i quali si può provvedere un - trattamento speciale (in vista dell'uso di internet per applicazioni - multimediali e/o ``real-time'') -\end{itemize} - - -\section{La testata di IPv6} -\label{sec:IP_ipv6head} - -Per capire le caratteristiche di IPv6 partiamo dall'intestazione usata dal -protocollo per gestire la trasmissione dei pacchetti; in -\tabref{tab:IP_ipv6head} è riportato il formato della testata di IPv6 da -confrontare con quella di IPv4 in \tabref{tab:IP_ipv4head}. La spiegazione del -significato dei vari campi delle due testate è riportato rispettivamente in -\tabref{tab:IP_ipv6field} e \tabref{tab:IP_ipv4field}) - -\begin{table}[htb] - \footnotesize - \begin{center} - \begin{tabular}{@{\vrule}p{16mm}@{\vrule}p{16mm}@{\vrule}p{16mm} - @{\vrule}p{16mm}@{\vrule}p{16mm}@{\vrule}p{16mm} - @{\vrule}p{16mm}@{\vrule}p{16mm}@{\vrule} } - \multicolumn{8}{@{}c@{}}{0\hfill 15 16\hfill 31}\\ - \hline - \centering version&\centering priority& - \multicolumn{6}{@{}p{96mm}@{\vrule}}{\centering flow label} \\ - \hline - \multicolumn{4}{@{\vrule}p{64mm}@{\vrule}}{\centering payload lenght} & - \multicolumn{2}{@{}p{32mm}@{\vrule}}{\centering next header} & - \multicolumn{2}{@{}p{32mm}@{\vrule}}{\centering hop limit}\\ - \hline - \multicolumn{8}{@{\vrule}c@{\vrule}}{} \\ - \multicolumn{8}{@{\vrule}c@{\vrule}}{ - source} \\ - \multicolumn{8}{@{\vrule}c@{\vrule}}{ - IP address} \\ - \multicolumn{8}{@{\vrule}c@{\vrule}}{} \\ - \hline - \multicolumn{8}{@{\vrule}c@{\vrule}}{} \\ - \multicolumn{8}{@{\vrule}c@{\vrule}}{ - destination} \\ - \multicolumn{8}{@{\vrule}c@{\vrule}}{ - IP address} \\ - \multicolumn{8}{@{\vrule}c@{\vrule}}{} \\ - \hline - \end{tabular} - \caption{La testata o \textit{header} di IPv6} - \label{tab:IP_ipv6head} - \end{center} -\end{table} - -Come si può notare la testata di IPv6 diventa di dimensione fissa, pari a 40 -byte, contro una dimensione (minima, in assenza di opzioni) di 20 byte per -IPv4; un semplice raddoppio nonostante lo spazio destinato agli indirizzi sia -quadruplicato, questo grazie a una notevole semplificazione che ha ridotto il -numero dei campi da 12 a 8. - -\begin{table}[htb] - \begin{center} - \footnotesize - \begin{tabular}{ l c p{8cm}} - \textbf{Nome} & \textbf{Lunghezza} & \textbf{Significato} \\ - \toprule - \textit{version} & 4 bit & - \textsl{versione}, nel caso specifico vale sempre 6\\ - \textit{priority} & 4 bit & - \textsl{priorità}, vedi Sez.~\ref{sec:prio} \\ - \textit{flow label} & 24 bit & - \textsl{etichetta di flusso}, vedi Sez.~\ref{sec:IP_ipv6_flow}\\ - \textit{payload leght} & 16 bit & - \textsl{lunghezza del carico}, cioè del corpo dei dati che segue - l'intestazione, in bytes. \\ - \textit{next header} & 8 bit & \textsl{testata successiva}, - identifica il tipo di pacchetto che segue la testata di IPv6, usa gli - stessi valori del campo protocollo nella testata di IPv4\\ - \textit{hop limit} & 8 bit & \textsl{limite di salti}, - stesso significato del \textit{time to live} nella testata di IPv4, - è decrementato di uno ogni volta che un nodo ritrasmette il - pacchetto, se arriva a zero il pacchetto viene scartato \\ - \textit{source IP} & 128 bit & \textsl{indirizzo di origine} \\ - \textit{destination IP}& 128 bit & \textsl{indirizzo di destinazione}\\ - \bottomrule - \end{tabular} - \caption{Legenda per il significato dei campi dell'intestazione di IPv6} - \label{tab:IP_ipv6field} - \end{center} -\end{table} - -Abbiamo già anticipato in \secref{sec:IP_ipv6over} uno dei criteri principali -nella progettazione di IPv6 è stato quello di ridurre al massimo il tempo di -processamento dei pacchetti da parte dei router, un confronto con la testata -di IPv4 (vedi \secref{tab:IP_ipv4head}) mostra le seguenti differenze: - -\begin{itemize} -\item è stato eliminato il campo \textit{header lenght} in quanto le opzioni - sono state tolte dalla testata che ha così dimensione fissa; ci possono - essere più testate opzionali (\textsl{testate di estensione}, vedi - \secref{sec:_IP_ipv6_extens}), ciascuna delle quali avrà un suo campo di - lunghezza all'interno. -\item la testata e gli indirizzi sono allineati a 64 bit, questo rende più - veloce il processo da parte di computer con processori a 64 bit. -\item i campi per gestire la frammentazione (\textit{identification}, - \textit{flag} e \textit{fragment offset}) sono stati eliminati; questo - perché la frammentazione è un'eccezione che non deve rallentare il - processo dei pacchetti nel caso normale. -\item è stato eliminato il campo \textit{checksum} in quanto tutti i - protocolli di livello superiore (TCP, UDP e ICMPv6) hanno un campo di - checksum che include, oltre alla loro testata e ai dati, pure i campi - \textit{payload lenght}, \textit{next header}, e gli indirizzi di origine e - di destinazione; una checksum esiste anche per la gran parte protocolli di - livello inferiore (anche se quelli che non lo hanno, come SLIP, non possono - essere usati con grande affidabilità); con questa scelta si è ridotto di - molti tempo di riprocessamento dato che i router non hanno più la - necessità di ricalcolare la checksum ad ogni passaggio di un pacchetto per - il cambiamento del campo \textit{hop limit}. -\item è stato eliminato il campo \textit{type of service}, che praticamente - non è mai stato utilizzato; una parte delle funzionalià ad esso delegate - sono state reimplementate (vedi il campo \textit{priority} al prossimo - punto) con altri metodi. -\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 - ``qualità di servizio'' (vedi Sez.~\ref{sec:IP_ipv6_qos}) che permette di - identificare i pacchetti appartenenti a un ``flusso'' di dati per i quali si - può provvedere un trattamento speciale. -\end{itemize} - -\begin{table}[htb] - \footnotesize - \centering - \begin{tabular}{@{\vrule}p{16mm}@{\vrule}p{16mm}@{\vrule}p{16mm} - @{\vrule}p{16mm}@{\vrule}p{16mm}@{\vrule}p{16mm} - @{\vrule}p{16mm}@{\vrule}p{16mm}@{\vrule} } - \multicolumn{8}{@{}c@{}}{0\hfill 15 16\hfill 31}\\ - \hline - \centering version& - \centering head lenght& - \multicolumn{2}{@{}p{32mm}@{\vrule}}{\centering type of service} & - \multicolumn{4}{@{}p{64mm}@{\vrule}}{\centering total lenght} \\ - \hline - \multicolumn{4}{@{\vrule}p{64mm}@{\vrule}}{\centering identification} & - \multicolumn{4}{@{}p{64mm}@{\vrule}}{\parbox{11mm}{\centering flag} \vrule - \parbox{52mm}{\centering fragment offset}}\\ - \hline - \multicolumn{2}{@{\vrule}p{32mm}@{\vrule}}{\centering TTL}& - \multicolumn{2}{@{}p{32mm}@{\vrule}}{\centering protocol}& - \multicolumn{4}{@{}p{64mm}@{\vrule}}{\centering header checksum} \\ - \hline - \multicolumn{8}{@{\vrule}c@{\vrule}}{ - source IP address} \\ - \hline - \multicolumn{8}{@{\vrule}c@{\vrule}}{ - destination IP address} \\ - \hline - \multicolumn{8}{@{\vrule}c@{\vrule}}{} \\ - \multicolumn{8}{@{}p{128mm}@{}}{ - \centering options (if any)} \\ - \multicolumn{8}{@{\vrule}c@{\vrule}}{} \\ - \hline - \end{tabular} - \caption{L'intestazione o \textit{header} di IPv4} -\label{tab:IP_ipv4head} -\end{table} - -\begin{table}[htb] - \footnotesize - \begin{center} - \begin{tabular}{l c p{9cm}} - \textbf{Nome} & \textbf{Lunghezza} & \textbf{Significato} \\ - \toprule - \textit{version} & 4 bit & \textsl{versione}, nel caso - specifico vale sempre 4\\ - \textit{head lenght} & 4 bit & \textsl{lunghezza della testata}, - in multipli di 32 bit\\ - \textit{type of service} & 8 bit & \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 lenght} & 16 bit & \textsl{lunghezza totale}, indica - la dimensione del pacchetto IP in byte\\ - \textit{identification} & 16 bit & \textsl{identificazione}, - assegnato alla creazione, è aumentato di uno all'origine alla - trasmissione di ciascun pacchetto, ma resta lo stesso per i - pacchetti frammentati\\ - \textit{flag} & 3 bit & - \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}, - indica la posizione del frammento rispetto al pacchetto originale\\ - \textit{time to live} & 16 bit & \textsl{tempo di vita}, - ha lo stesso significato di - \textit{hop limit}, vedi Tab.~\ref{tab:ipv6field}\\ - \textit{protocol} & 8 bit & \textsl{protocollo} - identifica il tipo di pacchetto che segue - la testata di IPv4\\ - \textit{header checksum} & 16 bit & \textsl{checksum di testata}, somma - di controllo per la testata\\ - \textit{source IP} & 32 bit & \textsl{indirizzo di origine}\\ - \textit{destination IP} & 32 bit & \textsl{indirizzo di destinazione}\\ - \bottomrule - \end{tabular} - \caption{Legenda per il significato dei campi dell'intestazione di IPv4} - \label{tab:IP_ipv4field} - \end{center} -\end{table} - -Oltre alle differenze precedenti, relative ai singoli campi nella testata, -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 - \secref{sec:IP_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}). -\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 bytes). -\end{itemize} - -\section{Gli indirizzi di IPv6} -\label{sec:IP_ipv6_addr} - -Come già abbondantemente anticipato la principale novità di IPv6 è -costituita dall'ampliamento dello spazio degli indirizzi, che consente di avere -indirizzi disponibili in un numero dell'ordine di quello degli atomi che -costituiscono la terra. - -In realtà l'allocazione di questi indirizzi deve tenere conto della -necessità di costruire delle gerarchie che consentano un instradamento -rapido ed efficiente dei pacchetti, e flessibilità nel dispiegamento delle -reti, il che comporta una riduzione drastica dei numeri utilizzabili; uno -studio sull'efficienza dei vari sistemi di allocazione usati in altre -architetture (come i sistemi telefonici) è comunque giunto alla conclusione -che anche nella peggiore delle ipotesi IPv6 dovrebbe essere in grado di -fornire più di un migliaio di indirizzi per ogni metro quadro della -superficie terrestre. - - -\subsection{La notazione} -\label{sec:IP_ipv6_notation} -Con un numero di bit quadruplicato non è più possibile usare la notazione -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}. - - -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}. - -Infine per scrivere un indirizzo IPv4 all'interno di un indirizzo IPv6 si -può usare la vecchia notazione con i punti, per esempio -\texttt{::192.84.145.138}. - -\begin{table}[htb] - \centering - \footnotesize - \begin{tabular}{|l|l|l|} - \hline - \centering \textbf{Tipo di indirizzo} - & \centering \textbf{Prefisso} & {\centering \textbf{Frazione}} \\ - \hline - \hline - riservato & \texttt{0000 0000} & 1/256 \\ - non assegnato & \texttt{0000 0001} & 1/256 \\ - \hline - riservato per NSAP & \texttt{0000 001} & 1/128\\ - riservato per IPX & \texttt{0000 010} & 1/128\\ - \hline - non assegnato & \texttt{0000 011} & 1/128 \\ - non assegnato & \texttt{0000 1} & 1/32 \\ - non assegnato & \texttt{0001} & 1/16 \\ - \hline - provider-based & \texttt{001} & 1/8\\ - \hline - non assegnato & \texttt{010} & 1/8 \\ - non assegnato & \texttt{011} & 1/8 \\ - geografic-based& \texttt{100} & 1/8 \\ - non assegnato & \texttt{101} & 1/8 \\ - non assegnato & \texttt{110} & 1/8 \\ - non assegnato & \texttt{1110} & 1/16 \\ - non assegnato & \texttt{1111 0} & 1/32 \\ - non assegnato & \texttt{1111 10} & 1/64 \\ - non assegnato & \texttt{1111 110} & 1/128 \\ - non assegnato & \texttt{1111 1100 0} & 1/512 \\ - \hline - unicast link-local & \texttt{1111 1100 10} & 1/1024 \\ - unicast site-local & \texttt{1111 1100 11} & 1/1024 \\ - \hline - \hline - multicast & \texttt{1111 1111} & 1/256 \\ - \hline - \end{tabular} - \caption{Classificazione degli indirizzi IPv6 a seconda dei bit più - significativi} - \label{tab:IP_ipv6addr} -\end{table} - - -\subsection{La architettura degli indirizzi di IPv6} -\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. - -Gli indirizzi sono sempre assegnati all'interfaccia, non al nodo che la -ospita; dato che ogni interfaccia appartiene ad un nodo quest'ultimo può -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}. - -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. - -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 -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 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 -\tabref{tab:IP_ipv6addr} in quanto allocati al di fuori dello spazio di -allocazione degli indirizzi unicast. - -\subsection{Indirizzi unicast \textit{provider-based}} -\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 -equivalenti degli attuali indirizzi delle classi da A a C. - -L'autorità che presiede all'allocazione di questi indirizzi è la IANA; per -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}. - -\begin{table}[htb] - \centering - \footnotesize - \begin{tabular} {@{\vrule}p{6mm} - @{\vrule}p{16mm}@{\vrule}p{24mm} - @{\vrule}p{30mm}@{\vrule}c@{\vrule}} - \multicolumn{1}{@{}c@{}}{3}&\multicolumn{1}{c}{5 bit}& - \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\\ - \centering 010& - \centering \textsl{Registry Id}& - \centering \textsl{Provider Id}& - \centering \textsl{Subscriber Id}& - \textsl{Intra-Subscriber} \\ - \omit\vrule\hfill\vrule& & & &\omit\hspace{6mm}\hfill\vrule\\ - \hline - \end{tabular} -\caption{Formato di un indirizzo unicast \textit{provider-based}.} -\label{tab:IP_ipv6_unicast} -\end{table} - -Al livello più alto la IANA può delegare l'allocazione a delle autorità -regionali (i Regional Register) assegnando ad esse dei blocchi di indirizzi; a -queste autorità regionali è assegnato un Registry Id che deve seguire -immediatamente il prefisso di formato. Al momento sono definite tre registri -regionali (INTERNIC, RIPE NCC e APNIC), inoltre la IANA si è riservata la -possibilità di allocare indirizzi su base regionale; pertanto sono previsti -i seguenti possibili valori per il \textsl{Registry Id}; -gli altri valori restano riservati per la IANA. -\begin{table}[htb] - \begin{center} - \begin{tabular}{l l l} - \textbf{Regione} & \textbf{Registro} & \textbf{Id} \\ - \toprule - Nord America &INTERNIC & \texttt{11000} \\ - Europa & RIPE NCC & \texttt{01000} \\ - Asia & APNIC & \texttt{00100} \\ - Multi-regionale & IANA &\texttt{10000} \\ - \bottomrule - \end{tabular} - \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 -suddivisione fra \textit{Provider Id}, che identifica i grandi fornitori di -servizi, e \textit{Subscriber Id}, che identifica i fruitori, sia gestita dai -singoli registri regionali. Questi ultimi dovranno definire come dividere lo -spazio di indirizzi assegnato a questi due campi (che ammonta a un totale di -58~bit), definendo lo spazio da assegnare al \textit{Provider Id} e -al \textit{Subscriber Id}, ad essi spetterà inoltre anche l'allocazione dei -numeri di \textit{Provider Id} ai singoli fornitori, ai quali sarà delegata -l'autorità di allocare i \textit{Subscriber Id} al loro interno. - -L'ultimo livello è quello \textit{Intra-subscriber} che è lasciato alla -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 -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. - -\begin{table}[htb] - \centering - \footnotesize - \begin{tabular} {@{\vrule}p{64mm}@{\vrule}p{16mm}@{\vrule}c@{\vrule}} - \multicolumn{1}{c}{64 bit}&\multicolumn{1}{c}{16 bit}& - \multicolumn{1}{c}{48 bit}\\ - \hline - \omit\vrule\hfill\vrule&\hspace{16mm}&\omit\hspace{48mm}\hfill\vrule\\ - \centering \textsl{Subscriber Prefix}& - \centering \textsl{Subnet Id}& - \textsl{Interface Id}\\ - \omit\vrule\hfill\vrule& &\omit\hspace{6mm}\hfill\vrule\\ - \hline - \end{tabular} -\caption{Formato del campo \textit{Intra-subscriber} per un indirizzo unicast - \textit{provider-based}.} -\label{tab:IP_ipv6_uninterf} -\end{table} - -Qualora si dovesse avere a che fare con una necessità di un numero più -elevato di sottoreti, il precedente schema andrebbe modificato, per evitare -l'enorme spreco dovuto all'uso dei MAC-address, a questo scopo si possono -usare le capacità di autoconfigurazione di IPv6 per assegnare indirizzi -generici con ulteriori gerarchie per sfruttare efficacemente tutto lo spazio -di indirizzi. - -Un registro regionale può introdurre un ulteriore livello nella gerarchia -degli indirizzi, allocando dei blocchi per i quali delegare l'autorità a dei -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 58~bit come -mostrato in \ntab. - -\begin{table}[htb] - \centering - \footnotesize - \begin{tabular} {@{\vrule}p{3mm} - @{\vrule}p{10mm}@{\vrule}p{12mm}@{\vrule}p{18mm} - @{\vrule}p{18mm}@{\vrule}c@{\vrule}} - \multicolumn{1}{@{}c@{}}{3}&\multicolumn{1}{c}{5 bit}& - \multicolumn{1}{c}{n bit}&\multicolumn{1}{c}{m bit}& - \multicolumn{1}{c}{56-n-m bit}&\multicolumn{1}{c}{64 bit} \\ - \hline - \omit\vrule\hfill\vrule& & & & &\omit\hspace{64mm}\hfill\vrule\\ - \centering \texttt{3}& - \centering \textsl{Reg.}& - \centering \textsl{Naz.}& - \centering \textsl{Prov.}& - \centering \textsl{Subscr.}& - \textsl{Intra-Subscriber} \\ - \omit\vrule\hfill\vrule &&&&&\\ - \hline - \end{tabular} -\caption{Formato di un indirizzo unicast \textit{provider-based} che prevede - un registro nazionale.} -\label{tab:IP_ipv6_uninaz} -\end{table} - - -\subsection{Indirizzi ad uso locale} -\label{sec:IP_ipv6_linksite} - -Gli indirizzi ad uso locale sono indirizzi unicast che sono instradabili solo -localmente (all'interno di un sito o di una sottorete), e possono avere una -unicità locale o globale. - -Questi indirizzi sono pensati per l'uso all'interno di un sito per mettere su -una comunicazione locale immediata, o durante le fasi di autoconfigurazione -prima di avere un indirizzo globale. - -\begin{table}[htb] - \centering - \footnotesize - \begin{tabular} {@{\vrule}p{10mm}@{\vrule}p{54mm}@{\vrule}c@{\vrule}} - \multicolumn{1}{c}{10} &\multicolumn{1}{c}{54 bit} & - \multicolumn{1}{c}{64 bit} \\ - \hline - \omit\vrule\hfill\vrule & & \omit\hspace{64mm}\hfill\vrule\\ - \centering \texttt{FE80}& - \centering\texttt{0000 . . . . . 0000} & - Interface Id \\ - \omit\vrule\hfill\vrule & &\\ - \hline -\end{tabular} -\caption{Formato di un indirizzo \textit{link-local}.} -\label{tab:IP_ipv6_linklocal} -\end{table} - -Ci sono due tipi di indirizzi, \textit{link-local} e \textit{site-local}. Il -primo è usato per un singolo link; la struttura è mostrata in \curtab, questi -indirizzi iniziano sempre per \texttt{FE80} 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 \ntab, questi indirizzi iniziano sempre per -\texttt{FEC0} 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] - \centering - \footnotesize - \begin{tabular} {@{\vrule}p{10mm}@{\vrule}p{38mm}@{\vrule}p{16mm} - @{\vrule}c@{\vrule}} - \multicolumn{1}{c}{10} &\multicolumn{1}{c}{38 bit} & - \multicolumn{1}{c}{16 bit} &\multicolumn{1}{c}{64 bit} \\ - \hline - \omit\vrule\hfill\vrule& & & \omit\hspace{64mm}\hfill\vrule\\ - \centering \texttt{FEC0}& - \centering \texttt{0000 . . . 0000}& - \centering Subnet Id & - Interface Id\\ - \omit\vrule\hfill\vrule& & &\\ - \hline -\end{tabular} -\caption{Formato di un indirizzo \textit{site-local}.} -\label{tab:IP_ipv6_sitelocal} -\end{table} - -Gli indirizzi di uso locale consentono ad una organizzazione che non è -(ancora) connessa ad Internet di operare senza richiedere un prefisso globale, -una volta che in seguito l'organizzazione venisse connessa a Internet -potrebbe continuare a usare la stessa suddivisione effettuata con gli -indirizzi \textit{site-local} utilizzando un prefisso globale e la -rinumerazione degli indirizzi delle singole macchine sarebbe automatica. - -\subsection{Indirizzi riservati} -\label{sec:IP_ipv6_reserved} - -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 -\ntab), 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 supportate -sull'host di origine). - -\begin{table}[!htb] - \centering - \footnotesize - \begin{tabular} {@{\vrule}p{80mm}@{\vrule}p{16mm}@{\vrule}c@{\vrule}} - \multicolumn{1}{c}{80 bit} &\multicolumn{1}{c}{16 bit} & - \multicolumn{1}{c}{32 bit} \\ - \hline - \omit\vrule\hfill\vrule& &\omit\hspace{32mm}\hfill\vrule\\ - \centering - \texttt{0000 . . . . . . . . . . . . 0000} & - \centering\texttt{FFFF} & - IPv4 address \\ - \omit\vrule\hfill\vrule& &\\ - \hline -\end{tabular} -\caption{Formato di un indirizzo IPV4 mappato su IPv6.} -\label{tab:IP_ipv6_map} -\end{table} - -Un secondo tipo di indirizzi di compatibilità sono gli \textit{IPv4 - compatibili IPv6} (vedi \ntab) usati nella transizione da IPv4 a IPv6, -quando un host 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. - -\begin{table}[htb] - \centering - \footnotesize - \begin{tabular} {@{\vrule}p{80mm}@{\vrule}p{16mm}@{\vrule}p{32mm}@{\vrule}} - \multicolumn{1}{c}{80 bit} &\multicolumn{1}{c}{16 bit} & - \multicolumn{1}{c}{32 bit} \\ - \hline - \omit\vrule\hfill\vrule& &\omit\hspace{32mm}\hfill\vrule\\ - \centering - \texttt{0000 . . . . . . . . . . . . 0000} & - \centering\texttt{0000} & - \parbox{32mm}{\centering IPv4 address} \\ - \omit\vrule\hfill\vrule& &\\ - \hline -\end{tabular} -\caption{Formato di un indirizzo IPV4 mappato su IPv6.} -\label{tab:IP_ipv6_comp} -\end{table} - -Altri indirizzi speciali sono il \textit{loopback address}, costituito da 127 -zeri ed un uno (cioè \texttt{::1}) e l'\textsl{indirizzo generico} -costituito da tutti zeri (scritto come \texttt{0::0} o ancora più -semplicemente come \texttt{:}) usato in genere quando si vuole indicare -l'accettazione di una connessione da qualunque host. - -\subsection{Multicasting} -\label{sec:IP_ipv6_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 -\ntab: - -\begin{table}[htb] - \centering - \footnotesize - \begin{tabular} {@{\vrule}p{12mm} - @{\vrule}p{6mm}@{\vrule}p{6mm}@{\vrule}c@{\vrule}} - \multicolumn{1}{c}{8}&\multicolumn{1}{c}{4}& - \multicolumn{1}{c}{4}&\multicolumn{1}{c}{112 bit} \\ - \hline - \omit\vrule\hfill\vrule& & & \omit\hspace{104mm}\hfill\vrule\\ - \centering\texttt{FF}& - \centering flag & - \centering scop& - Group Id\\ - \omit\vrule\hfill\vrule &&&\\ - \hline - \end{tabular} -\caption{Formato di un indirizzo \textit{multicast}.} -\label{tab:IP_ipv6_multicast} -\end{table} - -Il prefisso di formato per tutti gli indirizzi \textit{multicast} è -\texttt{FF}, ad esso seguono i due campi il cui significato è il seguente: - -\begin{itemize} -\item \textsl{flag}: un insieme di 4 bit, di cui i primi tre sono riservati e - posti a zero, l'ultimo è zero se l'indirizzo è permanente (cioè un - indirizzo noto, assegnato dalla IANA), ed è uno se invece l'indirizzo è - 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 - \ntab. -\end{itemize} - -Infine l'ultimo campo identifica il gruppo di multicast, sia permanente che -transitorio, all'interno del raggio di validità del medesimo. - -\begin{table}[!htb] - \centering - \footnotesize - \begin{tabular}[c]{c l c l} - \multicolumn{4}{c}{\bf Gruppi di multicast} \\ - \toprule - 0 & riservato & 8 & organizzazione locale \\ - 1 & nodo locale & 9 & non assegnato \\ - 2 & collegamento locale & A & non assegnato \\ - 3 & non assegnato & B & non assegnato \\ - 4 & non assegnato & C & non assegnato \\ - 5 & sito locale & D & non assegnato \\ - 6 & non assegnato & E & globale \\ - 7 & non assegnato & F & riservato \\ - \bottomrule - \end{tabular} -\caption{Possibili valori del campo \textsl{scop} di un indirizzo multicast.} -\label{tab:IP_ipv6_multiscope} -\end{table} - -\subsection{Indirizzi \textit{anycast}} -\label{sec:IP_anycast} - -Gli indirizzi \textit{anycast} sono indirizzi che vengono assegnati ad un -gruppo di interfacce per quali un pacchetto indirizzato a questo tipo di -indirizzo viene inviato al componente del gruppo più ``vicino'' secondo la -distanza di instradamento calcolata dai router. - -Questi indirizzi sono allocati nello stesso spazio degli indirizzi unicast, -usando uno dei formati disponibili, e per questo, sono da essi assolutamente -indistinguibili. Quando un indirizzo unicast viene assegnato a più interfacce -(trasformandolo in un anycast) il computer su cui è l'interfaccia deve essere -configurato per tener conto del fatto. - -Gli indirizzi anycast consentono a un nodo sorgente di inviare pacchetti a una -destinazione su un gruppo di possibili interfacce selezionate. La sorgente non -deve curarsi di come scegliere l'interfaccia più vicina, compito che tocca -al sistema di instradamento, (in sostanza la sorgente non ha nessun controllo -sulla selezione). - -Gli indirizzi anycast, quando vengono usati come parte di una sequenza di -instradamento, consentono ad esempio ad un nodo di scegliere quale fornitore -vuole usare (configurando gli indirizzi anycast per identificare i router di -uno stesso provider). - -Questi indirizzi pertanto possono essere usati come indirizzi intermedi in una -testata di instradamento o per identificare insiemi di router connessi a una -particolare sottorete, o che forniscono l'accesso a un certo sotto dominio. - -L'idea alla base degli indirizzi anycast è perciò quella di utilizzarli per -poter raggiungere il fornitore di servizio più vicino; ma restano aperte tutta -una serie di problematiche, visto che una connessione con uno di questi -indirizzi non è possibile, dato che per una variazione delle distanze di -routing non è detto che due pacchetti successivi finiscano alla stessa -interfaccia. - -La materia è pertanto ancora controversa e in via di definizione. - - -\section{Le estensioni} -\label{sec:IP_ipv6_extens} - -Come già detto in precedenza IPv6 ha completamente cambiato il trattamento -delle opzioni; queste ultime infatti sono state tolte dalla testata del -pacchetto, e poste in apposite \textsl{testate di estensione} (o -\textit{extension header}) poste fra la testata di IPv6 e la testata del -protocollo di trasporto. - -Per aumentare la velocità di processo, sia dei dati del livello seguente che -di ulteriori opzioni, ciascuna estensione deve avere una lunghezza multipla di -8 bytes per mantenere l'allineamento a 64~bit di tutti le testate seguenti. - -Dato che la maggior parte di queste estensioni non sono esaminate dai router -durante l'instradamento e la trasmissione dei pacchetti, ma solo all'arrivo -alla destinazione finale, questa scelta ha consentito un miglioramento delle -prestazioni rispetto a IPv4 dove la presenza di un'opzione comportava l'esame -di tutte quante. - -Un secondo miglioramento è che rispetto a IPv4 le opzioni possono essere di -lunghezza arbitraria e non limitate a 40 bytes; questo, insieme al modo in cui -vengono trattate, consente di utilizzarle per scopi come l'autenticazione e la -sicurezza, improponibili con IPv4. - -Le estensioni definite al momento sono le seguenti: -\begin{itemize} -\item \textbf{Hop by hop} devono seguire immediatamente la testata principale; - indicano le opzioni che devono venire processate ad ogni passaggio da un - router, fra di esse è da menzionare la \textit{jumbo payload} che segnala - la presenza di un pacchetto di dati di dimensione superiore a 64Kb. -\item \textbf{Destination options} opzioni che devono venire esaminate al nodo - di ricevimento, nessuna di esse è tuttora definita. -\item \textbf{Routing} definisce una \textit{source route} (come la analoga - opzione di IPv4) cioè una lista di indirizzi IP di nodi per i quali il - pacchetto deve passare. -\item \textbf{Fragmentation} viene generato automaticamente quando un host - 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. -\item \textbf{Encapsulation} serve a gestire la segretezza del contenuto - trasmesso; è documentato dall'RFC 1827. -\end{itemize} - -La presenza di opzioni è rilevata dal valore del campo \textit{next header} -che indica qual'è la testata successiva a quella di IPv6; in assenza di -opzioni questa sarà la testata 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 \ntab. - -\begin{table}[htb] - \begin{center} - \footnotesize - \begin{tabular}{c l l} - \textbf{Valore} & \textbf{Keyword} & \textbf{Tipo di protocollo} \\ - \hline - \hline - 0 & & riservato\\ - & HBH & Hop by Hop \\ - 1 & ICMP & Internet Control Message (IPv4 o IPv6) \\ - 2 & ICMP & Internet Group Management (IPv4) \\ - 3 & GGP & Gateway-to-Gateway \\ - 4 & IP & IP in IP (IPv4 encapsulation) \\ - 5 & ST & Stream \\ - 6 & TCP & Trasmission Control \\ - 17 & UDP & User Datagram \\ - 43 & RH & Routing Header (IPv6) \\ - 44 & FH & Fragment Header (IPv6) \\ - 45 & IDRP & Inter Domain Routing \\ - 51 & AH & Autentication Header (IPv6) \\ - 52 & ESP & Encrypted Security Payload (IPv6) \\ - 59 & Null & No next header (IPv6) \\ - 88 & IGRP & Internet Group Routing \\ - 89 & OSPF & Open Short Path First \\ - 255& & riservato \\ - \end{tabular} - \caption{Tipi di protocolli e testate di estensione} - \label{tab:IP_ipv6_nexthead} - \end{center} -\end{table} - -Questo meccanismo permette la presenza di più opzioni in successione prima -del pacchetto del protocollo di trasporto; l'ordine raccomandato per le -estensioni è quello riportato nell'elenco precedente con la sola differenza -che le opzioni di destinazione sono inserite nella posizione ivi indicata solo -se, come per il tunnelling, devono essere esaminate dai router, quelle che -devono essere esaminate solo alla destinazione finale vanno in coda. - - -\section{Qualità di servizio} -\label{sec:IP_ipv6_qos} - -Una delle caratteristiche innovative di IPv6 è quella di avere introdotto un -supporto per la qualità di servizio che è importante per applicazioni come -quelle multimediali o ``real-time'' che richiedono un qualche grado di -controllo sulla stabilità della banda di trasmissione, sui ritardi o la -dispersione dei temporale del flusso dei pacchetti. - - -\subsection{Etichette di flusso} -\label{sec:IP_ipv6_flow} -L'introduzione del campo \textit{flow label} può essere usata dall'origine -della comunicazione per etichettare quei pacchetti per i quali si vuole un -trattamento speciale da parte dei router come un una garanzia di banda minima -assicurata o un tempo minimo di instradamento/trasmissione garantito. - -Questo aspetto di IPv6 è ancora sperimentale per cui i router che non -supportino queste funzioni devono porre a zero il \textit{flow label} per i -pacchetti da loro originanti e lasciare invariato il campo per quelli in -transito. - -Un flusso è una sequenza di pacchetti da una particolare origine a una -particolare destinazione per il quale l'origine desidera un trattamento -speciale da parte dei router che lo manipolano; la natura di questo -trattamento può essere comunicata ai router in vari modi (come un protocollo -di controllo o con opzioni del tipo \textit{hop-by-hop}). - -Ci possono essere più flussi attivi fra un'origine e una destinazione, come -del traffico non assegnato a nessun flusso, un flusso viene identificato -univocamente dagli indirizzi di origine e destinazione e da una etichetta di -flusso diversa da zero, il traffico normale deve avere l'etichetta di flusso -posta a zero. - -L'etichetta di flusso è assegnata dal nodo di origine, i valori devono -essere scelti in maniera (pseudo)casuale nel range fra 1 e FFFFFF in modo da -rendere utilizzabile un qualunque sottoinsieme dei bit come chiavi di hash per -i router. - -\subsection{Priorità} -\label{sec:prio} - -Il campo di priorità consente di indicare il livello di priorità dei -pacchetti relativamente agli altri pacchetti provenienti dalla stessa -sorgente. I valori sono divisi in due intervalli, i valori da 0 a 7 sono usati -per specificare la priorità del traffico per il quale la sorgente provvede -un controllo di congestione cioè per il traffico che può essere ``tirato -indietro'' in caso di congestione come quello di TCP, i valori da 8 a 15 sono -usati per i pacchetti che non hanno questa caratteristica, come i pacchetti -``real-time'' inviati a ritmo costante. - -Per il traffico con controllo di congestione sono raccomandati i seguenti -valori di priorità a seconda del tipo di applicazione: - -\begin{table}[htb] - \centering - \footnotesize - \begin{tabular} {c l} - Valore & tipo di traffico \\ - \toprule - 0 & traffico generico \\ - 1 & traffico di riempimento (es. news) \\ - 2 & trasferimento dati non interattivo (es. e-mail)\\ - 3 & riservato \\ - 4 & trasferimento dati interattivo (es. FTP, HTTP, NFS) \\ - 5 & riservato \\ - 6 & traffico interattivo (telnet, X)\\ - 7 & traffico di controllo (routing, SNMP) \\ - \bottomrule -\end{tabular} -\caption{Formato di un indirizzo \textit{site-local}.} -\label{tab:priority} -\end{table} - -Per il traffico senza controllo di congestione la priorità più bassa -dovrebbe essere usata per quei pacchetti che si preferisce siano scartati -più facilmente in caso di congestione. - - -\section{Sicurezza a livello IP} -\label{sec:security} - -La attuale implementazione di Internet presenta numerosi problemi di -sicurezza, in particolare i dati presenti nelle testate dei vari protocolli -sono assunti essere corretti, il che da adito alla possibilità di varie -tipologie di attacco forgiando pacchetti false, inoltre tutti questi dati -passano in chiaro sulla rete e sono esposti all'osservazione di chiunque si -trovi in mezzo. - -Con IPv4 non è possibile realizzare un meccanismo di autenticazione e -riservatezza a un livello inferiore al primo (quello di applicazione), con -IPv6 è stato progettata la possibilità di intervenire al livello del -collegamento (il terzo) prevendo 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. - -Il meccanismo in sostanza si basa su due estensioni: -\begin{itemize} -\item una testata di sicurezza (\textit{autentication header}) che garantisce - al destinatario l'autenticità del pacchetto -\item un carico di sicurezza (\textit{Encrypted Security Payload}) che - assicura che solo il legittimo ricevente può leggere il pacchetto. -\end{itemize} - -Perché tutto questo funzioni le stazioni sorgente e destinazione devono -usare una stessa chiave crittografica e gli stessi algoritmi, l'insieme degli -accordi fra le due stazioni per concordare chiavi e algoritmi usati va sotto -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 dovà essere lo stesso per tutte le stazioni del gruppo. - -\subsection{Autenticazione} -Il primo meccanismo di sicurezza è quello della testata di autenticazione -(\textit{autentication header}) che fornisce l'autenticazione e il controllo -di integrità (ma senza riservatezza) dei pacchetti IP. - -La testata di autenticazione ha il formato descritto in -Tab.~\ref{tab:autent_head} il campo \textit{Next Header} indica la testata -successiva, con gli stessi valori del campo omonimo nella testata principale -di IPv6, il campo \textit{Lengh} indica la lunghezza della testata 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. - -Completano la testata i dati di autenticazione che contengono un valore di -controllo di intgrità (ICV, \textit{Integrity Check Value}), che deve essere -di dimensione pari a un multiplo intero di 32 bit e può contenere un padding -per allineare la testata 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 Lenght& - \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}}{Autentication Data} \\ - \multicolumn{3}{@{\vrule}c@{\vrule}} - {\centering ... } \\ - \multicolumn{3}{@{\vrule}c@{\vrule}}{} \\ - \hline - \end{tabular} - \caption{Formato della testata dell'estensione di autenticazione} - \label{tab:autent_estens} - \end{center} -\end{table} -\renewcommand\arraystretch{1} %default - - - -La testata di autenticazione può essere impiegata in due modi diverse -modalità: modalità trasporto e modalità tunnel. - -La modalità trasporto è utilizzabile solo per comunicazioni fra stazioni -singole che supportino l'autenticazione. In questo caso la testata di -autenticazione è inserita dopo tutte le altre testate di estensione -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 della testata 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} - -La modalit`\a tunnel può essere utilizzata sia per comunicazioni fra stazioni -singole che con un gateway di sicurezza; in questa modalità - - -La testata di autenticazione è una testata di estensione inserita dopo la -testata principale e prima del carico dei dati. La sua presenza non ha -perciò alcuna influenza sui livelli superiori dei protocolli di trasmissione -come il TCP. - - - - - -La procedura di autenticazione cerca di garantire l'autenticità del -pacchetto nella massima estensione possibile, ma dato che alcuni campi della -testata di IP possono variare in maniera impredicibile alla sorgente, il loro -valore non può essere protetto dall'autenticazione. - -Il calcolo dei dati di autenticazione viene effettuato alla sorgente su una -versione speciale del pacchetto in cui il numero di salti nella testata -principale è settato a zero, così come le opzioni che possono essere -modificate nella trasmissione, e la testata di routing (se usata) è posta ai -valori che deve avere all'arrivo. - -L'estensione è indipendente dall'algoritmo particolare, e il protocollo è -ancora in fase di definizione; attualmente è stato suggerito l'uso di una -modifica dell'MD5 chiamata \textit{keyed MD5} che combina alla codifica anche -una chiave che viene inserita all'inizio e alla fine degli altri campi. - -\subsection{Riservatezza} -\label{sec:ecry} - -Per garantire una trasmissione riservata dei dati, è stata previsto la -possibilità di trasmettere pacchetti con i dati criptati: il cosiddetto ESP, -\textit{Encripted Security Payload}. Questo viene realizzato usando con una -apposita opzione che deve essere sempre l'ultima delle testate 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 Tab~.\ref{tab: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}}{Testata Principale}\\ - \multicolumn{4}{@{\vrule}c@{\vrule}}{...}\\ - \multicolumn{4}{@{\vrule}c@{\vrule}}{}\\ - \hline - \multicolumn{4}{@{\vrule}c@{\vrule}}{}\\ - \multicolumn{4}{@{\vrule}c@{\vrule}}{Testate 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 - - -\section{Autoconfigurazione} -\label{sec:autoconf} - diff --git a/app_b.tex b/app_b.tex deleted file mode 100644 index 48d2dd8..0000000 --- a/app_b.tex +++ /dev/null @@ -1,3 +0,0 @@ -\chapter{Il protocollo TCP} -\label{cha:tcp_protocol} - diff --git a/gapil.tex b/gapil.tex index 91f93a0..13711b0 100644 --- a/gapil.tex +++ b/gapil.tex @@ -107,8 +107,8 @@ \include{elemtcp} \include{simpltcp} \appendix -\include{app_a} -\include{app_b} +\include{ipprot} +\include{tcpprot} \include{fdl} % at the end put the bibliography diff --git a/img/stack.eps b/img/stack.eps deleted file mode 100644 index f13e4ee..0000000 --- a/img/stack.eps +++ /dev/null @@ -1,964 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Senzanome-1 -%%Creator: Dia v0.86 -%%CreationDate: Sat May 26 04:06:48 2001 -%%For: cgabriel -%%Magnification: 1.0000 -%%Orientation: Portrait -%%BoundingBox: 0 0 1227 907 -%%Pages: 1 -%%BeginSetup -%%EndSetup -%%EndComments -[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright -/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon -/less /equal /greater /question /at /A /B /C /D /E -/F /G /H /I /J /K /L /M /N /O -/P /Q /R /S /T /U /V /W /X /Y -/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c -/d /e /f /g /h /i /j /k /l /m -/n /o /p /q /r /s /t /u /v /w -/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright -/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior -/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf -/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla -/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde -/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex -/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring -/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis -/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave -/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def -/Times-Roman-latin1 - /Times-Roman findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Times-Italic-latin1 - /Times-Italic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Times-Bold-latin1 - /Times-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Times-BoldItalic-latin1 - /Times-BoldItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/AvantGarde-Book-latin1 - /AvantGarde-Book findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/AvantGarde-BookOblique-latin1 - /AvantGarde-BookOblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/AvantGarde-Demi-latin1 - /AvantGarde-Demi findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/AvantGarde-DemiOblique-latin1 - /AvantGarde-DemiOblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Bookman-Light-latin1 - /Bookman-Light findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Bookman-LightItalic-latin1 - /Bookman-LightItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Bookman-Demi-latin1 - /Bookman-Demi findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Bookman-DemiItalic-latin1 - /Bookman-DemiItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Courier-latin1 - /Courier findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Courier-Oblique-latin1 - /Courier-Oblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Courier-Bold-latin1 - /Courier-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Courier-BoldOblique-latin1 - /Courier-BoldOblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-latin1 - /Helvetica findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Oblique-latin1 - /Helvetica-Oblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Bold-latin1 - /Helvetica-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-BoldOblique-latin1 - /Helvetica-BoldOblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Narrow-latin1 - /Helvetica-Narrow findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Narrow-Oblique-latin1 - /Helvetica-Narrow-Oblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Narrow-Bold-latin1 - /Helvetica-Narrow-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Helvetica-Narrow-BoldOblique-latin1 - /Helvetica-Narrow-BoldOblique findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/NewCenturySchoolbook-Roman-latin1 - /NewCenturySchoolbook-Roman findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/NewCenturySchoolbook-Italic-latin1 - /NewCenturySchoolbook-Italic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/NewCenturySchoolbook-Bold-latin1 - /NewCenturySchoolbook-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/NewCenturySchoolbook-BoldItalic-latin1 - /NewCenturySchoolbook-BoldItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Palatino-Roman-latin1 - /Palatino-Roman findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Palatino-Italic-latin1 - /Palatino-Italic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Palatino-Bold-latin1 - /Palatino-Bold findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Palatino-BoldItalic-latin1 - /Palatino-BoldItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/Symbol-latin1 - /Symbol findfont -definefont pop -/ZapfChancery-MediumItalic-latin1 - /ZapfChancery-MediumItalic findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/ZapfDingbats-latin1 - /ZapfDingbats findfont - dup length dict begin - {1 index /FID ne {def} {pop pop} ifelse} forall - /Encoding isolatin1encoding def - currentdict end -definefont pop -/cp {closepath} bind def -/c {curveto} bind def -/f {fill} bind def -/a {arc} bind def -/ef {eofill} bind def -/ex {exch} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth pop} bind def -/tr {translate} bind def - -/ellipsedict 8 dict def -ellipsedict /mtrx matrix put -/ellipse -{ ellipsedict begin - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def /savematrix mtrx currentmatrix def - x y tr xrad yrad sc - 0 0 1 startangle endangle arc - savematrix setmatrix - end -} def - -/mergeprocs { -dup length -3 -1 roll -dup -length -dup -5 1 roll -3 -1 roll -add -array cvx -dup -3 -1 roll -0 exch -putinterval -dup -4 2 roll -putinterval -} bind def -28.346000 -28.346000 scale -8.087680 -27.940743 translate -%%EndProlog - - -1.000000 1.000000 1.000000 srgb -n 6.000000 -2.000000 m 6.000000 1.000000 l 17.000000 1.000000 l 17.000000 -2.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 6.000000 -2.000000 m 6.000000 1.000000 l 17.000000 1.000000 l 17.000000 -2.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(Variabili di ambiente) dup sw 2 div 11.500000 ex sub -0.235294 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 6.000000 1.000000 m 6.000000 4.000000 l 17.000000 4.000000 l 17.000000 1.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 6.000000 1.000000 m 6.000000 4.000000 l 17.000000 4.000000 l 17.000000 1.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(Stack) dup sw 2 div 11.500000 ex sub 2.764706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 6.000000 4.000000 m 6.000000 7.000000 l 17.000000 7.000000 l 17.000000 4.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 6.000000 4.000000 m 6.000000 7.000000 l 17.000000 7.000000 l 17.000000 4.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(Memoria non) dup sw 2 div 11.500000 ex sub 5.314706 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(allocata) dup sw 2 div 11.500000 ex sub 6.214706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 6.000000 19.000000 m 6.000000 24.000000 l 17.000000 24.000000 l 17.000000 19.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 6.000000 19.000000 m 6.000000 24.000000 l 17.000000 24.000000 l 17.000000 19.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(Altra memoria) dup sw 2 div 11.500000 ex sub 21.314706 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(del processo) dup sw 2 div 11.500000 ex sub 22.214706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 6.000000 7.000000 m 6.000000 9.000000 l 17.000000 9.000000 l 17.000000 7.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 6.000000 7.000000 m 6.000000 9.000000 l 17.000000 9.000000 l 17.000000 7.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(file1.o) dup sw 2 div 11.500000 ex sub 8.264706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 6.000000 11.000000 m 6.000000 13.000000 l 17.000000 13.000000 l 17.000000 11.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 6.000000 11.000000 m 6.000000 13.000000 l 17.000000 13.000000 l 17.000000 11.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(file3.o) dup sw 2 div 11.500000 ex sub 12.264706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 6.000000 9.000000 m 6.000000 11.000000 l 17.000000 11.000000 l 17.000000 9.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 6.000000 9.000000 m 6.000000 11.000000 l 17.000000 11.000000 l 17.000000 9.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(file2.o) dup sw 2 div 11.500000 ex sub 10.264706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 6.000000 13.000000 m 6.000000 15.000000 l 17.000000 15.000000 l 17.000000 13.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 6.000000 13.000000 m 6.000000 15.000000 l 17.000000 15.000000 l 17.000000 13.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(file4.0) dup sw 2 div 11.500000 ex sub 14.264706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n -2.676550 -2.280000 m -2.676550 -0.020000 l 2.950000 -0.020000 l 2.950000 -2.280000 l f -1.000000 1.000000 1.000000 srgb -n -2.676550 -1.150000 m -2.676550 -1.150000 1.130000 1.130000 180.000000 270.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 2.950000 -1.150000 m 2.950000 -1.150000 1.130000 1.130000 270.000000 360.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n -3.806550 -1.150000 m -3.806550 -1.150000 l 4.080000 -1.150000 l 4.080000 -1.150000 l f -1.000000 1.000000 1.000000 srgb -n -2.676550 -1.150000 m -2.676550 -1.150000 1.130000 1.130000 90.000000 180.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 2.950000 -1.150000 m 2.950000 -1.150000 1.130000 1.130000 0.000000 90.000000 ellipse f -0.180000 slw -[] 0 sd -[] 0 sd -0 slj -0.160507 0.287785 1.000000 srgb -n -2.676550 -2.280000 m 2.950000 -2.280000 l s -0.160507 0.287785 1.000000 srgb -n -2.676550 -0.020000 m 2.950000 -0.020000 l s -0.160507 0.287785 1.000000 srgb -n -2.676550 -1.150000 1.130000 1.130000 180.000000 270.000000 ellipse s -0.160507 0.287785 1.000000 srgb -n 2.950000 -1.150000 1.130000 1.130000 270.000000 360.000000 ellipse s -0.160507 0.287785 1.000000 srgb -n -3.806550 -1.150000 m -3.806550 -1.150000 l s -0.160507 0.287785 1.000000 srgb -n 4.080000 -1.150000 m 4.080000 -1.150000 l s -0.160507 0.287785 1.000000 srgb -n -2.676550 -1.150000 1.130000 1.130000 90.000000 180.000000 ellipse s -0.160507 0.287785 1.000000 srgb -n 2.950000 -1.150000 1.130000 1.130000 0.000000 90.000000 ellipse s -/Times-Bold-latin1 ff 0.900000 scf sf -0.292153 0.357879 1.000000 srgb -(Lo stack cresce) dup sw 2 div 0.136725 ex sub -1.335294 m gs 1 -1 sc sh gr -0.292153 0.357879 1.000000 srgb -(in questa direzione) dup sw 2 div 0.136725 ex sub -0.435294 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 7.000000 1.000000 m 6.996900 4.000000 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 6.597727 3.199587 m 6.996900 4.000000 l 7.397726 3.200414 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 2.108363 -0.020000 m 6.998450 2.500000 l s -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n -3.000000 10.000000 m -1.850000 10.000000 -3.400000 16.400000 -2.000000 16.000000 c s -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n -2.000000 5.000000 m -3.050000 4.600000 -1.800000 10.000000 -3.000000 10.000000 c s -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 28.000000 -4.000000 m 30.100000 -4.000000 27.950000 11.050000 30.000000 11.000000 c s -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 30.000000 11.000000 m 28.300000 11.000000 29.950000 25.000000 28.000000 25.000000 c s -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 22.000000 -3.050000 m 17.000000 -2.000000 l s -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 22.000000 -0.050000 m 17.000000 1.000000 l s -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 22.000000 5.950000 m 17.000000 7.000000 l s -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 22.000000 13.950000 m 17.000000 15.000000 l s -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 22.000000 17.950000 m 17.000000 19.000000 l s -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 22.000000 23.000000 m 17.000000 24.000000 l s -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 18.000000 7.000000 m 20.100000 7.000000 18.000000 9.000000 20.000000 10.000000 c s -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 20.000000 10.000000 m 18.300000 10.000000 19.950000 19.000000 18.000000 19.000000 c s -/Times-Bold-latin1 ff 0.600000 scf sf -0.000000 0.000000 0.000000 srgb -(Immagine in ) dup sw 2 div 22.000000 ex sub 10.000000 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(memoria del) dup sw 2 div 22.000000 ex sub 10.600000 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -( programma) dup sw 2 div 22.000000 ex sub 11.200000 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -() dup sw 2 div 22.000000 ex sub 11.800000 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n -1.000000 5.000000 m -1.000000 7.000000 l 3.000000 7.000000 l 3.000000 5.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n -1.000000 5.000000 m -1.000000 7.000000 l 3.000000 7.000000 l 3.000000 5.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(file1.o) dup sw 2 div 1.000000 ex sub 6.264706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n -1.000000 8.000000 m -1.000000 10.000000 l 3.000000 10.000000 l 3.000000 8.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n -1.000000 8.000000 m -1.000000 10.000000 l 3.000000 10.000000 l 3.000000 8.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(file2.o) dup sw 2 div 1.000000 ex sub 9.264706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n -1.000000 11.000000 m -1.000000 13.000000 l 3.000000 13.000000 l 3.000000 11.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n -1.000000 11.000000 m -1.000000 13.000000 l 3.000000 13.000000 l 3.000000 11.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(file3.o) dup sw 2 div 1.000000 ex sub 12.264706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n -1.000000 14.000000 m -1.000000 16.000000 l 3.000000 16.000000 l 3.000000 14.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n -1.000000 14.000000 m -1.000000 16.000000 l 3.000000 16.000000 l 3.000000 14.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(file4.0) dup sw 2 div 1.000000 ex sub 15.264706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n -1.000000 17.000000 m -1.000000 19.000000 l 4.000000 19.000000 l 4.000000 17.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n -1.000000 17.000000 m -1.000000 19.000000 l 4.000000 19.000000 l 4.000000 17.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(Librerie) dup sw 2 div 1.500000 ex sub 18.264706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n -1.000000 20.000000 m -1.000000 22.000000 l 4.000000 22.000000 l 4.000000 20.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n -1.000000 20.000000 m -1.000000 22.000000 l 4.000000 22.000000 l 4.000000 20.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(Librerie) dup sw 2 div 1.500000 ex sub 21.264706 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 3.000000 6.000000 m 6.000000 8.000000 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 5.029275 7.653312 m 6.000000 8.000000 l 5.306625 7.237287 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 3.000000 9.000000 m 6.000000 10.000000 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 4.972260 9.920943 m 6.000000 10.000000 l 5.130374 9.446601 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 3.000000 12.000000 m 6.000000 12.000000 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 5.000000 12.250000 m 6.000000 12.000000 l 5.000000 11.750000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 3.000000 15.000000 m 6.000000 14.000000 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 5.130374 14.553399 m 6.000000 14.000000 l 4.972260 14.079057 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 4.000000 18.000000 m 6.000000 16.000000 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 5.469670 16.883883 m 6.000000 16.000000 l 5.116117 16.530330 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slc -0.000000 0.000000 0.000000 srgb -n 4.000000 21.000000 m 6.000000 18.000000 l s -0 slj -0.000000 0.000000 0.000000 srgb -n 5.653312 18.970725 m 6.000000 18.000000 l 5.237287 18.693375 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n -3.000000 19.000000 m -1.850000 19.000000 -3.400000 22.400000 -2.000000 22.000000 c s -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n -2.000000 17.000000 m -3.050000 16.600000 -1.800000 19.000000 -3.000000 19.000000 c s -/Times-Bold-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(Indirizzo di ) dup sw 2 div 33.000000 ex sub 11.000000 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(memoria) dup sw 2 div 33.000000 ex sub 11.800000 m gs 1 -1 sc sh gr -/Times-Bold-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(File oggetto) dup sw 2 div -6.000000 ex sub 10.000000 m gs 1 -1 sc sh gr -/Times-Bold-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(Librerie) dup sw 2 div -5.000000 ex sub 19.000000 m gs 1 -1 sc sh gr -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 6.000000 25.000000 m 6.000000 27.000000 11.516053 23.976037 11.516053 25.976037 c s -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0 slc -0.000000 0.000000 0.000000 srgb -n 17.000000 25.000000 m 17.000000 27.000000 11.516053 23.976037 11.516053 25.976037 c s -/Times-Bold-latin1 ff 0.800000 scf sf -0.000000 0.000000 0.000000 srgb -(Immagine della memoria) dup sw 2 div 11.516053 ex sub 26.976037 m gs 1 -1 sc sh gr -0.000000 0.000000 0.000000 srgb -(di un processo) dup sw 2 div 11.516053 ex sub 27.776037 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 6.000000 15.000000 m 6.000000 19.000000 l 17.000000 19.000000 l 17.000000 15.000000 l f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 6.000000 15.000000 m 6.000000 19.000000 l 17.000000 19.000000 l 17.000000 15.000000 l cp s -/Times-Bold-latin1 ff 0.900000 scf sf -0.000000 0.000000 0.000000 srgb -(Libreria) dup sw 2 div 11.500000 ex sub 17.264706 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 22.300000 -4.000000 m 22.300000 -2.100000 l 26.102720 -2.100000 l 26.102720 -4.000000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 -3.700000 m 22.300000 -3.700000 0.300000 0.300000 180.000000 270.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.102720 -3.700000 m 26.102720 -3.700000 0.300000 0.300000 270.000000 360.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 22.000000 -3.700000 m 22.000000 -2.400000 l 26.402720 -2.400000 l 26.402720 -3.700000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 -2.400000 m 22.300000 -2.400000 0.300000 0.300000 90.000000 180.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.102720 -2.400000 m 26.102720 -2.400000 0.300000 0.300000 0.000000 90.000000 ellipse f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 22.300000 -4.000000 m 26.102720 -4.000000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 -2.100000 m 26.102720 -2.100000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 -3.700000 0.300000 0.300000 180.000000 270.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.102720 -3.700000 0.300000 0.300000 270.000000 360.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 22.000000 -3.700000 m 22.000000 -2.400000 l s -0.000000 0.000000 0.000000 srgb -n 26.402720 -3.700000 m 26.402720 -2.400000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 -2.400000 0.300000 0.300000 90.000000 180.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.102720 -2.400000 0.300000 0.300000 0.000000 90.000000 ellipse s -/AvantGarde-Book-latin1 ff 0.800000 scf sf -0.598485 0.068699 0.034038 srgb -(BFFFFFFF) dup sw 2 div 24.201360 ex sub -2.850000 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 22.300000 -1.000000 m 22.300000 0.900000 l 26.102720 0.900000 l 26.102720 -1.000000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 -0.700000 m 22.300000 -0.700000 0.300000 0.300000 180.000000 270.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.102720 -0.700000 m 26.102720 -0.700000 0.300000 0.300000 270.000000 360.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 22.000000 -0.700000 m 22.000000 0.600000 l 26.402720 0.600000 l 26.402720 -0.700000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 0.600000 m 22.300000 0.600000 0.300000 0.300000 90.000000 180.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.102720 0.600000 m 26.102720 0.600000 0.300000 0.300000 0.000000 90.000000 ellipse f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 22.300000 -1.000000 m 26.102720 -1.000000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 0.900000 m 26.102720 0.900000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 -0.700000 0.300000 0.300000 180.000000 270.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.102720 -0.700000 0.300000 0.300000 270.000000 360.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 22.000000 -0.700000 m 22.000000 0.600000 l s -0.000000 0.000000 0.000000 srgb -n 26.402720 -0.700000 m 26.402720 0.600000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 0.600000 0.300000 0.300000 90.000000 180.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.102720 0.600000 0.300000 0.300000 0.000000 90.000000 ellipse s -/AvantGarde-Book-latin1 ff 0.800000 scf sf -0.598485 0.068699 0.034038 srgb -(BFFFFDOC) dup sw 2 div 24.201360 ex sub 0.150000 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 22.300000 5.000000 m 22.300000 6.900000 l 26.490560 6.900000 l 26.490560 5.000000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 5.300000 m 22.300000 5.300000 0.300000 0.300000 180.000000 270.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.490560 5.300000 m 26.490560 5.300000 0.300000 0.300000 270.000000 360.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 22.000000 5.300000 m 22.000000 6.600000 l 26.790560 6.600000 l 26.790560 5.300000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 6.600000 m 22.300000 6.600000 0.300000 0.300000 90.000000 180.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.490560 6.600000 m 26.490560 6.600000 0.300000 0.300000 0.000000 90.000000 ellipse f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 22.300000 5.000000 m 26.490560 5.000000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 6.900000 m 26.490560 6.900000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 5.300000 0.300000 0.300000 180.000000 270.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.490560 5.300000 0.300000 0.300000 270.000000 360.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 22.000000 5.300000 m 22.000000 6.600000 l s -0.000000 0.000000 0.000000 srgb -n 26.790560 5.300000 m 26.790560 6.600000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 6.600000 0.300000 0.300000 90.000000 180.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.490560 6.600000 0.300000 0.300000 0.000000 90.000000 ellipse s -/AvantGarde-Book-latin1 ff 0.800000 scf sf -0.598485 0.068699 0.034038 srgb -(08004A138) dup sw 2 div 24.395280 ex sub 6.150000 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 22.300000 13.000000 m 22.300000 14.900000 l 26.490560 14.900000 l 26.490560 13.000000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 13.300000 m 22.300000 13.300000 0.300000 0.300000 180.000000 270.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.490560 13.300000 m 26.490560 13.300000 0.300000 0.300000 270.000000 360.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 22.000000 13.300000 m 22.000000 14.600000 l 26.790560 14.600000 l 26.790560 13.300000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 14.600000 m 22.300000 14.600000 0.300000 0.300000 90.000000 180.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.490560 14.600000 m 26.490560 14.600000 0.300000 0.300000 0.000000 90.000000 ellipse f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 22.300000 13.000000 m 26.490560 13.000000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 14.900000 m 26.490560 14.900000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 13.300000 0.300000 0.300000 180.000000 270.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.490560 13.300000 0.300000 0.300000 270.000000 360.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 22.000000 13.300000 m 22.000000 14.600000 l s -0.000000 0.000000 0.000000 srgb -n 26.790560 13.300000 m 26.790560 14.600000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 14.600000 0.300000 0.300000 90.000000 180.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.490560 14.600000 0.300000 0.300000 0.000000 90.000000 ellipse s -/AvantGarde-Book-latin1 ff 0.800000 scf sf -0.598485 0.068699 0.034038 srgb -(080048990) dup sw 2 div 24.395280 ex sub 14.150000 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 22.300000 17.000000 m 22.300000 18.900000 l 26.490560 18.900000 l 26.490560 17.000000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 17.300000 m 22.300000 17.300000 0.300000 0.300000 180.000000 270.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.490560 17.300000 m 26.490560 17.300000 0.300000 0.300000 270.000000 360.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 22.000000 17.300000 m 22.000000 18.600000 l 26.790560 18.600000 l 26.790560 17.300000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 18.600000 m 22.300000 18.600000 0.300000 0.300000 90.000000 180.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.490560 18.600000 m 26.490560 18.600000 0.300000 0.300000 0.000000 90.000000 ellipse f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 22.300000 17.000000 m 26.490560 17.000000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 18.900000 m 26.490560 18.900000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 17.300000 0.300000 0.300000 180.000000 270.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.490560 17.300000 0.300000 0.300000 270.000000 360.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 22.000000 17.300000 m 22.000000 18.600000 l s -0.000000 0.000000 0.000000 srgb -n 26.790560 17.300000 m 26.790560 18.600000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 18.600000 0.300000 0.300000 90.000000 180.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.490560 18.600000 0.300000 0.300000 0.000000 90.000000 ellipse s -/AvantGarde-Book-latin1 ff 0.800000 scf sf -0.598485 0.068699 0.034038 srgb -(080000000) dup sw 2 div 24.395280 ex sub 18.150000 m gs 1 -1 sc sh gr -1.000000 1.000000 1.000000 srgb -n 22.300000 22.000000 m 22.300000 24.000000 l 26.490560 24.000000 l 26.490560 22.000000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 22.300000 m 22.300000 22.300000 0.300000 0.300000 180.000000 270.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.490560 22.300000 m 26.490560 22.300000 0.300000 0.300000 270.000000 360.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 22.000000 22.300000 m 22.000000 23.700000 l 26.790560 23.700000 l 26.790560 22.300000 l f -1.000000 1.000000 1.000000 srgb -n 22.300000 23.700000 m 22.300000 23.700000 0.300000 0.300000 90.000000 180.000000 ellipse f -1.000000 1.000000 1.000000 srgb -n 26.490560 23.700000 m 26.490560 23.700000 0.300000 0.300000 0.000000 90.000000 ellipse f -0.100000 slw -[] 0 sd -[] 0 sd -0 slj -0.000000 0.000000 0.000000 srgb -n 22.300000 22.000000 m 26.490560 22.000000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 24.000000 m 26.490560 24.000000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 22.300000 0.300000 0.300000 180.000000 270.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.490560 22.300000 0.300000 0.300000 270.000000 360.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 22.000000 22.300000 m 22.000000 23.700000 l s -0.000000 0.000000 0.000000 srgb -n 26.790560 22.300000 m 26.790560 23.700000 l s -0.000000 0.000000 0.000000 srgb -n 22.300000 23.700000 0.300000 0.300000 90.000000 180.000000 ellipse s -0.000000 0.000000 0.000000 srgb -n 26.490560 23.700000 0.300000 0.300000 0.000000 90.000000 ellipse s -/AvantGarde-Book-latin1 ff 0.800000 scf sf -0.598485 0.068699 0.034038 srgb -(000000000) dup sw 2 div 24.395280 ex sub 23.200000 m gs 1 -1 sc sh gr -showpage diff --git a/img/stack.png b/img/stack.png deleted file mode 100644 index 20dc5e5..0000000 Binary files a/img/stack.png and /dev/null differ diff --git a/process.tex b/process.tex index 36e4295..e663713 100644 --- a/process.tex +++ b/process.tex @@ -877,3 +877,5 @@ Gli standard POSIX e XPG3 definiscono alcune di queste variabili (le pi comuni), come riportato in \ntab. GNU/Linux le supporta tutte e ne definisce anche altre per una lista parziale si può controllare \cmd{man environ} + + diff --git a/prochand.tex b/prochand.tex index c8f6ad4..72fcc78 100644 --- a/prochand.tex +++ b/prochand.tex @@ -41,9 +41,9 @@ arriva a 32767) oltre il quale si riparte dal numero pi (FIXME: verificare, non sono sicuro). Per questo motivo processo il processo di avvio (init) ha sempre il pid uguale a uno. -Ogni processo è identificato univocamente dal sistema per il suo -pid; quest'ultimo è un apposito tipo di dato, il \texttt{pid\_t} che in -genere è un intero con segno (nel caso di Linux e delle glibc il tipo usato è +Ogni processo è identificato univocamente dal sistema per il suo pid; +quest'ultimo è un tipo di dato standard, il \texttt{pid\_t} che in genere è un +intero con segno (nel caso di Linux e delle glibc il tipo usato è \texttt{int}. Tutti i processi inoltre portano traccia del pid del genitore, chiamato in