\subsection{Le opzioni TCP.}
\label{sec:TCP_TCP_opt}
-Ciascun segmento SYN contiene in genere delle opzioni per il protocollo TCP
-(le cosiddette \textit{TCP options}, che vengono inserite fra l'header e i
-dati) che servono a comunicare all'altro capo una serie di parametri utili a
-regolare la connessione. Normalmente vengono usate le seguenti opzioni:
+Ciascun segmento SYN contiene in genere delle opzioni per il protocollo TCP,
+le cosiddette \textit{TCP options},\footnote{da non confondere con le opzioni
+ dei socket TCP che tratteremo in sez.~\ref{sec:sock_tcp_udp_options}, in
+ questo caso si tratta delle opzioni che vengono trasmesse come parte di un
+ pacchetto TCP, non delle funzioni che consentono di impostare i relativi
+ valori.} che vengono inserite fra l'header e i dati, e che servono a
+comunicare all'altro capo una serie di parametri utili a regolare la
+connessione. Normalmente vengono usate le seguenti opzioni:
\begin{itemize}
\item \textit{MSS option}, dove MMS sta per \itindex{Maximum~Segment~Size}
connessione annuncia all'altro il massimo ammontare di dati che vorrebbe
accettare per ciascun segmento nella connessione corrente. È possibile
leggere e scrivere questo valore attraverso l'opzione del socket
- \const{TCP\_MAXSEG} (vedi sez.~\ref{sec:TCP_TCP_opt}).
+ \const{TCP\_MAXSEG} (vedi sez.~\ref{sec:sock_tcp_udp_options}).
\item \textit{window scale option}, il protocollo TCP implementa il controllo
di flusso attraverso una \itindex{advertised~window} \textit{advertised
lo stack TCP.} ma alcuni tipi di connessione come quelle ad alta velocità
(sopra i 45Mbit/sec) e quelle che hanno grandi ritardi nel cammino dei
pacchetti (come i satelliti) richiedono una finestra più grande per poter
- ottenere il massimo dalla trasmissione, per questo esiste questa opzione che
+ ottenere il massimo dalla trasmissione. Per questo esiste questa opzione che
indica un fattore di scala da applicare al valore della
\itindex{advertised~window} finestra annunciata\footnote{essendo una nuova
opzione per garantire la compatibilità con delle vecchie implementazioni
inserendola anche lui nel suo SYN di risposta dell'apertura della
connessione.} per la connessione corrente (espresso come numero di bit cui
spostare a sinistra il valore della finestra annunciata inserito nel
- pacchetto).
+ pacchetto). Con Linux è possibile indicare al kernel di far negozioare il
+ fattore di scala in fase di creazione di una connessione tramite la
+ \textit{sysctl} \texttt{tcp\_window\_scaling} (vedi
+ sez.~\ref{sec:sock_ipv4_sysctl}).\footnote{per poter usare questa
+ funzionalità è comunque necessario ampliare le dimensioni dei buffer di
+ ricezione e spedizione, cosa che può essere fatta sia a livello di sistema
+ con le opportune \textit{sysct} (vedi sez.~\ref{sec:sock_ipv4_sysctl}) che
+ a livello di singoli socket con le relative opzioni (vedi
+ sez.~\ref{sec:sock_tcp_udp_options}).}
\item \textit{timestamp option}, è anche questa una nuova opzione necessaria
per le connessioni ad alta velocità per evitare possibili corruzioni di dati