Varie correzioni, completata revisione capitolo sull'I/O su file
[gapil.git] / sockctrl.tex
index b6bb2c1a91942ff994f3b595f600dd486acb70c3..9d5279e6ab62856b34ff617697608b440c23c03e 100644 (file)
@@ -1,6 +1,6 @@
 %% sockctrl.tex
 %%
 %% sockctrl.tex
 %%
-%% Copyright (C) 2004-2018 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2004-2019 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Prefazione",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Prefazione",
@@ -36,8 +36,8 @@ porte o altre proprietà del sistema.
 \label{sec:sock_resolver}
 
 \itindbeg{resolver} La risoluzione dei nomi è associata tradizionalmente al
 \label{sec:sock_resolver}
 
 \itindbeg{resolver} La risoluzione dei nomi è associata tradizionalmente al
-servizio del \itindex{Domain~Name~Service} \textit{Domain Name Service} che
-permette di identificare le macchine su internet invece che per numero IP
+servizio del \itindex{Domain~Name~Service~(DNS)} \textit{Domain Name Service}
+che permette di identificare le macchine su internet invece che per numero IP
 attraverso il relativo \textsl{nome a dominio}.\footnote{non staremo ad
   entrare nei dettagli della definizione di cosa è un nome a dominio, dandolo
   per noto, una introduzione alla problematica si trova in \cite{AGL} (cap.~9)
 attraverso il relativo \textsl{nome a dominio}.\footnote{non staremo ad
   entrare nei dettagli della definizione di cosa è un nome a dominio, dandolo
   per noto, una introduzione alla problematica si trova in \cite{AGL} (cap.~9)
@@ -2352,12 +2352,12 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
   L'opzione utilizza per \param{optval} un intero usato come valore logico.
 
   Quando viene abilitata gli errori riportati da messaggi ICMP per un socket
   L'opzione utilizza per \param{optval} un intero usato come valore logico.
 
   Quando viene abilitata gli errori riportati da messaggi ICMP per un socket
-  UDP non vengono passati al programma in user space. Con le versioni 2.0.x
-  del kernel erano anche abilitate altre opzioni di compatibilità per i socket
-  raw (modifiche casuali agli header, perdita del flag di \textit{broadcast})
-  che sono state rimosse con il passaggio al 2.2; è consigliato correggere i
-  programmi piuttosto che usare questa funzione. Dal kernel 2.4 viene
-  ignorata, e dal 2.6 genera un messaggio di log del kernel.
+  UDP non vengono passati al programma in \textit{user space}. Con le versioni
+  2.0.x del kernel erano anche abilitate altre opzioni di compatibilità per i
+  socket raw (modifiche casuali agli header, perdita del flag di
+  \textit{broadcast}) che sono state rimosse con il passaggio al 2.2; è
+  consigliato correggere i programmi piuttosto che usare questa funzione. Dal
+  kernel 2.4 viene ignorata, e dal 2.6 genera un messaggio di log del kernel.
 
 \item[\constd{SO\_BUSY\_POLL}] questa opzione, presente dal kernel 3.11,
   imposta un tempo approssimato in microsecondi, per cui in caso di ricezione
 
 \item[\constd{SO\_BUSY\_POLL}] questa opzione, presente dal kernel 3.11,
   imposta un tempo approssimato in microsecondi, per cui in caso di ricezione
@@ -3315,12 +3315,11 @@ di \param{optlen} con una struttura \struct{ip\_msfilter} contenente
   questo protocollo, senza doversi curare di verificarne la
   validità.\footnote{l'attacco viene in genere portato per causare un
     \textit{Denial of Service} aumentando il consumo di CPU del router nella
   questo protocollo, senza doversi curare di verificarne la
   validità.\footnote{l'attacco viene in genere portato per causare un
     \textit{Denial of Service} aumentando il consumo di CPU del router nella
-    verifica dell'autenticità di un gran numero di pacchetti di pacchetti
-    falsi; questi, arrivando da sorgenti diverse da un router adiacente, non
-    potrebbero più avere un TTL di 255 anche qualora questo fosse stato il
-    valore di partenza, e l'impostazione dell'opzione consente di scartarli
-    senza carico aggiuntivo sulla CPU (che altrimenti dovrebbe calcolare una
-    checksum).}
+    verifica dell'autenticità di un gran numero di pacchetti falsi; questi,
+    arrivando da sorgenti diverse da un router adiacente, non potrebbero più
+    avere un TTL di 255 anche qualora questo fosse stato il valore di
+    partenza, e l'impostazione dell'opzione consente di scartarli senza carico
+    aggiuntivo sulla CPU (che altrimenti dovrebbe calcolare una checksum).}
 
 \itindbeg{Path~MTU}
 \item[\constd{IP\_MTU}] Permette di leggere il valore della \textit{Path MTU}
 
 \itindbeg{Path~MTU}
 \item[\constd{IP\_MTU}] Permette di leggere il valore della \textit{Path MTU}
@@ -3805,7 +3804,7 @@ quantità di dettagli è fornita nel seguente elenco:
 
 \item[\constd{TCP\_INFO}] questa opzione, specifica di Linux, ma introdotta
   anche in altri kernel (ad esempio FreeBSD) permette di controllare lo stato
 
 \item[\constd{TCP\_INFO}] questa opzione, specifica di Linux, ma introdotta
   anche in altri kernel (ad esempio FreeBSD) permette di controllare lo stato
-  interno di un socket TCP direttamente da un programma in user space.
+  interno di un socket TCP direttamente da un programma in \textit{user space}.
   L'opzione restituisce in una speciale struttura \struct{tcp\_info}, la cui
   definizione è riportata in fig.~\ref{fig:tcp_info_struct}, tutta una serie
   di dati che il kernel mantiene, relativi al socket.  Anche questa opzione
   L'opzione restituisce in una speciale struttura \struct{tcp\_info}, la cui
   definizione è riportata in fig.~\ref{fig:tcp_info_struct}, tutta una serie
   di dati che il kernel mantiene, relativi al socket.  Anche questa opzione
@@ -4643,7 +4642,7 @@ di manuale accessibile con \texttt{man 7 ip}, sono i seguenti:
   disabilitare globalmente il procedimento con questo parametro ha pesanti
   ripercussioni in termini di prestazioni di rete.
 
   disabilitare globalmente il procedimento con questo parametro ha pesanti
   ripercussioni in termini di prestazioni di rete.
 
-\item[\sysctlrelfiled{net/ipv4}{ip\_always\_defrag}] fa si che tutti i
+\item[\sysctlrelfiled{net/ipv4}{ip\_always\_defrag}] fa sì che tutti i
   pacchetti IP frammentati siano riassemblati, anche in caso in successivo
   immediato inoltro.\footnote{introdotto con il kernel 2.2.13, nelle versioni
     precedenti questo comportamento poteva essere solo stabilito un volta per
   pacchetti IP frammentati siano riassemblati, anche in caso in successivo
   immediato inoltro.\footnote{introdotto con il kernel 2.2.13, nelle versioni
     precedenti questo comportamento poteva essere solo stabilito un volta per
@@ -4710,7 +4709,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
 
 \item[\sysctlrelfiled{net/ipv4}{tcp\_app\_win}] indica la frazione della
   finestra TCP che viene riservata per gestire l'overhaed dovuto alla
 
 \item[\sysctlrelfiled{net/ipv4}{tcp\_app\_win}] indica la frazione della
   finestra TCP che viene riservata per gestire l'overhaed dovuto alla
-  bufferizzazione. Prende un valore valore intero che consente di calcolare la
+  bufferizzazione. Prende un valore intero che consente di calcolare la
   dimensione in byte come il massimo fra la MSS e
   $\texttt{window}/2^\texttt{tcp\_app\_win}$. Un valore nullo significa che
   non viene riservato nessuno spazio; il valore di default è 31.
   dimensione in byte come il massimo fra la MSS e
   $\texttt{window}/2^\texttt{tcp\_app\_win}$. Un valore nullo significa che
   non viene riservato nessuno spazio; il valore di default è 31.
@@ -4736,8 +4735,8 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
 \item[\sysctlrelfiled{net/ipv4}{tcp\_ecn}] abilita il meccanismo della
   \textit{Explicit Congestion Notification} (in breve ECN) nelle connessioni
   TCP. Prende valore logico che di default è disabilitato. La \textit{Explicit
 \item[\sysctlrelfiled{net/ipv4}{tcp\_ecn}] abilita il meccanismo della
   \textit{Explicit Congestion Notification} (in breve ECN) nelle connessioni
   TCP. Prende valore logico che di default è disabilitato. La \textit{Explicit
-    Congestion Notification} \itindex{Explicit~Congestion~Notification} è un
-  meccanismo che consente di notificare quando una rotta o una rete è
+    Congestion Notification} \itindex{Explicit~Congestion~Notification~(ECN)}
+  è un meccanismo che consente di notificare quando una rotta o una rete è
   congestionata da un eccesso di traffico,\footnote{il meccanismo è descritto
     in dettaglio nell'\href{http://www.ietf.org/rfc/rfc3168.txt}{RFC~3168}
     mentre gli effetti sulle prestazioni del suo utilizzo sono documentate
   congestionata da un eccesso di traffico,\footnote{il meccanismo è descritto
     in dettaglio nell'\href{http://www.ietf.org/rfc/rfc3168.txt}{RFC~3168}
     mentre gli effetti sulle prestazioni del suo utilizzo sono documentate
@@ -4789,13 +4788,12 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
   risposta prima che il kernel decida che la connessione è caduta e la
   termini. Prende un valore intero che di default è 9.
 
   risposta prima che il kernel decida che la connessione è caduta e la
   termini. Prende un valore intero che di default è 9.
 
-\item[\sysctlrelfiled{net/ipv4}{tcp\_keepalive\_time}] indica il numero
-  di secondi che devono passare senza traffico sulla connessione prima che il
-  kernel inizi ad inviare pacchetti di pacchetti di
-  \textit{keepalive}.\footnote{ha effetto solo per i socket per cui si è
-    impostata l'opzione \const{SO\_KEEPALIVE} (vedi
-    sez.~\ref{sec:sock_options_main}.}  Prende un valore intero che di default
-  è 7200, pari a due ore.
+\item[\sysctlrelfiled{net/ipv4}{tcp\_keepalive\_time}] indica il numero di
+  secondi che devono passare senza traffico sulla connessione prima che il
+  kernel inizi ad inviare pacchetti di \textit{keepalive}.\footnote{ha effetto
+    solo per i socket per cui si è impostata l'opzione \const{SO\_KEEPALIVE}
+    (vedi sez.~\ref{sec:sock_options_main}.}  Prende un valore intero che di
+  default è 7200, pari a due ore.
 
 \item[\sysctlrelfiled{net/ipv4}{tcp\_low\_latency}] indica allo stack
   TCP del kernel di ottimizzare il comportamento per ottenere tempi di latenza
 
 \item[\sysctlrelfiled{net/ipv4}{tcp\_low\_latency}] indica allo stack
   TCP del kernel di ottimizzare il comportamento per ottenere tempi di latenza
@@ -4993,11 +4991,12 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
 \item[\sysctlrelfiled{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ò
 \item[\sysctlrelfiled{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
-    \itindex{Network~Address~Translation} \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 \textit{netfilter}.}
+  causare problemi con il NAT.\footnote{la
+    \itindex{Network~Address~Translation~(NAT)} \textit{Network Address
+      Translation} (abbreviato in NAT) è 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
+    \textit{netfilter}.}
 
 \item[\sysctlrelfiled{net/ipv4}{tcp\_tw\_reuse}] abilita il riutilizzo
   dello stato \texttt{TIME\_WAIT} quando questo è sicuro dal punto di vista
 
 \item[\sysctlrelfiled{net/ipv4}{tcp\_tw\_reuse}] abilita il riutilizzo
   dello stato \texttt{TIME\_WAIT} quando questo è sicuro dal punto di vista