3ac534820006db9fef38c576874a318f6ae2f162
[gapil.git] / tcpsockadv.tex
1 %% tcpsockadv.tex
2 %%
3 %% Copyright (C) 2003 Simone Piccardi.  Permission is granted to
4 %% copy, distribute and/or modify this document under the terms of the GNU Free
5 %% Documentation License, Version 1.1 or any later version published by the
6 %% Free Software Foundation; with the Invariant Sections being "Prefazione",
7 %% with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
8 %% license is included in the section entitled "GNU Free Documentation
9 %% License".
10 %%
11 \chapter{Socket TCP avanzati}
12 \label{cha:TCP_advanced}
13
14 Esamineremo in questo capitolo le funzionalità più evolute della gestione dei
15 socket TCP. 
16
17
18
19 \section{Socket multiplexing}
20 \label{sec:TCP_sock_mutiplexing}
21
22 Affronteremo in questa sezione l'utilizzo dei socket 
23
24
25
26 \section{Le opzioni dei socket}
27 \label{sec:TCP_sock_options}
28
29 Dato che la maggior parte delle opzioni dei socket sono relative ai socket
30 TCP, ed hanno poi significato analogo quando usate con altri socket,
31 tratteremo qui l'argomento in generale.
32
33
34
35 \section{I dati \textit{out-of-band}}
36 \label{sec:TCP_outofband}
37
38 Una caratteristica speciale dei socket TCP è quella della presenza dei
39 cosiddetti dati \textit{out-of-band}
40
41
42
43 \subsection{La funzione \func{shutdown}}
44 \label{sec:TCP_shutdown}
45
46 Come spiegato in \secref{sec:TCP_conn_term} il procedimento di chiusura di un
47 socket TCP prevede che da entrambe le parti venga emesso un segmento FIN. È
48 pertanto del tutto normale dal punto di vista del protocollo che uno dei due
49 capi chiuda la connessione, quando l'altro capo la lascia
50 aperta.\footnote{abbiamo incontrato questa situazione nei vari scenari critici
51   di \secref{sec:TCP_echo_critical}.}
52
53 È pertanto possibile avere una situazione in cui un capo della connessione non
54 avendo più nulla da scrivere, possa chiudere il socket, segnalando così
55 l'avvenuta terminazione della trasmissione (l'altro capo riceverà infatti un
56 end-of-file in lettura) mentre dall'altra parte si potrà proseguire la
57 trasmissione dei dati scrivendo sul socket che da quel lato è ancora aperto.
58 Questa è quella situazione in cui si dice che il socket è \textit{half
59   closed}.
60
61 Il problema che si pone è che se la chiusura del socket è effettuata con la
62 funzione \func{close}, come spiegato in \secref{sec:TCP_func_close}, si perde
63 ogni possibilità di poter rileggere quanto l'altro capo può continuare a
64 scrivere. Per poter permettere allora 
65
66
67
68
69 %%% Local Variables: 
70 %%% mode: latex
71 %%% TeX-master: "gapil"
72 %%% End: