37745f2ac447edfed010194d17c4f748abc3c718
[gapil.git] / elemtcp.tex
1 \chapter{Socket TCP elementari}
2 \label{cha:elem_TCP_sock}
3
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.
9
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).
14
15
16 \section{Il funzionamento di una connessione TCP}
17 \label{sec:TCPel_connession}
18
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.
26
27 \subsection{Creazione: il \textit{three way handshake}}
28 \label{sec:TCPel_conn_cre}
29
30
31
32 \subsection{Il significato delle opzioni del TCP}
33 \label{sec:TCPel_TCP_opt}
34
35 \subsection{La terminazione della connessione}
36 \label{sec:TCPel_conn_term}
37
38 \subsection{Il diagramma delle transizioni di stato}
39 \label{sec:TCPel_trans_dia}
40
41 \subsection{Lo stato \texttt{TIME\_WAIT}}
42 \label{sec:TCPel_time_wait}
43
44
45 \section{I numeri di porta}
46 \label{sec:TCPel_ports}
47
48 \section{Le funzioni dei socket TCP}
49 \label{sec:TCPel_functions}
50
51 \subsection{La funzione \texttt{connect}}
52 \label{sec:TCPel_func_connect}
53
54 \subsection{La funzione \texttt{bind}}
55 \label{sec:TCPel_func_bind}
56
57 \subsection{La funzione \texttt{listen}}
58 \label{sec:TCPel_func_listen}
59
60 \subsection{La funzione \texttt{connect}}
61 \label{sec:TCPel_func_connect}
62
63 \subsection{La funzione \texttt{accept}}
64 \label{sec:TCPel_func_accept}
65
66
67 \subsection{Le porte}
68
69
70