Aggiustate le referenze e data una rilettura con qualche correzione.
[gapil.git] / network.tex
index fc54b79aadf6ef4b4a1159387c9ec67da4ae315f..fd9f734f9120af57afce588b4941ab1de9aa271f 100644 (file)
@@ -321,7 +321,7 @@ 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 la tabella in \ntab.
+livelli, secondo quanto riportato in \ntab.
 
 \begin{table}[htb]
   \centering
@@ -746,4 +746,79 @@ controllo di flusso e della gestione della sequenzialit
 effettuato per entrambe le direzioni di comunicazione.
 
 Una descrizione più accurata del protocollo è fornita in appendice
-\ref{cha:tcp_protocol}.
\ No newline at end of file
+\ref{cha:tcp_protocol}.
+
+\subsection{Limiti e dimensioni riguardanti la trasmissione dei dati}
+\label{sec:net_lim_dim}
+
+Un aspetto di cui bisogna tenere conto, e che ritornerà in seguito, è che ci
+sono una serie di limiti a cui la trasmissione dei dati attraverso i vari
+livelli del protocollo deve sottostare, limiti che è opportuno tenere presente
+perché in certi casi si possono avere delle conseguenze sul comportamento
+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
+  l'header. Questo è dovuto al fatto che la dimensione è indicata da un campo
+  apposito nell'header di IP che è lungo 16 bit (vedi
+  \ref{sec:appA_ipv4head}).
+\item La dimensione massima di un pacchetto normale di IPv6 è di 65575 bytes,
+  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 è
+  imposta dalle modalità di funzionamento dall'hardware. Il più comune è
+  quello dell'ethernet che è pari a 1500 bytes. La MTU più piccola fra due
+  stazioni viene in genere chiamata \textit{path MTU}, e al giorno d'oggi è
+  normalmente data da ethernet; si tenga conto che non è affatto detto che sia
+  la stessa in entrambe le direzioni, anche perchè l'instradamento può essere
+  diverso.
+\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} (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
+  \ref{cha:ip_protcol}}), i pacchetti cioè vengono spezzati in blocchi più
+piccoli che possono essere trasmessi attraverso l'interfaccia.
+
+Una delle differenze fra IPv4 e IPv6 é che per IPv6 la frammentazione può
+essere eseguita solo alla sorgente, questo vuol dire che i router IPv6 non
+frammentano i pacchetti che trasmettono (anche se possono frammentare i
+pacchetti che generano loro stessi), mentre i router IPv4 si. In ogni caso una
+volta frammentati i pacchetti possono essere riassemblati solo alla
+destinazione.
+
+Nell'header di IPv4 è previsto il flag \texttt{DF} che specifica che il
+pacchetto non deve essere frammentato; un router che riceva uno di questi
+pacchetti le cui dimensioni eccedono quelle dell'MTU della rete di
+destinazione genererà un messaggio di errore ICMPv4 di tipo
+\textit{destination unreachable, fragentation 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
+un messaggio di errore ICMPv6 di tipo \textit{paket too big}.
+
+Dato che il meccanismo di frammentazione e riassemblaggio comporta
+inefficienza è opportuno che la trasmissione di grosse quantità di dati sia
+gestita in maniera oculata, TCP provvede un meccanismo automatico di 
+
+In genere il flag DF di IPv4 (e il comportamento normale di IPv6) vengono
+utilizzati per il processo della \textit{path MTU discover} (vedi RFC1191 per
+IPv4 e RFC1981 per IPv6) in cui inviando delle opportune serie di pacchetti si
+trova il \textit{path MTU}; TCP usa questo meccanismo che è opzionale per
+IPv4, ma necessario (dato che i pacchetti verrebbero bloccati) per IPv6.
+
+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 UDP}
+\label{sec:net_udp_pass}