Correzioni ortografiche e poco altro.
[gapil.git] / sockctrl.tex
index f90a45eb5cff9fff18e7f2aef8e1f99e7816b5b9..4eb16391ee0a5d077814fabdfa068597c654d75e 100644 (file)
@@ -2263,8 +2263,8 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
     \texttt{/proc/sys/net/core} e \texttt{tcp\_wmem} e \texttt{tcp\_rmem} in
     \texttt{/proc/sys/net/ipv4}, vedi sez.~\ref{sec:sock_sysctl}.} indica la
   memoria effettivamente impiegata.  Si tenga presente inoltre che le
-  modifiche alle dimensioni dei buffer di ingresso e di uscita per poter
-  essere effettive devono essere impostate prima della chiamata alle funzioni
+  modifiche alle dimensioni dei buffer di ingresso e di uscita, per poter
+  essere effettive, devono essere impostate prima della chiamata alle funzioni
   \func{listen} o \func{connect}.
 
 \item[\const{SO\_LINGER}] questa opzione controlla le modalità con cui viene
@@ -2347,21 +2347,21 @@ connessione non esiste pi
   con l'invio di un segmento FIN all'altro capo della connessione.} In questo
 caso all'invio del messaggio di \textit{keep-alive} si otterrà come risposta
 un segmento RST che indica che l'altro capo non riconosce più l'esistenza
-della connessione ed il socket verrà chiuso riportanto un errore di
+della connessione ed il socket verrà chiuso riportando un errore di
 \errcode{ECONNRESET}.
 
 Se invece non viene ricevuta nessuna risposta (indice che la macchina non è
 più raggiungibile) l'emissione dei messaggi viene ripetuta ad intervalli di 75
 secondi per un massimo di 9 volte\footnote{entrambi questi valori possono
-  essere opportunamente modificati a livello di sistema (cioè per tutti i
-  socket) con gli opportuni parametri illustrati in sez.~\ref{sec:sock_sysctl}
-  ed a livello di singolo socket con le opzioni \texttt{TCP\_KEEP*} di
+  essere modificati a livello di sistema (cioè per tutti i socket) con gli
+  opportuni parametri illustrati in sez.~\ref{sec:sock_sysctl} ed a livello di
+  singolo socket con le opzioni \texttt{TCP\_KEEP*} di
   sez.~\ref{sec:sock_tcp_udp_options}.}  (per un totale di 11 minuti e 15
 secondi) dopo di che, se non si è ricevuta nessuna risposta, il socket viene
 chiuso dopo aver impostato un errore di \errcode{ETIMEDOUT}. Qualora la
 connessione si sia ristabilita e si riceva un successivo messaggio di risposta
-il ciclo riparte come se niente fosse avvenuto.  Infine se invece si riceve
-come risposta un pacchetto ICMP di destinazione irraggiungibile (vedi
+il ciclo riparte come se niente fosse avvenuto.  Infine se si riceve come
+risposta un pacchetto ICMP di destinazione irraggiungibile (vedi
 sez.~\ref{sec:icmp_protocol_xxx}), verrà restituito l'errore corrispondente.
 
 In generale questa opzione serve per individuare una caduta della connessione
@@ -3164,7 +3164,7 @@ seguente elenco:
 \item[\const{TCP\_LINGER2}] imposta, in numero di secondi, il tempo di
   sussistenza dei socket terminati nello stato \texttt{FIN\_WAIT2} (si ricordi
   quanto visto in sez.~\ref{sec:TCP_conn_term}).\footnote{si tenga ben
-    presente che questa opzione non ha nulla a che fare con la
+    presente che questa opzione non ha nulla a che fare con l'opzione
     \const{SO\_LINGER} che abbiamo visto in sez.~\ref{sec:sock_options_main}.}
   Questa opzione consente di sovrascrivere il valore globale impostato con la
   \textit{sysctl} \texttt{tcp\_fin\_timeout} (vedi
@@ -3184,10 +3184,11 @@ seguente elenco:
   una dimensione minima pari a \texttt{SOCK\_MIN\_RCVBUF/2}. Questa opzione
   non deve essere utilizzata in codice che vuole essere portabile.
 
-\item[\const{TCP\_INFO}] permette di ricevere una serie di informazioni
-  relative al socket che il kernel restituisce in una speciale struttura
+\item[\const{TCP\_INFO}] opzione, specifica di Linux, ma introdotta anche in
+  altri kernel (ad esempio FreeBSD) di controllare lo stato di un socket TCP
+  in user space. L'opzione restituisce in una speciale struttura
   \struct{tcp\_info}, la cui definizione è riportata in
-  fig.~\ref{fig:tcp_info_struct}.
+  fig.~\ref{fig:tcp_info_struct}, tutta una serie di dati relativi al socket.
 
 \begin{figure}[!htb]
   \footnotesize \centering
@@ -3199,9 +3200,35 @@ seguente elenco:
   \label{fig:tcp_info_struct}
 \end{figure}
 
-\item[\const{TCP\_QUICKACK}] abilita la modalità speciale \textit{quickack}.
+Con questa opzione diventa possibile ricevere una serie di informazioni
+relative al socket così da poter effettuare dei controlli, senza passare
+attraverso delle operazioni di lettura. Ad esempio si può verificare se un
+socket è stato chiuso con una funzione analoga a quella illustrata in
+fig.~\ref{fig:is_closing}, in cui si usa il campo \var{tcpi\_state} di
+\struct{tcp\_info} per controllare lo stato del socket.
 
-\item[\const{TCP\_CONGESTION}] Introdotta con il kernel 2.6.13.
+\begin{figure}[!htb]
+  \footnotesize \centering
+  \begin{minipage}[c]{15cm}
+    \includestruct{listati/tcp_info.h}
+  \end{minipage}
+  \caption{Codice della funzione \texttt{is\_closing.c}, che controlla lo stato
+    di un socket TCP per verificare se si sta chiudendo.}
+  \label{fig:is_closing}
+\end{figure}
+
+\item[\const{TCP\_QUICKACK}] abilita o disabilita la modalità speciale
+  \textit{quickack}, in cui i pacchetti ACK vengono inviati immediatamente
+  senza le attese talvolta imposte dal normale funzionamento del protocollo
+  TCP. Questa opzione prende un valore logico, e non è permanente, nel senso
+  che si limita a forzare al momento della chiamata un passaggio da o verso la
+  modalità \textit{quickack}; le operazioni successive potrebbero a loro volta
+  entrare o uscire da questa modalità a seconda del processo interno del
+  protocollo o dalle condizioni della connessione (ad esempio in presenza di
+  timeout ritardati per i pacchetti ACK).
+
+\item[\const{TCP\_CONGESTION}] Introdotta con il kernel 2.6.13, non è
+  documentata.
 
 \end{basedescript}
 
@@ -3788,10 +3815,10 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
   memoria (se maggiore di 128Mb) e ridotto a 128 qualora la memoria sia poca
   (inferiore a 32Mb).\footnote{si raccomanda, qualora si voglia aumentare il
     valore oltre 1024, di seguire la procedura citata nella pagina di manuale
-    di TCP , e modificare il valore della costante \texttt{TCP\_SYNQ\_HSIZE}
+    di TCP, e modificare il valore della costante \texttt{TCP\_SYNQ\_HSIZE}
     nel file \texttt{include/net/tcp.h} dei sorgenti del kernel, in modo che
-    sia $\mathtt{tcp\_max\_syn\_backlog} \ge \mathtt{16*TCP\_SYNQ\_HSIZE}$, e
-    poi ricompilare il kernel.}
+    sia $\mathtt{tcp\_max\_syn\_backlog} \ge \mathtt{16*TCP\_SYNQ\_HSIZE}$,
+    per poi ricompilare il kernel.}
 
 \item[\texttt{tcp\_max\_tw\_buckets}] 
 \item[\texttt{tcp\_mem}] 
@@ -3891,14 +3918,18 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
 %%% End: 
 % LocalWords:  quest'ultime neigh dev weight cong mod somaxconn Di SIOCINQ DoS
 % LocalWords:  Documentation SIOCATMARK SIOCOUTQ FIONREAD TIOCOUTQ Denial work
-% LocalWords:  netfilter scheduler mark ARP DHCP BOOTP RARP nonlocal sniffer
+% LocalWords:  netfilter scheduler mark ARP DHCP BOOTP RARP nonlocal sniffer is
 % LocalWords:  linux NODELAY MAXSEG CORK KEEPIDLE KEEPINTVL KEEPCNT SYNCNT INFO
 % LocalWords:  DEFER ACCEPT WINDOW CLAMP QUICKACK CONGESTION ENCAP urgent MSS
 % LocalWords:  Segment SYN accept advertised window info quickack Nagle ifreq
 % LocalWords:  ifr ppp union EPERM SIOCGIFNAME dell' interface index IFF NOARP
 % LocalWords:  SIOCGIFINDEX SIOCGIFFLAGS POINTOPOINT RUNNING PROMISC NOTRAILERS
-% LocalWords:  ALLMULTI bundle PORTSEL ifmap AUTOMEDIA DYNAMIC SIOCSIFFLAGS
+% LocalWords:  ALLMULTI bundle PORTSEL ifmap AUTOMEDIA DYNAMIC SIOCSIFFLAGS way
 % LocalWords:  SIOCGIFMETRIC SIOCSIFMETRIC SIOCGIFMTU SIOCSIFMTU SIOCGIFHWADDR
-% LocalWords:  SIOCSIFHWADDR SIOCSIFHWBROADCAST SIOCGIFMAP SIOCSIFMAP
-% LocalWords:  SIOCADDMULTI SIOCDELMULTI SIOCGIFTXQLEN SIOCSIFTXQLEN
-% LocalWords:  SIOCSIFNAME SIOCGIFCONF
+% LocalWords:  SIOCSIFHWADDR SIOCSIFHWBROADCAST SIOCGIFMAP SIOCSIFMAP sendfile
+% LocalWords:  SIOCADDMULTI SIOCDELMULTI SIOCGIFTXQLEN SIOCSIFTXQLEN three syn
+% LocalWords:  SIOCSIFNAME SIOCGIFCONF handshake retries MIN FreeBSD closing Mb
+% LocalWords:  abort overflow adv win app bic convergence dsack ecn fack frto
+% LocalWords:  intvl probes latency orphans l'ACK SYNQ HSIZE tw buckets mem rfc
+% LocalWords:  orphan reordering collapse sack stdurg synack syncookies recycle
+% LocalWords:  timestamps scaling vegas avoid westwood