%% tcpprot.tex
%%
%% Copyright (C) 2002-2014 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",
%% 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{Il livello di trasporto}
\label{cha:transport_layer}

In questa appendice tratteremo i vari protocolli relativi al livello di
trasporto.\footnote{al solito per la definizione dei livelli si faccia
  riferimento alle spiegazioni fornite in sez.~\ref{sec:net_protocols}.} In
particolare gran parte del capitolo sarà dedicato al più importante di questi,
il TCP, che è pure il più complesso ed utilizzato su internet.


\section{Il protocollo TCP}
\label{sec:tcp_protocol}

In questa sezione prenderemo in esame i vari aspetti del protocollo TCP, il
protocollo più comunemente usato dalle applicazioni di rete.



\subsection{Gli stati del TCP}
\label{sec:TCP_states}

In sez.~\ref{sec:TCP_connession} abbiamo descritto in dettaglio le modalità con
cui il protocollo TCP avvia e conclude una connessione, ed abbiamo accennato
alla presenza dei vari stati del protocollo. In generale infatti il
funzionamento del protocollo segue una serie di regole, che possono essere
riassunte nel comportamento di una macchina a stati, il cui diagramma di
transizione è riportato in fig.~\ref{fig:TCP_state_diag}.

\begin{figure}[!htb]
  \centering \includegraphics[width=10cm]{img/tcp_state_diagram}  
  \caption{Il diagramma degli stati del TCP.}
  \label{fig:TCP_state_diag}
\end{figure}

Il protocollo prevede l'esistenza di 11 diversi stati per una connessione ed
un insieme di regole per le transizioni da uno stato all'altro basate sullo
stato corrente, sull'operazione effettuata dall'applicazione o sul tipo di
segmento ricevuto; i nomi degli stati mostrati in
fig.~\ref{fig:TCP_state_diag} sono gli stessi che vengono riportati del
comando \cmd{netstat} nel campo \textit{State}.


\begin{figure}[!htb]
  \centering \includegraphics[width=10cm]{img/tcp_head}  
  \caption{L'intestazione del protocollo TCP.}
  \label{fig:TCP_header}
\end{figure}

\itindbeg{Maximum~Segment~Size~(MSS)}
% TODO trattare la MSS
\itindend{Maximum~Segment~Size~(MSS)}

\itindbeg{advertised~window}
% TODO trattare la advertised window
\itindend{advertised~window}



\section{Il protocollo UDP}
\label{sec:udp_protocol}

In questa sezione prenderemo in esame i vari aspetti del protocollo UDP, che
dopo il TCP è il protocollo più usato dalle applicazioni di rete. 


\begin{figure}[!htb]
  \centering \includegraphics[width=10cm]{img/udp_head}  
  \caption{L'intestazione del protocollo UDP.}
  \label{fig:UDP_header}
\end{figure}



% LocalWords:  sez TCP fig netstat UDP Segment Size advertised window


%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "gapil"
%%% End: 
