X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=network.tex;h=fd9f734f9120af57afce588b4941ab1de9aa271f;hp=fc54b79aadf6ef4b4a1159387c9ec67da4ae315f;hb=efd164169524125422cf9bb80ff70a0b037886a0;hpb=1bd392c59d18c3f392a5c44e7f4835ea3a1f053d diff --git a/network.tex b/network.tex index fc54b79..fd9f734 100644 --- a/network.tex +++ b/network.tex @@ -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}