X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=sockctrl.tex;h=9d5279e6ab62856b34ff617697608b440c23c03e;hp=b6bb2c1a91942ff994f3b595f600dd486acb70c3;hb=fa15a3f1ecd64efd8440e46d398fd9976abc3d25;hpb=ae7bf994013ffbf4f5ef1d5a38a18033593e3e9f diff --git a/sockctrl.tex b/sockctrl.tex index b6bb2c1..9d5279e 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -1,6 +1,6 @@ %% 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", @@ -36,8 +36,8 @@ porte o altre proprietà del sistema. \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) @@ -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 - 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 @@ -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 - 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} @@ -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 - 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 @@ -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. -\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 @@ -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 - 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. @@ -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 - 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 @@ -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. -\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 @@ -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ò - 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