X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=network.tex;h=e66fd25e33099f9d3750591fa9a9ab5e714ff361;hp=2e322c4af486f7f513de02a941ef13870e5cc1a8;hb=6ef95fc5ee2f29b1ac30151659176cfc9991a15e;hpb=193d612d40c5f81f5559ea6e11e70f6b6e51fb39 diff --git a/network.tex b/network.tex index 2e322c4..e66fd25 100644 --- a/network.tex +++ b/network.tex @@ -1,6 +1,6 @@ %% network.tex %% -%% Copyright (C) 2000-2011 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2015 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Un preambolo", @@ -647,8 +647,8 @@ minuti. Inoltre, per tenere conto delle diverse condizioni in cui può trovarsi la linea di comunicazione, TCP comprende anche un algoritmo di calcolo dinamico del tempo di andata e ritorno dei pacchetti fra un client e un server (il -cosiddetto RTT, \itindex{Round~Trip~Time} \textit{Round Trip Time}), che lo -rende in grado di adattarsi alle condizioni della rete per non generare +cosiddetto RTT, \itindex{Round~Trip~Time~(RTT)} \textit{Round Trip Time}), che +lo rende in grado di adattarsi alle condizioni della rete per non generare inutili ritrasmissioni o cadere facilmente in timeout. Inoltre TCP è in grado di preservare l'ordine dei dati assegnando un numero di @@ -662,12 +662,14 @@ più volte a causa di ritrasmissioni dovute alla perdita degli \textit{acknowlegment}, all'arrivo sarà comunque possibile riordinare i dati e scartare i duplicati. +\itindbeg{advertised~window} + Il protocollo provvede anche un controllo di flusso (\textit{flow control}), cioè specifica sempre all'altro capo della trasmissione quanti dati può -ricevere tramite una \itindex{advertised~window} \textit{advertised window} -(letteralmente ``\textsl{finestra annunciata}''), che indica lo spazio -disponibile nel buffer di ricezione, cosicché nella trasmissione non vengano -inviati più dati di quelli che possono essere ricevuti. +ricevere tramite una \textit{advertised window} (letteralmente +``\textsl{finestra annunciata}''), che indica lo spazio disponibile nel buffer +di ricezione, cosicché nella trasmissione non vengano inviati più dati di +quelli che possono essere ricevuti. Questa finestra cambia dinamicamente diminuendo con la ricezione dei dati dal socket ed aumentando con la lettura di quest'ultimo da parte @@ -676,6 +678,8 @@ verranno accettati altri dati. Si noti che UDP non provvede niente di tutto ciò per cui nulla impedisce che vengano trasmessi pacchetti ad un ritmo che il ricevente non può sostenere. +\itindend{advertised~window} + Infine attraverso TCP la trasmissione è sempre bidirezionale (in inglese si dice che è \textit{full-duplex}). È cioè possibile sia trasmettere che ricevere allo stesso tempo, il che comporta che quanto dicevamo a proposito @@ -708,14 +712,14 @@ alle eventuali implicazioni che possono avere, è il seguente: 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 una MTU \itindex{Maximum~Transfer~Unit} +\item Molte reti fisiche hanno una MTU \itindex{Maximum~Transfer~Unit~(MTU)} (\textit{Maximum Transfer Unit}) che dipende dal protocollo specifico usato al livello di connessione fisica. Il più comune è quello di ethernet che è pari a 1500 byte, una serie di altri valori possibili sono riportati in tab.~\ref{tab:net_mtu_values}. \end{itemize} -\itindbeg{Maximum~Transfer~Unit} +\itindbeg{Maximum~Transfer~Unit~(MTU)} 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 suddivisi\footnote{questo @@ -782,15 +786,15 @@ opzionale, mentre diventa obbligatorio per IPv6. Per IPv6 infatti, non potendo i router frammentare i pacchetti, è necessario, per poter comunicare, conoscere da subito il \textit{path MTU}. -Infine TCP definisce una \itindex{Maximum~Segment~Size} \textit{Maximum - Segment Size} (da qui in avanti abbreviata in MSS) che annuncia all'altro -capo della connessione la dimensione massima dimensione del segmento di dati -che può essere ricevuto, così da evitare la frammentazione. Di norma viene -impostato alla dimensione della MTU dell'interfaccia meno la lunghezza delle -intestazioni di IP e TCP, in Linux il default, mantenuto nella costante -\const{TCP\_MSS} è 512. +Infine il TCP definisce una \itindex{Maximum~Segment~Size~(MSS)} +\textit{Maximum Segment Size} (da qui in avanti abbreviata in MSS) che +annuncia all'altro capo della connessione la dimensione massima dimensione del +segmento di dati che può essere ricevuto, così da evitare la +frammentazione. Di norma viene impostato alla dimensione della MTU +dell'interfaccia meno la lunghezza delle intestazioni di IP e TCP, in Linux il +default, mantenuto nella costante \const{TCP\_MSS} è 512. -\itindend{Maximum~Transfer~Unit} +\itindend{Maximum~Transfer~Unit~(MTU)} %%% Local Variables: