+I file di \texttt{/proc/sys/net/ipv4} che invece fanno riferimento alle
+caratteristiche specifiche del protocollo TCP, elencati anche nella rispettiva
+pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
+\begin{basedescript}{\desclabelwidth{3.9cm}\desclabelstyle{\nextlinelabel}}
+
+\item[\texttt{tcp\_abort\_on\_overflow}] è un valore logico (disabilitato di
+ default) che indica di azzerare le connessioni quando il programma che le
+ riceve è troppo lento ed incapace di accettarle. Questo consente di
+ recuperare le connessioni se si è avuto un eccesso dovuto ad un qualche
+ picco di traffico, ma ovviamente va a discapito dei client che interrogano
+ il server. Pertanto è da abilitare soltanto quando si è sicuri che non è
+ possibile ottimizzare il server in modo che sia in grado di accettare
+ connessioni più rapidamente.
+
+\item[\texttt{tcp\_adv\_win\_scale}] questa variabile intera indica al kernel
+ quanto spazio all'interno del buffer associato ad un socket (quello
+ impostato con \texttt{tcp\_rmem}) deve essere utilizzato per la finestra del
+ protocollo TCP (quello che costituisce la \itindex{advertised~window}
+ \textit{advertised window} annunciata all'altro capo del socket) e quello
+ che viene usato come buffer applicativo per isolare la rete dalle latenze
+ dell'applicazione. Il valore viene calcolato secondo la formula
+ $\texttt{buffer}/2^\texttt{tcp\_adv\_win\_scale}$ se positivo o con
+ $\texttt{buffer}-\texttt{buffer}/2^\texttt{tcp\_adv\_win\_scale}$ se
+ negativo. Il valore di default è 2 che significa che al buffer
+ dell'applicazione viene riservato un quarto del totale.
+
+\item[\texttt{tcp\_app\_win}] il valore indica quanti byte della finestra TCP
+ vengono riservati per la bufferizzazione, valore è il massimo fra la
+ \itindex{Maximum~Segment~Size} MSS e
+ $\texttt{window}/2^\texttt{tcp\_app\_win}$. Un valore nullo significa che
+ non viene riservato nessuno spazio; il default è 31.
+
+% vecchi, presumibilmente usati quando gli algoritmi di congestione non erano
+% modularizzabili
+% \item[\texttt{tcp\_bic}]
+% \item[\texttt{tcp\_bic\_low\_window}]
+% \item[\texttt{tcp\_bic\_fast\_convergence}]
+
+\item[\texttt{tcp\_dsack}] Abilita il supporto definito
+ nell'\href{http://www.ietf.org/rfc/rfc2884.txt}{RFC~2884} per il
+ \textit{Duplicate SACK}.\footnote{si indica con SACK (\textit{Selective
+ Acknowledgement}) un'opzione TCP, definita
+ nell'\href{http://www.ietf.org/rfc/rfc2018.txt}{RFC~2018}, usata per dare
+ un \textit{acknowledgement} unico su blocchi di pacchetti non contigui.}
+
+\item[\texttt{tcp\_ecn}] Abilita il meccanismo della \textit{Explicit
+ Congestion Notification} (o ECN) definito
+ nell'\href{http://www.ietf.org/rfc/rfc2884.txt}{RFC~2884}. Si tenga presente
+ che se si abilita questa opzione si possono avere dei malfunzionamenti
+ apparentemente casuali dipendenti dalla destinazione, dovuti al fatto che
+ alcuni vecchi router non supportano il meccanismo ed alla sua attivazione
+ scartano i relativi pacchetti.\\
+
+\item[\texttt{tcp\_fack}] è un valore logico che abilita il supporto per il
+ \textit{TCP Forward Acknowledgement}. Di default è abilitato.
+% TODO documentare o descrivere che cos'è il TCP Forward Acknowledgement
+
+\item[\texttt{tcp\_fin\_timeout}] specifica il numero di secondi (il default è
+ 60\footnote{nei kernel della serie 2.2.x era invece di 120 secondi.}) da
+ passare in stato \texttt{FIN\_WAIT2} nell'attesa delle ricezione del
+ pacchetto FIN conclusivo, passati quali il socket viene comunque chiuso
+ forzatamente. L'uso di questa opzione realizza quella che in sostanza è una
+ violazione delle specifiche del protocollo TCP, ma è utile per fronteggiare
+ alcuni attacchi di \itindex{Denial~of~Service~(DoS)} \textit{Denial of
+ Service}.
+
+\item[\texttt{tcp\_frto}] è un valore logico che abilita il supporto per
+ l'algoritmo F-RTO, un algoritmo usato per la ritrasmissione dei timeout del
+ protocollo TCP, che diventa molto utile per le reti wireless dove la perdita
+ di pacchetti è usualmente dovuta a delle interferenze radio, piuttosto che
+ alla congestione dei router. Di default è disabilitato.
+
+
+\item[\texttt{tcp\_keepalive\_intvl}] il numero di secondi che deve
+ trascorrere fra l'emissione di due successivi pacchetti di test quando è
+ abilitata la funzionalità del \textit{keepalive} (vedi
+ sez.~\ref{sec:sock_options_main}). Il valore di default è 75.
+
+\item[\texttt{tcp\_keepalive\_probes}] il massimo numero pacchetti di
+ \textit{keepalive} (vedi sez.~\ref{sec:sock_options_main}) che devono essere
+ inviati senza ricevere risposta prima che il kernel decida che la
+ connessione è caduta e la termini. Il valore di default è 9.
+
+\item[\texttt{tcp\_keepalive\_time}] il numero di secondi che devono passare
+ senza traffico sulla connessione prima che il kernel, qualora si sia
+ utilizzata l'opzione \const{SO\_KEEPALIVE} (vedi
+ sez.~\ref{sec:sock_options_main}), inizi ad inviare pacchetti di pacchetti
+ di \textit{keepalive}. Il default è 7200, pari a due ore.
+
+\item[\texttt{tcp\_low\_latency}] un valore logico che indica allo stack TCP
+ del kernel di ottimizzare il comportamento per ottenere tempi di latenza più
+ bassi a scapito di valori più alti per l'utilizzo della banda. Di default è
+ disabilitato in quanto un maggior utilizzo della banda è preferito, ma
+ esistono applicazioni particolari in cui la riduzione della latenza è più
+ importante (ad esempio i cluster di calcolo parallelo) in cui lo si può
+ abilitare.
+
+\item[\texttt{tcp\_max\_orphans}] il numero massimo di socket TCP
+ ``\textsl{orfani}'' (vale a dire non associati a nessun file descriptor)
+ consentito nel sistema.\footnote{trattasi in genere delle connessioni
+ relative a socket chiusi che non hanno completato il processo di
+ chiusura.} Quando il limite viene ecceduto la connessione orfana viene
+ resettata e viene stampato un avvertimento. Questo limite viene usato per
+ contrastare alcuni elementari attacchi di \textit{denial of service}.
+ Diminuire il valore non è mai raccomandato, in certe condizioni di rete può
+ essere opportuno aumentarlo, ma si deve tenere conto del fatto che ciascuna
+ connessione orfana può consumare fino a 64K di memoria del kernel. Il di
+ default viene impostato inizialmente al valore del parametro del kernel
+ \texttt{NR\_FILE}, e viene aggiustato a seconda della memoria disponibile.
+% TODO verificare la spiegazione di connessione orfana
+
+\item[\texttt{tcp\_max\_syn\_backlog}] un numero intero che indica la
+ lunghezza della coda delle connessioni incomplete, cioè delle connessioni
+ per le quali si è ricevuto un SYN di richiesta ma non l'ACK finale del
+ \itindex{three~way~handshake} \textit{three way handshake} (si riveda quanto
+ illustrato in sez.\ref{sec:TCP_func_listen}).
+
+ Quando questo valore è superato il kernel scarterà immediatamente ogni
+ ulteriore richiesta di connessione. Il valore di default (che è 256) viene
+ automaticamente portato a 1024 qualora nel sistema ci sia sufficiente
+ 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}
+ 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}$,
+ per poi ricompilare il kernel.}
+
+\item[\texttt{tcp\_max\_tw\_buckets}] questo valore indica il numero massimo
+ di socket in stato \texttt{TIME\_WAIT} consentito nel sistema; viene
+ impostato per prevenire semplici attacchi di \textit{denial of service} ed
+ inizializzato di default ad un valore del parametro \texttt{NR\_FILE}, per
+ poi essere aggiustato a seconda della memoria presente. Se il valore viene
+ superato il socket viene chiuso con la stampa di un avviso.
+
+
+\item[\texttt{tcp\_mem}] una tripletta di valori usati dallo stack TCP per
+ controllare il proprio uso della memoria. Il primo valore, chiamato
+ \textit{low} nelle pagine di manuale, indica il numero di pagine allocate
+ sotto il quale non viene usato nessun meccanismo di regolazione dell'uso
+ della memoria.
+
+ Il secondo valore, chiamato \textit{pressure} indica il numero di pagine
+ allocate passato il quale lo stack TCP inizia a moderare il suo consumo di
+ memoria. Si esce da questo stato di \textsl{pressione} sulla memoria quando
+ il numero di pagine scende sotto il precedente valore \textit{low}.
+
+ Il terzo valore, chiamato \textit{high} indica il numero massimo di pagine
+ che possono essere utilizzate dallo stack TCP/IP, e soprassiede ogni altro
+ valore specificato dagli altri limiti del kernel.
+
+
+\item[\texttt{tcp\_orphan\_retries}] il numero massimo di volte che si esegue
+ un tentativo di controllo sull'altro capo di una connessione che è stata già
+ chiusa dalla nostra parte. Il valore di default è 8 volte.
+
+\item[\texttt{tcp\_reordering}] il numero massimo di volte che un pacchetto
+ può essere riordinato nel flusso di dati, prima che lo stack TCP assuma che
+ è andato perso e si ponga nello stato di \textit{slow start} (si veda
+ sez.~\ref{sez:tcp_protocol_xxx}) viene usata questa metrica di
+ riconoscimento dei riordinamenti per evitare inutili ritrasmissioni
+ provocate dal riordinamento. Non è opportuno modificare questo valore dal
+ default che è 3.
+
+\item[\texttt{tcp\_retrans\_collapse}]
+
+\item[\texttt{tcp\_retries1}] imposta il massimo numero di volte che
+ protocollo tenterà la ritrasmissione si un pacchetto su una connessione
+ stabilita prima di fare ricorso ad ulteriori sforzi che coinvolgano anche il
+ livello di rete. Passato questo numero di ritrasmissioni verrà fatto
+ eseguire al livello di rete un tentativo di aggiornamento della rotta verso
+ la destinazione prima di eseguire ogni successiva ritrasmissione.
+
+\item[\texttt{tcp\_retries2}] imposta il numero di tentativi di ritrasmissione
+ di un pacchetto inviato su una connessione già stabilita per il quale non si
+ sia ricevuto una risposta di ACK (si veda anche quanto illustrato in
+ sez.~\ref{sec:TCP_server_crash}). Il valore default è 15, che significa 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[\texttt{tcp\_rfc1337}]
+
+\item[\texttt{tcp\_rmem}]
+
+
+\item[\texttt{tcp\_sack}]
+\item[\texttt{tcp\_stdurg}]
+\item[\texttt{tcp\_synack\_retries}]
+\item[\texttt{tcp\_syncookies}]
+
+\item[\texttt{tcp\_syn\_retries}] imposta il numero di tentativi (il default è
+ 5) 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}). Il valore non deve
+ superare 255.
+
+\item[\texttt{tcp\_timestamps}]
+\item[\texttt{tcp\_tw\_recycle}]
+\item[\texttt{tcp\_tw\_reuse}]
+\item[\texttt{tcp\_window\_scaling}]
+
+
+\item[\texttt{tcp\_vegas\_cong\_avoid}]
+\item[\texttt{tcp\_westwood}]
+\item[\texttt{tcp\_wmem}]
+\end{basedescript}