Ancora sulle opzioni dei socket generiche, aggiornando alcuni vecchi
[gapil.git] / tcpsock.tex
index ad5e2056685f04fe939aae1bc1db38698ac35c62..b13c16dd008674252539a5685288e362a2c80aec 100644 (file)
@@ -2581,15 +2581,15 @@ successivo, per tentare di ristabilire la connessione.
 Il risultato finale qui dipende dall'implementazione dello stack TCP, e nel
 caso di Linux anche dall'impostazione di alcuni dei parametri di sistema che
 si trovano in \file{/proc/sys/net/ipv4}, che ne controllano il comportamento:
-in questo caso in particolare da \file{tcp\_retries2}. Questo parametro
-infatti specifica il numero di volte che deve essere ritentata la
-ritrasmissione di un pacchetto nel mezzo di una connessione prima di riportare
-un errore di timeout.  Il valore preimpostato è pari a 15, il che
-comporterebbe 15 tentativi di ritrasmissione, ma nel nostro caso le cose sono
-andate diversamente, dato che le ritrasmissioni registrate da \cmd{tcpdump}
-sono solo 8; inoltre l'errore riportato all'uscita del client non è stato
-\errcode{ETIMEDOUT}, come dovrebbe essere in questo caso, ma
-\errcode{EHOSTUNREACH}.
+in questo caso in particolare da \file{tcp\_retries2} (vedi
+sez.~\ref{sec:sock_sysctl}). Questo parametro infatti specifica il numero di
+volte che deve essere ritentata la ritrasmissione di un pacchetto nel mezzo di
+una connessione prima di riportare un errore di timeout.  Il valore
+preimpostato è pari a 15, il che comporterebbe 15 tentativi di ritrasmissione,
+ma nel nostro caso le cose sono andate diversamente, dato che le
+ritrasmissioni registrate da \cmd{tcpdump} sono solo 8; inoltre l'errore
+riportato all'uscita del client non è stato \errcode{ETIMEDOUT}, come dovrebbe
+essere in questo caso, ma \errcode{EHOSTUNREACH}.
 
 Per capire l'accaduto continuiamo ad analizzare l'output di \cmd{tcpdump}:
 esso ci mostra che a un certo punto i tentativi di ritrasmissione del
@@ -2700,7 +2700,7 @@ 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
-sez.~\ref{sec:TCP_sock_options}) che provvede all'esecuzione di questo
+sez.~\ref{sec:sock_generic_options}) che provvede all'esecuzione di questo
 controllo.
 
 \section{L'uso dell'I/O multiplexing}
@@ -2748,8 +2748,8 @@ pronto per la lettura sono le seguenti:
   sufficiente a superare il valore di una \textsl{soglia di basso livello} (il
   cosiddetto \textit{low watermark}). Questo valore è espresso in numero di
   byte e può essere impostato con l'opzione del socket \const{SO\_RCVLOWAT}
-  (tratteremo le opzioni dei socket in sez.~\ref{sec:TCP_sock_options}); il
-  suo valore di default è 1 per i socket TCP e UDP. In questo caso una
+  (tratteremo l'uso di questa opzione in sez.~\ref{sec:sock_generic_options});
+  il suo valore di default è 1 per i socket TCP e UDP. In questo caso una
   operazione di lettura avrà successo e leggerà un numero di byte maggiore di
   zero.
 \item il lato in lettura della connessione è stato chiuso; si è cioè ricevuto
@@ -2761,7 +2761,7 @@ pronto per la lettura sono le seguenti:
 \item c'è stato un errore sul socket. In questo caso una operazione di lettura
   non si bloccherà ma restituirà una condizione di errore (ad esempio
   \func{read} restituirà -1) e imposterà la variabile \var{errno} al relativo
-  valore. Vedremo in sez.~\ref{sec:TCP_sock_options} come sia possibile
+  valore. Vedremo in sez.~\ref{sec:sock_generic_options} come sia possibile
   estrarre e cancellare errori pendenti su un socket usando l'opzione
   \const{SO\_ERROR}.
 \item quando si sta utilizzando un \textit{listening socket} ed ci sono delle
@@ -2782,8 +2782,9 @@ pronto per la scrittura sono le seguenti:
   valore della \textsl{soglia di basso livello} in scrittura ed inoltre o il
   socket è già connesso o non necessita (ad esempio è UDP) di connessione.  Il
   valore della soglia è espresso in numero di byte e può essere impostato con
-  l'opzione del socket \const{SO\_SNDLOWAT}; il suo valore di default è 2048
-  per i socket TCP e UDP. In questo caso una operazione di scrittura non si
+  l'opzione del socket \const{SO\_SNDLOWAT} (trattata in
+  sez.~\ref{sec:sock_generic_options}); il suo valore di default è 2048 per i
+  socket TCP e UDP. In questo caso una operazione di scrittura non si
   bloccherà e restituirà un valore positivo pari al numero di byte accettati
   dal livello di trasporto.
 \item il lato in scrittura della connessione è stato chiuso. In questo caso
@@ -2791,7 +2792,7 @@ pronto per la scrittura sono le seguenti:
 \item c'è stato un errore sul socket. In questo caso una operazione di
   scrittura non si bloccherà ma restituirà una condizione di errore ed
   imposterà opportunamente la variabile \var{errno}. Vedremo in
-  sez.~\ref{sec:TCP_sock_options} come sia possibile estrarre e cancellare
+  sez.~\ref{sec:sock_generic_options} come sia possibile estrarre e cancellare
   errori pendenti su un socket usando l'opzione \const{SO\_ERROR}.
 \end{itemize*}