Rifinitura degli indici, correzioni ortografiche varie.
[gapil.git] / network.tex
index 9f84d7dd9b3b738ec96839cd0b5f3e50de4bfe11..671dd3861def6e1e8f8c570fe01ed0eb1f727225 100644 (file)
@@ -1,3 +1,13 @@
+%% network.tex
+%%
+%% Copyright (C) 2000-2002 Simone Piccardi.  Permission is granted to
+%% copy, distribute and/or modify this document under the terms of the GNU Free
+%% Documentation License, Version 1.1 or any later version published by the
+%% Free Software Foundation; with the Invariant Sections being "Prefazione",
+%% with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
+%% license is included in the section entitled "GNU Free Documentation
+%% License".
+%%
 \chapter{Introduzione alla programmazione di rete}
 \label{cha:network}
 
@@ -23,9 +33,9 @@ monolitico all'interno del quale vengono eseguite tutte le istruzioni, e
 presuppone un sistema operativo ``multitasking'' in grado di eseguire processi
 diversi.
 
-Il concetto fondamentale si basa la programmazione di rete sotto Linux (e
-sotto Unix in generale) è il modello \textit{client-server} in cui un
-programma di servizio, il \textit{server} riceve un connessione e risponde a
+Un concetto fondamentale su cui si basa la programmazione di rete sotto Linux
+(e sotto Unix in generale) è il modello \textit{client-server} in cui un
+programma di servizio, il \textit{server}, riceve una connessione e risponde a
 un programma di utilizzo, il \textit{client}, provvedendo a quest'ultimo un
 definito insieme di servizi.
 
@@ -70,27 +80,29 @@ macchine diverse conversano tramite lo stesso protocollo. Questo modello di
 funzionamento è stato stato standardizzato dalla \textit{International
   Standards Organization} (ISO) che ha preparato fin dal 1984 il Modello di
 Riferimento \textit{Open Systems Interconnection} (OSI), strutturato in sette
-livelli, secondo quanto riportato in \ntab.
+livelli, secondo quanto riportato in \tabref{tab:net_osilayers}.
 
 \begin{table}[htb]
   \centering
-  \begin{tabular}{l c c l} 
-    \textbf{Livello} & \multicolumn{2}{c}{\textbf{Nome}} & \\
+  \begin{tabular}{|l|c|c|} 
     \hline
-    Livello 7&\textit{Application} &\textsl{Applicazione}& \\ 
-    Livello 6&\textit{Presentation} &\textsl{Presentazione}& \\ 
-    Livello 5&\textit{Session} &\textsl{Sessione}& \\ 
-    Livello 4&\textit{Transport} &\textsl{Trasporto}& \\ 
-    Livello 3&\textit{Network} &\textsl{Rete}&   \\ 
-    Livello 2&\textit{DataLink} &\textsl{Collegamento Dati}& \\
-    Livello 1&\textit{Connection} &\textsl{Connessione Fisica}& \\
+    \textbf{Livello} & \multicolumn{2}{|c|}{\textbf{Nome}} \\
+    \hline
+    \hline
+    Livello 7&\textit{Application}  &\textsl{Applicazione}\\ 
+    Livello 6&\textit{Presentation} &\textsl{Presentazione} \\ 
+    Livello 5&\textit{Session}      &\textsl{Sessione} \\ 
+    Livello 4&\textit{Transport}    &\textsl{Trasporto} \\ 
+    Livello 3&\textit{Network}      &\textsl{Rete}\\ 
+    Livello 2&\textit{DataLink}     &\textsl{Collegamento Dati} \\
+    Livello 1&\textit{Connection}   &\textsl{Connessione Fisica} \\
     \hline
 \end{tabular}
 \caption{I sette livelli del protocollo ISO/OSI.}
 \label{tab:net_osilayers}
 \end{table}
 
-Il modello ISO/OSI è stato sviluppato corrispondentemente alla definizione
+Il modello ISO/OSI è stato sviluppato in corrispondenza alla definizione
 della serie di protocolli X.25 per la commutazione di pacchetto. Ma nonostante
 il lavoro dettagliato di standardizzazione il modello si è rivelato
 sostanzialmente troppo complesso e poco flessibile rispetto a quello,
@@ -112,16 +124,18 @@ della Difesa Americano.
 \label{sec:net_tcpip_overview}
 
 Così come ISO/OSI anche TCP/IP è stato strutturato in livelli (riassunti in
-\ntab); un confronto fra i due è riportato in \curfig\ dove viene evidenziata
-anche la corrispondenza fra i rispettivi livelli (che comunque è
-approssimativa) e su come essi vanno ad inserirsi all'interno del sistema
-operativo rispetto alla divisione fra user space e kernel space spiegata in
-\secref{sec:intro_unix_struct}.
+\tabref{tab:net_layers}); un confronto fra i due è riportato in
+\figref{fig:net_osi_tcpip_comp} dove viene evidenziata anche la corrispondenza
+fra i rispettivi livelli (che comunque è approssimativa) e su come essi vanno
+ad inserirsi all'interno del sistema operativo rispetto alla divisione fra
+user space e kernel space spiegata in \secref{sec:intro_unix_struct}.
 
 \begin{table}[htb]
   \centering
-  \begin{tabular}{l c c l} 
-    \textbf{Livello} & \multicolumn{2}{c}{\textbf{Nome}} & \textbf{Esempi} \\
+  \begin{tabular}{|l|c|c|l|} 
+    \hline
+    \textbf{Livello} & \multicolumn{2}{|c|}{\textbf{Nome}} & \textbf{Esempi} \\
+    \hline
     \hline
     Livello 1&\textit{Application} &\textsl{Applicazione}& 
     Telnet, FTP, etc. \\ 
@@ -161,8 +175,8 @@ compongono, il TCP \textit{Trasmission Control Protocol} e l'IP
 
 
 La comunicazione fra due stazioni avviene secondo le modalità illustrate in
-\nfig, dove si è riportato il flusso dei dati reali e i protocolli usati per
-lo scambio di informazione su ciascuno livello.
+\figref{fig:net_tcpip_data_flux}, dove si è riportato il flusso dei dati reali
+e i protocolli usati per lo scambio di informazione su ciascuno livello.
 \begin{figure}[!htb]
   \centering
   \includegraphics[width=10cm]{img/tcp_data_flux}  
@@ -171,28 +185,28 @@ lo scambio di informazione su ciascuno livello.
   \label{fig:net_tcpip_data_flux}
 \end{figure}
 
-La struttura della comuniczione pertanto si può riassumere nei seguenti passi:
+La struttura della comunicazione pertanto si può riassumere nei seguenti passi:
 \begin{itemize}
 \item Le singole applicazioni si scambieranno i dati secondo un loro formato
   specifico, implementando un protocollo di applicazione (esempi possono
   essere HTTP, POP, telnet, SMTP, etc).
 \item Questi dati vengono inviati al livello di trasporto usando
-  un'interfaccia opportuna (i \textit{socket}, che esamineremo in dettaglio in
-  seguito). Qui verranno spezzati in pacchetti di dimensione opportuna e
-  incapsulati nel protocollo di trasporto, aggiungendo ad ogni pacchetto le
-  informazioni necessarie per la sua gestione. Questo processo viene
-  svolto direttamente nel kernel ad esempio dallo stack TCP nel caso il
+  un'interfaccia opportuna (i \textit{socket}\index{socket}, che esamineremo
+  in dettaglio in seguito). Qui verranno spezzati in pacchetti di dimensione
+  opportuna e incapsulati nel protocollo di trasporto, aggiungendo ad ogni
+  pacchetto le informazioni necessarie per la sua gestione. Questo processo
+  viene svolto direttamente nel kernel ad esempio dallo stack TCP nel caso il
   protocollo di trasporto sia questo.
 \item Una volta composto il pacchetto nel formato adatto al protocollo di
-  trasporto usato questo sarà passato al successivo livello, quello del
-  collegamento che si occupa di inserire le opportune informazioni per poter
-  effettuare l'instradamento nella rete ed il recapito alla destinazione
-  finale. In genere questo è il livello di IP (Internet Protocol), a cui
-  vengono inseriti i numeri IP che identificano i computer su internet.
+  trasporto usato questo sarà passato al successivo livello, quello di rete,
+  che si occupa di inserire le opportune informazioni per poter effettuare
+  l'instradamento nella rete ed il recapito alla destinazione finale. In
+  genere questo è il livello di IP (Internet Protocol), a cui vengono inseriti
+  i numeri IP che identificano i computer su internet.
 \item L'ultimo passo è il trasferimento del pacchetto al driver della
   interfaccia di trasmissione che si incarica di incapsularlo nel relativo
   protocollo di trasmissione fisica usato dall'hardware usato per la
-  comunicazione (ad esempio ethernet per una scheda di rete).
+  comunicazione (ad esempio Ethernet per una scheda di rete).
 \end{itemize}
 
 
@@ -223,11 +237,11 @@ interconnessioni.
 La caratteristica essenziale che rende tutto ciò possibile è la strutturazione
 a livelli tramite l'incapsulamento. Ogni pacchetto di dati viene incapsulato
 nel formato del livello successivo, fino al livello della connessione fisica.
-In questo modo il pacchetto ricevuto ad un livello $n$ dalla stazione di
-destinazione è esattamente lo stesso spedito dal livello $n$ dalla sorgente.
-Questo rende facile il progettare il software facendo riferimento unicamente a
-quanto necessario ad un singolo livello, con la confidenza che questo poi sarà
-trattato uniformemente da tutti i nodi della rete.
+In questo modo il pacchetto ricevuto ad un livello \textit{n} dalla stazione
+di destinazione è esattamente lo stesso spedito dal livello \textit{n} dalla
+sorgente.  Questo rende facile il progettare il software facendo riferimento
+unicamente a quanto necessario ad un singolo livello, con la confidenza che
+questo poi sarà trattato uniformemente da tutti i nodi della rete.
 
 
 \section{Il protocollo TCP/IP}
@@ -238,21 +252,21 @@ che operano su 4 livelli diversi. Per gli interessi della programmazione di
 rete però sono importanti principalmente i due livelli centrali, e soprattutto
 quello di trasporto. 
 
-La principale interfaccia di programmazione di rete, quella dei socket, è
-infatti un'interfaccia nei confronti di quest'ultimo. Questo avviene perché al
-di sopra del livello di trasporto i programmi hanno a che fare solo con
-dettagli specifici delle applicazioni, mentre al di sotto vengono curati tutti
-i dettagli relativi alla comunicazione. È pertanto naturale definire una API
-su questo confine tanto più che è proprio li (come evidenziato in \pfig) che
-nei sistemi unix (e non solo) viene inserita la divisione fra kernel space e
-user space.
+La principale interfaccia di programmazione di rete, quella dei
+socket\index{socket}, è infatti un'interfaccia nei confronti di quest'ultimo.
+Questo avviene perché al di sopra del livello di trasporto i programmi hanno a
+che fare solo con dettagli specifici delle applicazioni, mentre al di sotto
+vengono curati tutti i dettagli relativi alla comunicazione. È pertanto
+naturale definire una API su questo confine tanto più che è proprio li (come
+evidenziato in \figref{fig:net_osi_tcpip_comp}) che nei sistemi Unix (e non
+solo) viene inserita la divisione fra kernel space e user space.
 
-In realtà in un sistema unix è possibile accedere anche agli altri livelli
+In realtà in un sistema Unix è possibile accedere anche agli altri livelli
 inferiori (e non solo a quello di trasporto) con opportune interfacce (la cosa
-è indicata in \pfig\ lasciando uno spazio fra UDP e TCP), ma queste vengono
-usate solo quando si vogliono fare applicazioni di sistema per il controllo
-della rete a basso livello, un uso quindi molto specialistico, e che non
-rientra in quanto trattato qui.
+è indicata in \figref{fig:net_osi_tcpip_comp} lasciando uno spazio fra UDP e
+TCP), ma queste vengono usate solo quando si vogliono fare applicazioni di
+sistema per il controllo della rete a basso livello, un uso quindi molto
+specialistico, e che non rientra in quanto trattato qui.
 
 In questa sezione daremo una breve descrizione dei vari protocolli di TCP/IP,
 concentrandoci per le ragioni esposte sul livello di trasporto. All'interno di
@@ -261,15 +275,16 @@ nella maggior parte delle applicazioni.
 
 
 \subsection{Il quadro generale}
+\label{sec:net_tcpip_general}
 
 Benché si parli di TCP/IP questa famiglia di protocolli è composta anche da
-altri membri. In \nfig\ si è riportato uno schema che mostra un panorama sui
-vari protocolli della famiglia, e delle loro relazioni reciproche e con
-alcune dalle principali applicazioni che li usano.
+altri membri. In \figref{fig:net_tcpip_overview} si è riportato uno schema che
+mostra un panorama sui vari protocolli della famiglia, e delle loro relazioni
+reciproche e con alcune dalle principali applicazioni che li usano.
 
 \begin{figure}[!htbp]
   \centering
-  \includegraphics[width=10cm]{img/tcpip_overview}  
+  \includegraphics[width=15cm]{img/tcpip_overview}  
   \caption{Panoramica sui vari protocolli che compongono la suite TCP/IP.}
   \label{fig:net_tcpip_overview}
 \end{figure}
@@ -286,16 +301,17 @@ I vari protocolli mostrati in figura sono i seguenti:
   lo stesso servizio di trasporto di IPv4 per i pacchetti TCP, UDP e ICPMv6.
 \item \textsl{TCP} \textit{Trasmission Control Protocol}. È un protocollo
   orientato alla connessione che provvede un trasporto affidabile e
-  bidirezionale di un flusso di dati. I socket TCP sono esempi di
-  \textit{stream socket}. Il protocollo ha cura di tutti gli aspetti del
-  trasporto, come l'acknoweledgment, i timeout, la ritrasmissione, etc. È 
+  bidirezionale di un flusso di dati. I socket\index{socket} TCP sono esempi
+  di \textit{stream socket}. Il protocollo ha cura di tutti gli aspetti del
+  trasporto, come l'acknoweledgment, i timeout, la ritrasmissione, etc. È
   usato dalla maggior parte delle applicazioni. Può essere usato sia con IPv4
   che con IPv6.
 \item \textsl{UDP} \textit{User Datagram Protocol}. È un protocollo senza
-  connessione a pacchetti. I socket UDP sono esempi di \textit{datagram
-    socket}. Contrariamente al TCP in protocollo non è affidabile e non c'è
-  garanzia che i pacchetti raggiungano la loro destinazione, né sull'eventuale
-  ordine di arrivo. Può essere usato sia con IPv4 che con IPv6.
+  connessione a pacchetti. I socket\index{socket} UDP sono esempi di
+  \textit{datagram socket}. Contrariamente al TCP in protocollo non è
+  affidabile e non c'è garanzia che i pacchetti raggiungano la loro
+  destinazione, né sull'eventuale ordine di arrivo. Può essere usato sia con
+  IPv4 che con IPv6.
 \item \textsl{ICMP} \textit{Internet Control Message Protocol}. Gestisce gli
   errori e trasporta l'informazione di controllo fra stazioni remote e
   instradatori (\textit{host} e \textit{router}). I messaggi sono normalmente
@@ -308,7 +324,7 @@ I vari protocolli mostrati in figura sono i seguenti:
   \secref{sec:xxx_multicast}), che è opzionale in IPv4.
 \item \textsl{ARP} \textit{Address Resolution Protocol}. È il protocollo che
   mappa un indirizzo IP in un indirizzo hardware (come un indirizzo
-  internet). È usato in reti di tipo broadcast come ethernet, token ring o
+  internet). È usato in reti di tipo broadcast come Ethernet, Token Ring o
   FDDI ma non serve in connessioni punto-punto.
 \item \textsl{RARP} \textit{Reverse Address Resolution Protocol}. È il
   protocollo che mappa un indirizzo hardware in un indirizzo IP. Viene usato a
@@ -367,10 +383,10 @@ grandi linee nei seguenti punti:
   nodi indirizzabili molto maggiore e una autoconfigurazione degli indirizzi
 \item l'introduzione un nuovo tipo di indirizzamento, l'\textit{anycast} che
   si aggiunge 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 all'ampliamento degli indirizzi
+\item la semplificazione del formato dell'intestazione (\textit{header}) dei
+  pacchetti, 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 all'ampliamento degli 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
@@ -385,19 +401,19 @@ Maggiori dettagli riguardo a caratteristiche, notazioni e funzionamento del
 protocollo IP sono forniti nell'appendice \capref{cha:ip_protocol}.
 
  
-\subsection{UDP: User Datagram Protocol)}
+\subsection{User Datagram Protocol (UDP)}
 \label{sec:net_udp}
 
 UDP è un protocollo di trasporto molto semplice, la sua descrizione completa è
 contenuta dell'RFC~768, ma in sostanza esso è una semplice interfaccia a IP
 dal livello di trasporto. Quando un'applicazione usa UDP essa scrive un
 pacchetto di dati (il cosiddetto \textit{datagram} che da il nome al
-protocollo) su un socket, al pacchetto viene aggiunto un header molto semplice
-(per una descrizione più accurata vedi \secref{sec:xxx_udp}), e poi viene
-passato al livello superiore (IPv4 o IPv6 che sia) che lo spedisce verso la
-destinazione.  Dato che né IPv4 né IPv6 garantiscono l'affidabilità niente
-assicura che il pacchetto arrivi a destinazione, né che più pacchetti arrivino
-nello stesso ordine in cui sono stati spediti.
+protocollo) su un socket\index{socket}, al pacchetto viene aggiunto un header
+molto semplice (per una descrizione più accurata vedi \secref{sec:xxx_udp}), e
+poi viene passato al livello superiore (IPv4 o IPv6 che sia) che lo spedisce
+verso la destinazione.  Dato che né IPv4 né IPv6 garantiscono l'affidabilità
+niente assicura che il pacchetto arrivi a destinazione, né che più pacchetti
+arrivino nello stesso ordine in cui sono stati spediti.
 
 Pertanto il problema principale che si affronta quando si usa UDP è la
 mancanza di affidabilità, se si vuole essere sicuri che i pacchetti arrivino a
@@ -418,11 +434,11 @@ viene anche essa trasmessa all'applicazione all'atto del ricevimento.
 Infine UDP è un protocollo che opera senza connessione
 (\textit{connectionless}) in quanto non è necessario stabilire nessun tipo di
 relazione tra origine e destinazione dei pacchetti. Si hanno così situazioni
-in cui un client può scrivere su uno stesso socket pacchetti destinati a
-server diversi, o un server ricevere su un socket pacchetti provenienti da
-client diversi.  Il modo più semplice di immaginarsi il funzionamento di UDP è
-quello della radio, in cui si può ``trasmettere a'' e ``ricevere da'' più
-stazioni usando la stessa frequenza.
+in cui un client può scrivere su uno stesso socket\index{socket} pacchetti
+destinati a server diversi, o un server ricevere su un socket\index{socket}
+pacchetti provenienti da client diversi.  Il modo più semplice di immaginarsi
+il funzionamento di UDP è quello della radio, in cui si può ``trasmettere a''
+e ``ricevere da'' più stazioni usando la stessa frequenza.
 
 Nonostante gli evidenti svantaggi comportati dall'inaffidabilità UDP ha il
 grande pregio della velocità che in certi casi è essenziale; inoltre si presta
@@ -430,7 +446,7 @@ bene per le applicazioni in cui la connessione non 
 costituirebbe solo un peso di prestazioni mentre una perdita di pacchetti può
 essere tollerata, ad esempio quelle che usano il multicasting.
 
-\subsection{TCP: Transport Control Protocol)}
+\subsection{Transport Control Protocol (TCP)}
 \label{sec:net_tcp}
 
 Il TCP è un protocollo molto complesso, definito nell'RFC~739 e completamente
@@ -463,9 +479,9 @@ cadere facilmente in timeout.
 
 Inoltre TCP è in grado di preservare l'ordine dei dati assegnando un numero di
 sequenza ad ogni byte che trasmette. Ad esempio se un'applicazione scrive 3000
-bytes su un socket TCP, questi potranno essere spezzati dal protocollo in due
-segmenti (le unità di dati passate da TCP a IP vengono chiamate
-\textit{segment}) di 1500 bytes, di cui il primo conterrà il numero di
+byte su un socket\index{socket} TCP, questi potranno essere spezzati dal
+protocollo in due segmenti (le unità di dati passate da TCP a IP vengono
+chiamate \textit{segment}) di 1500 byte, di cui il primo conterrà il numero di
 sequenza $1-1500$ e il secondo il numero $1501-3000$. In questo modo anche se
 i segmenti arrivano a destinazione in un ordine diverso, o se alcuni arrivano
 più volte a causa di ritrasmissioni dovute alla perdita dei ricevuto,
@@ -479,7 +495,7 @@ cosicch
 essere ricevuti. 
 
 Questa finestra cambia dinamicamente diminuendo con la ricezione dei dati dal
-socket ed aumentando con la lettura di quest'ultimo da parte
+socket\index{socket} ed aumentando con la lettura di quest'ultimo da parte
 dell'applicazione, se diventa nulla il buffer di ricezione è pieno e non
 verranno accettati altri dati.  Si noti che UDP non provvede niente di tutto
 ciò per cui nulla impedisce che vengano trasmessi pacchetti ad un rate che il
@@ -506,27 +522,27 @@ delle applicazioni.
 Un elenco di questi limiti è il seguente, insieme ad un breve accenno alle
 loro origini ed alle eventuali implicazioni che possono avere:
 \begin{itemize}
-\item La dimensione massima di un pacchetti IP è di 65535 bytes, compreso
+\item La dimensione massima di un pacchetti IP è di 65535 byte, compreso
   l'header. Questo è dovuto al fatto che la dimensione è indicata da un campo
   apposito nell'header di IP che è lungo 16 bit (vedi
-  \tabref{tab:IP_ipv4head}).
-\item La dimensione massima di un pacchetto normale di IPv6 è di 65575 bytes,
+  \figref{fig:IP_ipv4_head}).
+\item La dimensione massima di un pacchetto normale di IPv6 è di 65575 byte,
   il campo apposito nell'header infatti è sempre a 16 bit, ma la dimensione
   dell'header è fissa e di 40 byte e non è compresa nel valore indicato dal
   suddetto campo. Inoltre IPv6 ha la possibilità di estendere la dimensione di
   un pacchetto usando la \textit{jumbo payload option}.
-\item Molte reti fisiche hanno un MTU (\textit{maximum tranfer unit}) che
+\item Molte reti fisiche hanno un MTU (\textit{maximum transfer unit}) che
   dipende dal protocollo specifico usato al livello di link. Il più comune è
-  quello dell'ethernet che è pari a 1500 bytes, una serie di valori possibili
-  sono riportati in \ntab.
+  quello dell'Ethernet che è pari a 1500 byte, una serie di valori possibili
+  sono riportati in \tabref{tab:net_mtu_values}.
 \end{itemize}
 
 Quando un pacchetto IP viene inviato su una interfaccia di rete e le sue
 dimensioni eccedono la MTU viene eseguita la cosiddetta
 \textit{frammentazione}, i pacchetti cioè vengono spezzati (sia da IPv4 che da
 IPv6, anche se i pacchetti frammentati sono gestiti con modalità
-diverse\footnote{il primo usa un flag nell'header, il secondo una opportuna
-  opzione, si veda \secref{cha:ip_protocol}}), in blocchi più piccoli che
+diverse,\footnote{il primo usa un flag nell'header, il secondo una opportuna
+  opzione, si veda \secref{cha:ip_protocol}.}) in blocchi più piccoli che
 possono essere trasmessi attraverso l'interfaccia.
 
 \begin{table}[!htb]
@@ -544,7 +560,7 @@ possono essere trasmessi attraverso l'interfaccia.
     X.25 & 576 \\
     \hline
   \end{tabular}
-  \caption{Valori della MTU (\textit{maximum tranfer unit}) per una serie di
+  \caption{Valori della MTU (\textit{maximum transfer unit}) per una serie di
     reti diverse.}
   \label{tab:net_mtu_values}
 \end{table}
@@ -567,7 +583,7 @@ Nell'header di IPv4 
 pacchetto non deve essere frammentato; un router che riceva un pacchetto le
 cui dimensioni eccedano quelle dell'MTU della rete di destinazione genererà un
 messaggio di errore ICMPv4 di tipo \textit{destination unreachable,
-  fragentation needed but DF bit set}.
+  fragmentation needed but DF bit set}.
 
 Dato che i router IPv6 non possono effettuare la frammentazione la ricezione
 di un pacchetto di dimensione eccessiva per la ritrasmissione genererà sempre
@@ -591,8 +607,13 @@ Infine TCP definisce una \textit{maximum segment size} MSS che annuncia
 all'altro capo la dimensione massima del segmento di dati.
 
 
-\subsection{Il passaggio dei dati in TCP}
-\label{sec:net_tcp_pass}
+%\subsection{Il passaggio dei dati in TCP}
+%\label{sec:net_tcp_pass}
+
+%\subsection{Il passaggio dei dati in UDP}
+%\label{sec:net_udp_pass}
 
-\subsection{Il passaggio dei dati in UDP}
-\label{sec:net_udp_pass}
+%%% Local Variables: 
+%%% mode: latex
+%%% TeX-master: "gapil"
+%%% End: