con l'invio di un segmento FIN all'altro capo della connessione.} In questo
caso all'invio del messaggio di \textit{keep-alive} si otterrà come risposta
un segmento RST che indica che l'altro capo non riconosce più l'esistenza
-della connessione ed il socket verrà chiuso riportanto un errore di
+della connessione ed il socket verrà chiuso riportando un errore di
\errcode{ECONNRESET}.
Se invece non viene ricevuta nessuna risposta (indice che la macchina non è
una dimensione minima pari a \texttt{SOCK\_MIN\_RCVBUF/2}. Questa opzione
non deve essere utilizzata in codice che vuole essere portabile.
-\item[\const{TCP\_INFO}] permette di ricevere una serie di informazioni
- relative al socket che il kernel restituisce in una speciale struttura
+\item[\const{TCP\_INFO}] opzione, specifica di Linux, ma introdotta anche in
+ altri kernel (ad esempio FreeBSD) di controllare lo stato di un socket TCP
+ in user space. L'opzione restituisce in una speciale struttura
\struct{tcp\_info}, la cui definizione è riportata in
- fig.~\ref{fig:tcp_info_struct}.
+ fig.~\ref{fig:tcp_info_struct}, tutta una serie di dati relativi al socket.
\begin{figure}[!htb]
\footnotesize \centering
\label{fig:tcp_info_struct}
\end{figure}
-\item[\const{TCP\_QUICKACK}] abilita la modalità speciale \textit{quickack}.
+Con questa opzione diventa possibile ricevere una serie di informazioni
+relative al socket così da poter effettuare dei controlli, senza passare
+attraverso delle operazioni di lettura. Ad esempio si può verificare se un
+socket è stato chiuso con una funzione analoga a quella illustrata in
+fig.~\ref{fig:is_closing}, in cui si usa il campo \var{tcpi\_state} di
+\struct{tcp\_info} per controllare lo stato del socket.
-\item[\const{TCP\_CONGESTION}] Introdotta con il kernel 2.6.13.
+\begin{figure}[!htb]
+ \footnotesize \centering
+ \begin{minipage}[c]{15cm}
+ \includestruct{listati/tcp_info.h}
+ \end{minipage}
+ \caption{Codice della funzione \texttt{is\_closing.c}, che controlla lo stato
+ di un socket TCP per verificare se si sta chiudendo.}
+ \label{fig:is_closing}
+\end{figure}
+
+\item[\const{TCP\_QUICKACK}] abilita o disabilita la modalità speciale
+ \textit{quickack}, in cui i pacchetti ACK vengono inviati immediatamente
+ senza le attese talvolta imposte dal normale funzionamento del protocollo
+ TCP. Questa opzione prende un valore logico, e non è permanente, nel senso
+ che si limita a forzare al momento della chiamata un passaggio da o verso la
+ modalità \textit{quickack}; le operazioni successive potrebbero a loro volta
+ entrare o uscire da questa modalità a seconda del processo interno del
+ protocollo o dalle condizioni della connessione (ad esempio in presenza di
+ timeout ritardati per i pacchetti ACK).
+
+\item[\const{TCP\_CONGESTION}] Introdotta con il kernel 2.6.13, non è
+ documentata.
\end{basedescript}
%%% End:
% LocalWords: quest'ultime neigh dev weight cong mod somaxconn Di SIOCINQ DoS
% LocalWords: Documentation SIOCATMARK SIOCOUTQ FIONREAD TIOCOUTQ Denial work
-% LocalWords: netfilter scheduler mark ARP DHCP BOOTP RARP nonlocal sniffer
+% LocalWords: netfilter scheduler mark ARP DHCP BOOTP RARP nonlocal sniffer is
% LocalWords: linux NODELAY MAXSEG CORK KEEPIDLE KEEPINTVL KEEPCNT SYNCNT INFO
% LocalWords: DEFER ACCEPT WINDOW CLAMP QUICKACK CONGESTION ENCAP urgent MSS
% LocalWords: Segment SYN accept advertised window info quickack Nagle ifreq
% LocalWords: ifr ppp union EPERM SIOCGIFNAME dell' interface index IFF NOARP
% LocalWords: SIOCGIFINDEX SIOCGIFFLAGS POINTOPOINT RUNNING PROMISC NOTRAILERS
-% LocalWords: ALLMULTI bundle PORTSEL ifmap AUTOMEDIA DYNAMIC SIOCSIFFLAGS
+% LocalWords: ALLMULTI bundle PORTSEL ifmap AUTOMEDIA DYNAMIC SIOCSIFFLAGS way
% LocalWords: SIOCGIFMETRIC SIOCSIFMETRIC SIOCGIFMTU SIOCSIFMTU SIOCGIFHWADDR
-% LocalWords: SIOCSIFHWADDR SIOCSIFHWBROADCAST SIOCGIFMAP SIOCSIFMAP
-% LocalWords: SIOCADDMULTI SIOCDELMULTI SIOCGIFTXQLEN SIOCSIFTXQLEN
-% LocalWords: SIOCSIFNAME SIOCGIFCONF
+% LocalWords: SIOCSIFHWADDR SIOCSIFHWBROADCAST SIOCGIFMAP SIOCSIFMAP sendfile
+% LocalWords: SIOCADDMULTI SIOCDELMULTI SIOCGIFTXQLEN SIOCSIFTXQLEN three syn
+% LocalWords: SIOCSIFNAME SIOCGIFCONF handshake retries MIN FreeBSD closing Mb
+% LocalWords: abort overflow adv win app bic convergence dsack ecn fack frto
+% LocalWords: intvl probes latency orphans l'ACK SYNQ HSIZE tw buckets mem rfc
+% LocalWords: orphan reordering collapse sack stdurg synack syncookies recycle
+% LocalWords: timestamps scaling vegas avoid westwood