Correzioni ortografiche e materiale su sysctl del TCP
[gapil.git] / sockctrl.tex
index f5a4c43c9d7dfaf1e5df63d7e73366e5a8204e70..a1f5d8be3e2497085a63db0678e424691518f3b6 100644 (file)
@@ -2107,7 +2107,7 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
   \func{setsockopt} darà un errore di \errcode{ENOPROTOOPT}. 
 
 \item[\const{SO\_SNDLOWAT}] questa opzione imposta il valore che indica il
   \func{setsockopt} darà un errore di \errcode{ENOPROTOOPT}. 
 
 \item[\const{SO\_SNDLOWAT}] questa opzione imposta il valore che indica il
-  numero minimo di byte che devono essere presenti nel buffer di scrittura
+  numero minimo di byte che devono essere presenti nel buffer di trasmissione
   perché il kernel li invii al protocollo successivo, consentendo ad una
   \func{write} di ritornare o segnalando ad una \func{select} (vedi
   sez.~\ref{sec:TCP_sock_select}) che è possibile eseguire una scrittura.
   perché il kernel li invii al protocollo successivo, consentendo ad una
   \func{write} di ritornare o segnalando ad una \func{select} (vedi
   sez.~\ref{sec:TCP_sock_select}) che è possibile eseguire una scrittura.
@@ -2240,17 +2240,17 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
   tipo \const{SOCK\_STREAM}.
 
 \item[\const{SO\_SNDBUF}] questa opzione imposta la dimensione del buffer di
   tipo \const{SOCK\_STREAM}.
 
 \item[\const{SO\_SNDBUF}] questa opzione imposta la dimensione del buffer di
-  uscita del socket. Prende per \param{optval} un intero indicante il numero
-  di byte. Il valore di default ed il valore massimo che si possono
+  trasmissione del socket. Prende per \param{optval} un intero indicante il
+  numero di byte. Il valore di default ed il valore massimo che si possono
   specificare come argomento per questa opzione sono impostabili
   rispettivamente tramite gli opportuni valori di \func{sysctl} (vedi
   sez.~\ref{sec:sock_sysctl}).
 
 \item[\const{SO\_RCVBUF}] questa opzione imposta la dimensione del buffer di
   specificare come argomento per questa opzione sono impostabili
   rispettivamente tramite gli opportuni valori di \func{sysctl} (vedi
   sez.~\ref{sec:sock_sysctl}).
 
 \item[\const{SO\_RCVBUF}] questa opzione imposta la dimensione del buffer di
-  ingresso del socket. Prende per \param{optval} un intero indicante il numero
-  di byte. Il valore di default ed il valore massimo che si può specificare
-  come argomento per questa opzione sono impostabili tramiti gli opportuni
-  valori di \func{sysctl} (vedi sez.~\ref{sec:sock_sysctl}).
+  ricezione del socket. Prende per \param{optval} un intero indicante il
+  numero di byte. Il valore di default ed il valore massimo che si può
+  specificare come argomento per questa opzione sono impostabili tramiti gli
+  opportuni valori di \func{sysctl} (vedi sez.~\ref{sec:sock_sysctl}).
 
   Si tenga presente che nel caso di socket TCP, per entrambe le opzioni
   \const{SO\_RCVBUF} e \const{SO\_SNDBUF}, il kernel alloca effettivamente una
 
   Si tenga presente che nel caso di socket TCP, per entrambe le opzioni
   \const{SO\_RCVBUF} e \const{SO\_SNDBUF}, il kernel alloca effettivamente una
@@ -2267,7 +2267,7 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
     \procrelfile{/proc/sys/net/ipv4}{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
     \procrelfile{/proc/sys/net/ipv4}{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
+  modifiche alle dimensioni dei buffer di ricezione e trasmissione, per poter
   essere effettive, devono essere impostate prima della chiamata alle funzioni
   \func{listen} o \func{connect}.
 
   essere effettive, devono essere impostate prima della chiamata alle funzioni
   \func{listen} o \func{connect}.
 
@@ -2304,7 +2304,7 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
 
 \item[\const{SO\_ATTACH\_FILTER}] questa opzione permette di agganciare ad un
   socket un filtro di pacchetti che consente di selezionare quali pacchetti,
 
 \item[\const{SO\_ATTACH\_FILTER}] questa opzione permette di agganciare ad un
   socket un filtro di pacchetti che consente di selezionare quali pacchetti,
-  fra tutti quelli ricevuti, verranno letti. Viene usato pincipalmente con i
+  fra tutti quelli ricevuti, verranno letti. Viene usato principalmente con i
   socket di tipo \const{PF\_PACKET} con la libreria \texttt{libpcap} per
   implementare programmi di cattura dei pacchetti, torneremo su questo in
   sez.~\ref{sec:packet_socket}.
   socket di tipo \const{PF\_PACKET} con la libreria \texttt{libpcap} per
   implementare programmi di cattura dei pacchetti, torneremo su questo in
   sez.~\ref{sec:packet_socket}.
@@ -2407,7 +2407,7 @@ comunicare con il server via rete.
 \end{figure}
 
 Abilitandola dopo un certo tempo le connessioni effettivamente terminate
 \end{figure}
 
 Abilitandola dopo un certo tempo le connessioni effettivamente terminate
-verrano comunque chiuse per cui, utilizzando ad esempio una \func{select}, se
+verranno comunque chiuse per cui, utilizzando ad esempio una \func{select}, se
 be potrà rilevare la conclusione e ricevere il relativo errore. Si tenga
 presente però che non può avere la certezza assoluta che un errore di
 \errcode{ETIMEDOUT} ottenuto dopo aver abilitato questa opzione corrisponda
 be potrà rilevare la conclusione e ricevere il relativo errore. Si tenga
 presente però che non può avere la certezza assoluta che un errore di
 \errcode{ETIMEDOUT} ottenuto dopo aver abilitato questa opzione corrisponda
@@ -2762,7 +2762,7 @@ sono definite in \file{netinet/ip.h}, ed accessibili includendo detto file.
     \const{IP\_DROP\_MEMBERSHIP}&         &$\bullet$&   &\struct{ip\_mreqn}& 
       Si sgancia da un gruppo di \textit{multicast}.\\
     \const{IP\_MULTICAST\_IF}   &         &$\bullet$&   &\struct{ip\_mreqn}& 
     \const{IP\_DROP\_MEMBERSHIP}&         &$\bullet$&   &\struct{ip\_mreqn}& 
       Si sgancia da un gruppo di \textit{multicast}.\\
     \const{IP\_MULTICAST\_IF}   &         &$\bullet$&   &\struct{ip\_mreqn}& 
-      Omposta l'interfaccia locale di un socket \itindex{multicast} 
+      Imposta l'interfaccia locale di un socket \itindex{multicast} 
       \textit{multicast}.\\ 
    \hline
   \end{tabular}
       \textit{multicast}.\\ 
    \hline
   \end{tabular}
@@ -3121,9 +3121,10 @@ quantit
     quando un programma di terminale invia un segmento TCP per ogni tasto
     premuto, 40 byte di intestazione di protocollo con 1 byte di dati
     trasmessi; per evitare situazioni del genere è stato introdotto
     quando un programma di terminale invia un segmento TCP per ogni tasto
     premuto, 40 byte di intestazione di protocollo con 1 byte di dati
     trasmessi; per evitare situazioni del genere è stato introdotto
-    l'\textsl{algoritmo di Nagle}.}  Questo meccanismo è controllato da un
-  apposito algoritmo (detto \textsl{algoritmo di Nagle}, vedi
-  sez.~\ref{sez:tcp_protocol_xxx}). Il comportamento normale del protocollo
+    \index{algoritmo~di~Nagle} l'\textsl{algoritmo di Nagle}.}  Questo
+  meccanismo è controllato da un apposito algoritmo (detto
+  \index{algoritmo~di~Nagle} \textsl{algoritmo di Nagle}, vedi
+  sez.~\ref{sez:tcp_protocol_xxx}).  Il comportamento normale del protocollo
   prevede che i dati siano accumulati fintanto che non si raggiunge una
   quantità considerata adeguata per eseguire la trasmissione di un singolo
   segmento.
   prevede che i dati siano accumulati fintanto che non si raggiunge una
   quantità considerata adeguata per eseguire la trasmissione di un singolo
   segmento.
@@ -3134,10 +3135,11 @@ quantit
     richiesta HTTP.} in tal caso l'attesa introdotta dall'algoritmo di
   bufferizzazione non soltanto è inutile, ma peggiora le prestazioni
   introducendo un ritardo.  Impostando questa opzione si disabilita l'uso
     richiesta HTTP.} in tal caso l'attesa introdotta dall'algoritmo di
   bufferizzazione non soltanto è inutile, ma peggiora le prestazioni
   introducendo un ritardo.  Impostando questa opzione si disabilita l'uso
-  dell'\textsl{algoritmo di Nagle} ed i dati vengono inviati immediatamente in
-  singoli segmenti, qualunque sia la loro dimensione.  Ovviamente l'uso di
-  questa opzione è dedicato a chi ha esigenze particolari come quella
-  illustrata, che possono essere stabilite solo per la singola applicazione.
+  \index{algoritmo~di~Nagle} dell'\textsl{algoritmo di Nagle} ed i dati
+  vengono inviati immediatamente in singoli segmenti, qualunque sia la loro
+  dimensione.  Ovviamente l'uso di questa opzione è dedicato a chi ha esigenze
+  particolari come quella illustrata, che possono essere stabilite solo per la
+  singola applicazione.
 
   Si tenga conto che questa opzione viene sovrascritta dall'eventuale
   impostazione dell'opzione \const{TCP\_CORK} (il cui scopo è sostanzialmente
 
   Si tenga conto che questa opzione viene sovrascritta dall'eventuale
   impostazione dell'opzione \const{TCP\_CORK} (il cui scopo è sostanzialmente
@@ -3160,15 +3162,15 @@ quantit
 \item[\const{TCP\_CORK}] questa opzione è il complemento naturale di
   \const{TCP\_NODELAY} e serve a gestire a livello applicativo la situazione
   opposta, cioè quella in cui si sa fin dal principio che si dovranno inviare
 \item[\const{TCP\_CORK}] questa opzione è il complemento naturale di
   \const{TCP\_NODELAY} e serve a gestire a livello applicativo la situazione
   opposta, cioè quella in cui si sa fin dal principio che si dovranno inviare
-  grosse quantità di dati. Anche in questo caso l'\textsl{algoritmo di Nagle}
-  tenderà a suddividerli in dimensioni da lui ritenute
-  opportune,\footnote{l'algoritmo cerca di tenere conto di queste situazioni,
-    ma essendo un algoritmo generico tenderà comunque ad introdurre delle
-    suddivisioni in segmenti diversi, anche quando potrebbero non essere
-    necessarie, con conseguente spreco di banda.}  ma sapendo fin dall'inizio
-  quale è la dimensione dei dati si potranno di nuovo ottenere delle migliori
-  prestazioni disabilitandolo, e gestendo direttamente l'invio del nostro
-  blocco di dati in soluzione unica.
+  grosse quantità di dati. Anche in questo caso \index{algoritmo~di~Nagle}
+  l'\textsl{algoritmo di Nagle} tenderà a suddividerli in dimensioni da lui
+  ritenute opportune,\footnote{l'algoritmo cerca di tenere conto di queste
+    situazioni, ma essendo un algoritmo generico tenderà comunque ad
+    introdurre delle suddivisioni in segmenti diversi, anche quando potrebbero
+    non essere necessarie, con conseguente spreco di banda.}  ma sapendo fin
+  dall'inizio quale è la dimensione dei dati si potranno di nuovo ottenere
+  delle migliori prestazioni disabilitandolo, e gestendo direttamente l'invio
+  del nostro blocco di dati in soluzione unica.
 
   Quando questa opzione viene abilitata non vengono inviati segmenti di dati
   fintanto che essa non venga disabilitata; a quel punto tutti i dati rimasti
 
   Quando questa opzione viene abilitata non vengono inviati segmenti di dati
   fintanto che essa non venga disabilitata; a quel punto tutti i dati rimasti
@@ -3990,15 +3992,16 @@ socket.  Quelli descritti anche nella pagina di manuale, accessibile con
 
 \begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}}
 \item[\procrelfile{/proc/sys/net/core}{rmem\_default}] imposta la dimensione
 
 \begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}}
 \item[\procrelfile{/proc/sys/net/core}{rmem\_default}] imposta la dimensione
-  di default del buffer di lettura (cioè per i dati in ingresso) dei socket.
+  di default del buffer di ricezione (cioè per i dati in ingresso) dei socket.
 \item[\procrelfile{/proc/sys/net/core}{rmem\_max}] imposta la dimensione
 \item[\procrelfile{/proc/sys/net/core}{rmem\_max}] imposta la dimensione
-  massima che si può assegnare al buffer di ingresso dei socket attraverso
+  massima che si può assegnare al buffer di ricezione dei socket attraverso
   l'uso dell'opzione \const{SO\_RCVBUF}.
 \item[\procrelfile{/proc/sys/net/core}{wmem\_default}] imposta la dimensione
   l'uso dell'opzione \const{SO\_RCVBUF}.
 \item[\procrelfile{/proc/sys/net/core}{wmem\_default}] imposta la dimensione
-  di default del buffer di scrittura (cioè per i dati in uscita) dei socket.
+  di default del buffer di trasmissione (cioè per i dati in uscita) dei
+  socket.
 \item[\procrelfile{/proc/sys/net/core}{wmem\_max}] imposta la dimensione
 \item[\procrelfile{/proc/sys/net/core}{wmem\_max}] imposta la dimensione
-  massima che si può assegnare al buffer di uscita dei socket attraverso l'uso
-  dell'opzione \const{SO\_SNDBUF}.
+  massima che si può assegnare al buffer di trasmissione dei socket attraverso
+  l'uso dell'opzione \const{SO\_SNDBUF}.
 \item[\procrelfile{/proc/sys/net/core}{message\_cost},
   \procrelfile{/proc/sys/net/core}{message\_burst}] contengono le impostazioni
   del \itindex{bucket~filter} \textit{bucket filter} che controlla l'emissione
 \item[\procrelfile{/proc/sys/net/core}{message\_cost},
   \procrelfile{/proc/sys/net/core}{message\_burst}] contengono le impostazioni
   del \itindex{bucket~filter} \textit{bucket filter} che controlla l'emissione
@@ -4097,7 +4100,7 @@ di manuale accessibile con \texttt{man 7 ip}, sono i seguenti:
   valore di default è 64, e normalmente non c'è nessuna necessità di
   modificarlo.\footnote{l'unico motivo sarebbe per raggiungere macchine
     estremamente ``{lontane}'' in termini di \textit{hop}, ma è praticamente
   valore di default è 64, e normalmente non c'è nessuna necessità di
   modificarlo.\footnote{l'unico motivo sarebbe per raggiungere macchine
     estremamente ``{lontane}'' in termini di \textit{hop}, ma è praticamente
-    impossible trovarne.} Aumentare il valore è una pratica poco gentile, in
+    impossibile trovarne.} Aumentare il valore è una pratica poco gentile, in
   quanto in caso di problemi di routing si allunga inutilmente il numero di
   ritrasmissioni.
 
   quanto in caso di problemi di routing si allunga inutilmente il numero di
   ritrasmissioni.
 
@@ -4353,7 +4356,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
   
 
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_mem}] viene usato dallo stack TCP
   
 
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_mem}] viene usato dallo stack TCP
-  per gestire le modalità con cui esso utlizzerà la memoria. Prende una
+  per gestire le modalità con cui esso utilizzerà la memoria. Prende una
   tripletta di valori interi, che indicano un numero di pagine:
 
   \begin{itemize*}
   tripletta di valori interi, che indicano un numero di pagine:
 
   \begin{itemize*}
@@ -4425,13 +4428,13 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
 
   \begin{itemize*}
   \item il primo valore, chiamato \textit{min} nelle pagine di manuale, indica
 
   \begin{itemize*}
   \item il primo valore, chiamato \textit{min} nelle pagine di manuale, indica
-    la dimensione minima del buffer di ricezione; il default è 4Kb, ma in
-    sistemi con poca memoria viene automaticamente ridotto a
+    la dimensione minima in byte del buffer di ricezione; il default è 4Kb, ma
+    in sistemi con poca memoria viene automaticamente ridotto a
     \const{PAGE\_SIZE}.  Questo valore viene usato per assicurare che anche in
     situazioni di pressione sulla memoria (vedi quanto detto per
     \const{PAGE\_SIZE}.  Questo valore viene usato per assicurare che anche in
     situazioni di pressione sulla memoria (vedi quanto detto per
-    \procrelfile{/proc/sys/net/ipv4}{tcp\_mem}) le allocazioni al di sotto di
+    \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}) le allocazioni al di sotto di
     questo limite abbiamo comunque successo.  Questo valore non viene comunque
     questo limite abbiamo comunque successo.  Questo valore non viene comunque
-    ad incidere sulla dimensione del buffer di lettura di un singolo socket
+    ad incidere sulla dimensione del buffer di ricezione di un singolo socket
     dichiarata con l'opzione \const{SO\_RCVBUF}.
 
   \item il secondo valore, denominato \textit{default} nelle pagine di
     dichiarata con l'opzione \const{SO\_RCVBUF}.
 
   \item il secondo valore, denominato \textit{default} nelle pagine di
@@ -4447,17 +4450,17 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
     \procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}).
 
   \item il terzo valore, denominato \textit{max} nelle pagine di manuale,
     \procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}).
 
   \item il terzo valore, denominato \textit{max} nelle pagine di manuale,
-    indica la dimensione massima, in byte, del buffer di ricezione di un
-    socket TCP; il default è 174760 byte, che viene ridotto automaticamente a
-    87380 per sistemi con poca memoria. Il valore non può comunque eccedere il
+    indica la dimensione massima in byte del buffer di ricezione di un socket
+    TCP; il default è 174760 byte, che viene ridotto automaticamente a 87380
+    per sistemi con poca memoria. Il valore non può comunque eccedere il
     limite generale per tutti i socket posto con
     \procfile{/proc/sys/net/core/rmem\_max}. Questo valore non viene ad
     limite generale per tutti i socket posto con
     \procfile{/proc/sys/net/core/rmem\_max}. Questo valore non viene ad
-    incidere sulla dimensione del buffer di lettura di un singolo socket
+    incidere sulla dimensione del buffer di ricezione di un singolo socket
     dichiarata con l'opzione \const{SO\_RCVBUF}.
   \end{itemize*}
 
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_sack}] indica al kernel di
     dichiarata con l'opzione \const{SO\_RCVBUF}.
   \end{itemize*}
 
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_sack}] indica al kernel di
-  utilizzare il meccanismo del \textit{TCP selective aknowledment} definito
+  utilizzare il meccanismo del \textit{TCP selective acknowledgement} definito
   nell'\href{http://www.ietf.org/rfc/rfc2018.txt}{RFC~2018}. Prende un valore
   logico e di default è abilitato.
 
   nell'\href{http://www.ietf.org/rfc/rfc2018.txt}{RFC~2018}. Prende un valore
   logico e di default è abilitato.
 
@@ -4471,12 +4474,12 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
   dar luogo a problemi di interoperabilità.
 
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_synack\_retries}] indica il numero
   dar luogo a problemi di interoperabilità.
 
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_synack\_retries}] indica il numero
-  massimo di volte che verrà ritasmesso il segmento SYN/ACK nella creazione di
+  massimo di volte che verrà ritrasmesso il segmento SYN/ACK nella creazione di
   una connessione (vedi sez.~\ref{sec:TCP_conn_cre}). Prende un valore intero
   ed il valore di default è 5; non si deve superare il valore massimo di 255.
 
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_syncookies}] abilita i \textit{TCP
   una connessione (vedi sez.~\ref{sec:TCP_conn_cre}). Prende un valore intero
   ed il valore di default è 5; non si deve superare il valore massimo di 255.
 
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_syncookies}] abilita i \textit{TCP
-    syncookies}.\footnote{per poter usare quasta funzionalità è necessario
+    syncookies}.\footnote{per poter usare questa funzionalità è necessario
     avere abilitato l'opzione \texttt{CONFIG\_SYN\_COOKIES} nella compilazione
     del kernel.} Prende un valore logico, e di default è disabilitato. Questa
   funzionalità serve a fornire una protezione in caso di un attacco di tipo
     avere abilitato l'opzione \texttt{CONFIG\_SYN\_COOKIES} nella compilazione
     del kernel.} Prende un valore logico, e di default è disabilitato. Questa
   funzionalità serve a fornire una protezione in caso di un attacco di tipo
@@ -4499,7 +4502,12 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_recycle}] abilita il
   riutilizzo rapido dei socket in stato \texttt{TIME\_WAIT}. Prende un valore
   logico e di default è disabilitato. Non è opportuno abilitare questa opzione
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_recycle}] abilita il
   riutilizzo rapido dei socket in stato \texttt{TIME\_WAIT}. Prende un valore
   logico e di default è disabilitato. Non è opportuno abilitare questa opzione
-  che può causare problemi con il NAT.
+  che può causare problemi con il NAT.\footnote{il \textit{Network Address
+      Translation} è una tecnica, impiegata nei firewall e nei router, che
+    consente di modificare al volo gli indirizzi dei pacchetti che transitano
+    per una macchina, Linux la supporta con il \itindex{netfilter}
+    \textit{netfilter}, per maggiori dettagli si consulti il cap.~2 di
+    \cite{FwGL}.}
 
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_reuse}] abilita il riutilizzo
   dello stato \texttt{TIME\_WAIT} quando questo è sicuro dal punto di vista
 
 \item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_reuse}] abilita il riutilizzo
   dello stato \texttt{TIME\_WAIT} quando questo è sicuro dal punto di vista
@@ -4516,17 +4524,51 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
   aumentarne le dimensioni. Questa è pienamente supportata dallo stack TCP di
   Linux, ma se lo si disabilita la negoziazione del
   \itindex{TCP~window~scaling} \textit{TCP window scaling} con l'altro capo
   aumentarne le dimensioni. Questa è pienamente supportata dallo stack TCP di
   Linux, ma se lo si disabilita la negoziazione del
   \itindex{TCP~window~scaling} \textit{TCP window scaling} con l'altro capo
-  della conessione non viene effettuata.
-
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_vegas\_cong\_avoid}] 
+  della connessione non viene effettuata.
 
 
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_westwood}] 
+%\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_vegas\_cong\_avoid}] 
+% TODO: controllare su internet
 
 
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_wmem}] 
+%\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_westwood}] 
+% TODO: controllare su internet
 
 
-\end{basedescript}
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_wmem}] viene usato dallo stack TCP
+  per controllare dinamicamente le dimensioni dei propri buffer di spedizione,
+  adeguandole in rapporto alla memoria disponibile.  Prende una tripletta di
+  valori interi separati da spazi che indicano delle dimensioni in byte:
 
 
+  \begin{itemize*}
+  \item il primo valore, chiamato \textit{min}, indica la dimensione minima in
+    byte del buffer di spedizione; il default è 4Kb. Come per l'analogo di
+    \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}) viene usato per assicurare
+    che anche in situazioni di pressione sulla memoria (vedi
+    \procrelfile{/proc/sys/net/ipv4}{tcp\_mem}) le allocazioni al di sotto di
+    questo limite abbiamo comunque successo.  Di nuovo questo valore non viene
+    ad incidere sulla dimensione del buffer di trasmissione di un singolo
+    socket dichiarata con l'opzione \const{SO\_SNDBUF}.
+
+  \item il secondo valore, denominato \textit{default}, indica la dimensione
+    di default in byte del buffer di spedizione di un socket TCP.  Questo
+    valore sovrascrive il default iniziale impostato per tutti i tipi di
+    socket con \procfile{/proc/sys/net/core/wmem\_default}. Il default è 87380
+    byte, ridotto a 43689 per sistemi con poca memoria. Si può aumentare
+    questo valore quando si desiderano dimensioni più ampie del buffer di
+    trasmissione per i socket TCP, ma come per il precedente
+    \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}) se si vuole che in
+    corrispondenza aumentino anche le dimensioni usate per la finestra TCP si
+    deve abilitare il \itindex{TCP~window~scaling} \textit{TCP window scaling}
+    con \procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}.
+
+  \item il terzo valore, denominato \textit{max}, indica la dimensione massima
+    in byte del buffer di spedizione di un socket TCP; il default è 128Kb, che
+    viene ridotto automaticamente a 64Kb per sistemi con poca memoria. Il
+    valore non può comunque eccedere il limite generale per tutti i socket
+    posto con \procfile{/proc/sys/net/core/wmem\_max}. Questo valore non viene
+    ad incidere sulla dimensione del buffer di trasmissione di un singolo
+    socket dichiarata con l'opzione \const{SO\_SNDBUF}.
+  \end{itemize*}
 
 
+\end{basedescript}
 
 
 
 
 
 
@@ -4604,9 +4646,11 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
 % LocalWords:  metric EOPNOTSUPP mtu hwaddr ARPHRD interrupt DMA map qlen silly
 % LocalWords:  rename ifconf syndrome dell'ACK FTP ACCEPTFILTER advanced reno
 % LocalWords:  congestion control Networking cubic CUBIC highspeed HSTCP htcp
 % LocalWords:  metric EOPNOTSUPP mtu hwaddr ARPHRD interrupt DMA map qlen silly
 % LocalWords:  rename ifconf syndrome dell'ACK FTP ACCEPTFILTER advanced reno
 % LocalWords:  congestion control Networking cubic CUBIC highspeed HSTCP htcp
-% LocalWords:  HTCP hybla HYBLA scalable SCALABLE ifc req iflist access ntoa
-% LocalWords:  hop Selective Acknowledgement acknowledgement Explicit RTO stack
-% LocalWords:  Notification wireless denial pressure
+% LocalWords:  HTCP hybla HYBLA scalable SCALABLE ifc req iflist access ntoa Kb
+% LocalWords:  hop Selective acknowledgement Explicit RTO stack firewall
+% LocalWords:  Notification wireless denial pressure ATTACH DETACH
+% LocalWords:  libpcap discovery point l'overhaed min PAGE flood
+% LocalWords:  selective COOKIES NAT
 
 %%% Local Variables: 
 %%% mode: latex
 
 %%% Local Variables: 
 %%% mode: latex