- 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}]
-\item[\texttt{tcp\_mem}]
-\item[\texttt{tcp\_orphan\_retries}]
-\item[\texttt{tcp\_reordering}]
-\item[\texttt{tcp\_retrans\_collapse}]
-\item[\texttt{tcp\_retries1}]
-
-\item[\texttt{tcp\_retries2}] imposta il numero di tentativi di ritrasmissione
- (il default è 15) 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}).
-
-
-\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
+ illustrato in sez.~\ref{sec:TCP_func_listen}).
+
+ Quando questo valore è superato il kernel scarterà immediatamente ogni
+ ulteriore richiesta di connessione. Prende un valore intero; il 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[\sysctlrelfile{net/ipv4}{tcp\_max\_tw\_buckets}] indica il
+ numero massimo di socket in stato \texttt{TIME\_WAIT} consentito nel
+ sistema. Prende un valore intero di default è impostato al doppio del valore
+ del parametro \texttt{NR\_FILE}, ma che viene aggiustato automaticamente a
+ seconda della memoria presente. Se il valore viene superato il socket viene
+ chiuso con la stampa di un avviso; l'uso di questa funzionalità consente di
+ prevenire alcuni semplici attacchi di \textit{denial of service}.
+
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_mem}] viene usato dallo stack TCP
+ per gestire le modalità con cui esso utilizzerà la memoria. Prende una
+ tripletta di valori interi, che indicano un numero di pagine:
+
+ \begin{itemize*}
+ \item 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.
+
+ \item 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}.
+
+ \item 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.
+ \end{itemize*}
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_orphan\_retries}] indica 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. Prende un valore
+ intero che di default è 8.
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_reordering}] indica 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{sec:tcp_protocol_xxx}) viene usata
+ questa metrica di riconoscimento dei riordinamenti per evitare inutili
+ ritrasmissioni provocate dal riordinamento. Prende un valore intero che di
+ default che è 3, e che non è opportuno modificare.
+
+\item[\sysctlrelfile{net/ipv4}{tcp\_retrans\_collapse}] in caso di
+ pacchetti persi durante una connessione, per ottimizzare l'uso della banda
+ il kernel cerca di eseguire la ritrasmissione inviando pacchetti della
+ massima dimensione possibile; in sostanza dati che in precedenza erano stati
+ trasmessi su pacchetti diversi possono essere ritrasmessi riuniti su un solo
+ pacchetto (o su un numero minore di pacchetti di dimensione
+ maggiore). Prende un valore logico e di default è abilitato.
+
+\item[\sysctlrelfile{net/ipv4}{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. Prende un valore intero che di default è 3.
+
+\item[\sysctlrelfile{net/ipv4}{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}). 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