X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=tcpsockadv.tex;fp=tcpsockadv.tex;h=3ac534820006db9fef38c576874a318f6ae2f162;hp=0000000000000000000000000000000000000000;hb=c48d3a056c974898ca18c27a918f2296c18e2c6e;hpb=6c1923829690f7edc97225c27707d3924803c2d4 diff --git a/tcpsockadv.tex b/tcpsockadv.tex new file mode 100644 index 0000000..3ac5348 --- /dev/null +++ b/tcpsockadv.tex @@ -0,0 +1,72 @@ +%% tcpsockadv.tex +%% +%% Copyright (C) 2003 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 "Prefazione", +%% 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{Socket TCP avanzati} +\label{cha:TCP_advanced} + +Esamineremo in questo capitolo le funzionalità più evolute della gestione dei +socket TCP. + + + +\section{Socket multiplexing} +\label{sec:TCP_sock_mutiplexing} + +Affronteremo in questa sezione l'utilizzo dei socket + + + +\section{Le opzioni dei socket} +\label{sec:TCP_sock_options} + +Dato che la maggior parte delle opzioni dei socket sono relative ai socket +TCP, ed hanno poi significato analogo quando usate con altri socket, +tratteremo qui l'argomento in generale. + + + +\section{I dati \textit{out-of-band}} +\label{sec:TCP_outofband} + +Una caratteristica speciale dei socket TCP è quella della presenza dei +cosiddetti dati \textit{out-of-band} + + + +\subsection{La funzione \func{shutdown}} +\label{sec:TCP_shutdown} + +Come spiegato in \secref{sec:TCP_conn_term} il procedimento di chiusura di un +socket TCP prevede che da entrambe le parti venga emesso un segmento FIN. È +pertanto del tutto normale dal punto di vista del protocollo che uno dei due +capi chiuda la connessione, quando l'altro capo la lascia +aperta.\footnote{abbiamo incontrato questa situazione nei vari scenari critici + di \secref{sec:TCP_echo_critical}.} + +È pertanto possibile avere una situazione in cui un capo della connessione non +avendo più nulla da scrivere, possa chiudere il socket, segnalando così +l'avvenuta terminazione della trasmissione (l'altro capo riceverà infatti un +end-of-file in lettura) mentre dall'altra parte si potrà proseguire la +trasmissione dei dati scrivendo sul socket che da quel lato è ancora aperto. +Questa è quella situazione in cui si dice che il socket è \textit{half + closed}. + +Il problema che si pone è che se la chiusura del socket è effettuata con la +funzione \func{close}, come spiegato in \secref{sec:TCP_func_close}, si perde +ogni possibilità di poter rileggere quanto l'altro capo può continuare a +scrivere. Per poter permettere allora + + + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "gapil" +%%% End: