+ anche quanto illustrato in sez.~\ref{sec:TCP_server_crash}). Prende un
+ valore intero che di default è 15, il che comporta un tempo variabile fra 13
+ e 30 minuti; questo non corrisponde a quanto richiesto
+ nell'\href{http://www.ietf.org/rfc/rfc1122.txt}{RFC~1122} dove è indicato un
+ massimo di 100 secondi, che però è un valore considerato troppo basso.
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_rfc1337}] indica al kernel di
+ abilitare il comportamento richiesto
+ nell'\href{http://www.ietf.org/rfc/rfc1337.txt}{RFC~1337}. Prende un valore
+ logico e di default è disabilitato, il che significa che alla ricezione di
+ un segmento RST in stato \texttt{TIME\_WAIT} il socket viene chiuso
+ immediatamente senza attendere la conclusione del periodo di
+ \texttt{TIME\_WAIT}.
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_rmem}] viene usato dallo stack TCP
+ per controllare dinamicamente le dimensioni dei propri buffer di ricezione,
+ anche 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} nelle pagine di manuale, indica
+ 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
+ \sysctlrelfile{net/ipv4}{tcp\_rmem}) le allocazioni al di sotto di
+ questo limite abbiamo comunque successo. Questo valore non viene comunque
+ 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
+ manuale, indica la dimensione di default, in byte, del buffer di ricezione
+ di un socket TCP. Questo valore sovrascrive il default iniziale impostato
+ per tutti i socket con \sysctlfile{net/core/mem\_default} che vale
+ per qualunque protocollo. Il default è 87380 byte, ridotto a 43689 per
+ sistemi con poca memoria. Se si desiderano dimensioni più ampie per tutti
+ i socket si può aumentare questo valore, ma 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}
+ (di default è abilitato, vedi più avanti
+ \sysctlrelfile{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
+ limite generale per tutti i socket posto con
+ \sysctlfile{net/core/rmem\_max}. Questo valore non viene ad
+ incidere sulla dimensione del buffer di ricezione di un singolo socket
+ dichiarata con l'opzione \const{SO\_RCVBUF}.
+ \end{itemize}
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_sack}] indica al kernel di
+ 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.
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_stdurg}] indica al kernel di
+ utilizzare l'interpretazione che viene data
+ dall'\href{http://www.ietf.org/rfc/rfc1122.txt}{RFC~1122} del puntatore dei
+ \textit{dati urgenti} (vedi sez.~\ref{sec:TCP_urgent_data}) in cui questo
+ punta all'ultimo byte degli stessi; se disabilitato viene usata
+ l'interpretazione usata da BSD per cui esso punta al primo byte successivo.
+ Prende un valore logico e di default è disabilitato, perché abilitarlo può
+ dar luogo a problemi di interoperabilità.
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_synack\_retries}] indica il numero
+ 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[\sysctlrelfile{net/ipv4}{tcp\_syncookies}] abilita i \textit{TCP
+ 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
+ \index{SYN~flood} \textit{SYN flood}, e deve essere utilizzato come ultima
+ risorsa dato che costituisce una violazione del protocollo TCP e confligge
+ con altre funzionalità come le estensioni e può causare problemi per i
+ client ed il reinoltro dei pacchetti.
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_syn\_retries}] imposta il numero
+ di tentativi di ritrasmissione dei pacchetti SYN di inizio connessione del
+ \itindex{three~way~handshake} \textit{three way handshake} (si ricordi
+ quanto illustrato in sez.~\ref{sec:TCP_func_connect}). Prende un valore
+ intero che di default è 5; non si deve superare il valore massimo di 255.
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_timestamps}] abilita l'uso dei
+ \textit{TCP timestamps}, come definiti
+ nell'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}. Prende un valore
+ logico e di default è abilitato.
+
+\item[\sysctlrelfile{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.\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[\sysctlrelfile{net/ipv4}{tcp\_tw\_reuse}] abilita il riutilizzo
+ dello stato \texttt{TIME\_WAIT} quando questo è sicuro dal punto di vista
+ del protocollo. Prende un valore logico e di default è disabilitato.
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_window\_scaling}] un valore
+ logico, attivo di default, che abilita la funzionalità del
+ \itindex{TCP~window~scaling} \textit{TCP window scaling} definita
+ dall'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}. Prende un valore
+ logico e di default è abilitato. Come accennato in
+ sez.~\ref{sec:TCP_TCP_opt} i 16 bit della finestra TCP comportano un limite
+ massimo di dimensione di 64Kb, ma esiste una opportuna opzione del
+ protocollo che permette di applicare un fattore di scale che consente di
+ 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 connessione non viene effettuata.
+
+%\item[\sysctlrelfile{net/ipv4}{tcp\_vegas\_cong\_avoid}]
+% TODO: controllare su internet
+
+%\item[\sysctlrelfile{net/ipv4}{tcp\_westwood}]
+% TODO: controllare su internet
+
+\item[\sysctlrelfile{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
+ \sysctlrelfile{net/ipv4}{tcp\_rmem}) viene usato per assicurare
+ che anche in situazioni di pressione sulla memoria (vedi
+ \sysctlrelfile{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 \sysctlfile{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
+ \sysctlrelfile{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 \sysctlrelfile{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 \sysctlfile{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}