\chapter{Socket TCP elementari}
\label{cha:elem_TCP_sock}

In questo capitolo inizieremo ad approndire la conoscenza dei socket TCP,
tratteremo qui dunque il funzionamento delle varie funzioni che si sono usate
nei due esempi elementari forniti in precedenza (vedi \ref{sec:net_cli_sample}
e \ref{sec:net_cli_server}), previa una descrizione delle principali
caratteristiche del funzionamento di una connessione TCP.

La seconda parte del capitolo sarà poi dedicata ad una riscrittura
dell'esempio precedente per trasformarlo in una prima applicazione
client/server semplice, ma completa, che implementi il servizio standard
\texttt{time} su TCP (vedremo in seguito un esempio anche con UDP).


\section{Il funzionamento di una connessione TCP}
\label{sec:TCPel_connession}

Prima di entrare nei dettagli di come si usano le varie funzioni dei socket
che operano con TCP, è fondamentale capire alcune basi del funzionamento del
protocollo, ed in particolare su come si stabilisce una connessione, come la
si conclude e qual'è il significato dei vari stati del protocollo ad essa
connessi; in particolare questo ci permetterà di capire ed usare con profitto
il programma \texttt{netstat}, che è in grado di mostrare lo stato in cui si
trova ciascuna connessione attiva.

\subsection{Creazione: il \textit{three way handshake}}
\label{sec:TCPel_conn_cre}



\subsection{Il significato delle opzioni del TCP}
\label{sec:TCPel_TCP_opt}

\subsection{La terminazione della connessione}
\label{sec:TCPel_conn_term}

\subsection{Il diagramma delle transizioni di stato}
\label{sec:TCPel_trans_dia}

\subsection{Lo stato \texttt{TIME\_WAIT}}
\label{sec:TCPel_time_wait}


\section{I numeri di porta}
\label{sec:TCPel_ports}

\section{Le funzioni dei socket TCP}
\label{sec:TCPel_functions}

\subsection{La funzione \texttt{connect}}
\label{sec:TCPel_func_connect}

\subsection{La funzione \texttt{bind}}
\label{sec:TCPel_func_bind}

\subsection{La funzione \texttt{listen}}
\label{sec:TCPel_func_listen}

\subsection{La funzione \texttt{connect}}
\label{sec:TCPel_func_connect}

\subsection{La funzione \texttt{accept}}
\label{sec:TCPel_func_accept}


\subsection{Le porte}



