X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=tcpsock.tex;h=2318fb017cfb0a20107ec3947a534efcbee2b032;hp=eba896e524bb9979bfc5dd069019a59b06205532;hb=af73295172df06a6a91edc4c206b6e5633c566f6;hpb=c48d3a056c974898ca18c27a918f2296c18e2c6e diff --git a/tcpsock.tex b/tcpsock.tex index eba896e..2318fb0 100644 --- a/tcpsock.tex +++ b/tcpsock.tex @@ -8,7 +8,7 @@ %% license is included in the section entitled "GNU Free Documentation %% License". %% -\chapter{Socket TCP} +\chapter{Socket TCP elementari} \label{cha:TCP_socket} In questo capitolo iniziamo ad approfondire la conoscenza dei socket TCP, @@ -221,7 +221,7 @@ chiusura attiva. Nella sequenza indicata i dati verrebbero persi, dato che si è chiuso il socket dal lato che esegue la chiusura attiva; esistono tuttavia situazioni in cui si vuole poter sfruttare questa possibilità, usando una procedura che è chiamata \textit{half-close}; torneremo su questo aspetto e su -come utilizzarlo in \secref{xxx_shutdown}, quando parleremo della funzione +come utilizzarlo in \secref{sec:TCP_shutdown}, quando parleremo della funzione \func{shutdown}. La emissione del FIN avviene quando il socket viene chiuso, questo però non @@ -339,8 +339,8 @@ La MSL sulla rete; questo tempo è limitato perché ogni pacchetto IP può essere ritrasmesso dai router un numero massimo di volte (detto \textit{hop limit}). Il numero di ritrasmissioni consentito è indicato dal campo TTL dell'header di -IP (per maggiori dettagli vedi \secref{sec:IP_xxx}), e viene decrementato ad -ogni passaggio da un router; quando si annulla il pacchetto viene scartato. +IP (per maggiori dettagli vedi \secref{sec:ip_protocol}), e viene decrementato +ad ogni passaggio da un router; quando si annulla il pacchetto viene scartato. Siccome il numero è ad 8 bit il numero massimo di ``\textsl{salti}'' è di 255, pertanto anche se il TTL (da \textit{time to live}) non è propriamente un limite sul tempo di vita, si stima che un pacchetto IP non possa restare nella @@ -1034,8 +1034,8 @@ funzione. Se non ci sono connessioni pendenti da accettare la funzione mette in attesa il processo\footnote{a meno che non si sia impostato il socket per essere non bloccante (vedi \secref{sec:file_noblocking}), nel qual caso ritorna con l'errore \errcode{EAGAIN}. Torneremo su questa modalità di - operazione in \secref{sec:xxx_sock_noblock}.} fintanto che non ne arriva -una. + operazione in \secref{sec:TCP_sock_multiplexing}.} fintanto che non ne +arriva una. La funzione può essere usata solo con socket che supportino la connessione (cioè di tipo \const{SOCK\_STREAM}, \const{SOCK\_SEQPACKET} o @@ -1202,7 +1202,7 @@ si aspetta in una qualunque applicazione client/server. Per attivare immediatamente l'emissione del FIN e la sequenza di chiusura descritta in \secref{sec:TCP_conn_term}, si può invece usare la funzione \func{shutdown} su cui torneremo in seguito (vedi -\secref{sec:TCP_xxx_shutdown}). +\secref{sec:TCP_shutdown}). @@ -2384,7 +2384,7 @@ definitiva della connessione anche nel client, dove non comparir nell'output di \cmd{netstat}. Come abbiamo accennato in \secref{sec:TCP_conn_term} e come vedremo più avanti -in \secref{sec:TCP_xxx_shutdown} la chiusura di un solo capo di un socket è +in \secref{sec:TCP_shutdown} la chiusura di un solo capo di un socket è una operazione lecita, per cui la nostra scrittura avrà comunque successo (come si può constatare lanciando usando \cmd{strace}\footnote{il comando \cmd{strace} è un comando di debug molto utile che prende come parametro un @@ -2430,7 +2430,7 @@ la nuova versione della funzione in \figref{fig:TCP_ClientEcho_second}. \end{minipage} \normalsize \caption{La sezione nel codice della seconda versione della funzione - \func{CleintEcho} usata dal client per il servizio \textit{echo} + \func{ClientEcho} usata dal client per il servizio \textit{echo} modificata per tener conto degli eventuali errori.} \label{fig:TCP_ClientEcho_second} \end{figure} @@ -2461,7 +2461,7 @@ avanti, ed fare con la necessità di lavorare con più descrittori, nel qual caso diventa si pone la questione di come fare a non restare bloccati su un socket quando altri potrebbero essere liberi. Vedremo come affrontare questa problematica in -\secref{sec:TCP_xxx_advanced}. +\secref{sec:TCP_sock_multiplexing}. \subsection{Altri scenari di terminazione della connessione} @@ -2657,7 +2657,8 @@ riportando appunto come errore \errcode{ECONNRESET}. Occorre precisare che se si vuole che il client sia in grado di accorgersi del crollo del server anche quando non sta effettuando uno scambio di dati, è possibile usare una impostazione speciale del socket (ci torneremo in -\secref{sec:TCP_xxx_sockopt}) che provvede all'esecuzione di questo controllo. +\secref{sec:TCP_sock_options}) che provvede all'esecuzione di questo +controllo.