1 \chapter{Socket TCP elementari}
2 \label{cha:elem_TCP_sock}
4 In questo capitolo inizieremo ad approndire la conoscenza dei socket TCP,
5 tratteremo qui dunque il funzionamento delle varie funzioni che si sono usate
6 nei due esempi elementari forniti in precedenza (vedi \ref{sec:net_cli_sample}
7 e \ref{sec:net_cli_server}), previa una descrizione delle principali
8 caratteristiche del funzionamento di una connessione TCP.
10 La seconda parte del capitolo sarà poi dedicata ad una riscrittura
11 dell'esempio precedente per trasformarlo in una prima applicazione
12 client/server semplice, ma completa, che implementi il servizio standard
13 \texttt{time} su TCP (vedremo in seguito un esempio anche con UDP).
16 \section{Il funzionamento di una connessione TCP}
17 \label{sec:TCPel_connession}
19 Prima di entrare nei dettagli di come si usano le varie funzioni dei socket
20 che operano con TCP, è fondamentale capire alcune basi del funzionamento del
21 protocollo, ed in particolare su come si stabilisce una connessione, come la
22 si conclude e qual'è il significato dei vari stati del protocollo ad essa
23 connessi; in particolare questo ci permetterà di capire ed usare con profitto
24 il programma \texttt{netstat}, che è in grado di mostrare lo stato in cui si
25 trova ciascuna connessione attiva.
27 \subsection{Creazione: il \textit{three way handshake}}
28 \label{sec:TCPel_conn_cre}
32 \subsection{Il significato delle opzioni del TCP}
33 \label{sec:TCPel_TCP_opt}
35 \subsection{La terminazione della connessione}
36 \label{sec:TCPel_conn_term}
38 \subsection{Il diagramma delle transizioni di stato}
39 \label{sec:TCPel_trans_dia}
41 \subsection{Lo stato \texttt{TIME\_WAIT}}
42 \label{sec:TCPel_time_wait}
45 \section{I numeri di porta}
46 \label{sec:TCPel_ports}
48 \section{Le funzioni dei socket TCP}
49 \label{sec:TCPel_functions}
51 \subsection{La funzione \texttt{connect}}
52 \label{sec:TCPel_func_connect}
54 \subsection{La funzione \texttt{bind}}
55 \label{sec:TCPel_func_bind}
57 \subsection{La funzione \texttt{listen}}
58 \label{sec:TCPel_func_listen}
60 \subsection{La funzione \texttt{connect}}
61 \label{sec:TCPel_func_connect}
63 \subsection{La funzione \texttt{accept}}
64 \label{sec:TCPel_func_accept}