X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=sockctrl.tex;h=3a2afa7b8a466f9a04caa67db9c048eecde84974;hp=51e489c9ec7c1e0a78adc4c3599dea71e985d9a9;hb=ffb12837c5ed8ccc095bc9c88349cd19b5e6b472;hpb=4e1da5b259a86278710be32441de7b88b9287ec1 diff --git a/sockctrl.tex b/sockctrl.tex index 51e489c..3a2afa7 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -1,6 +1,6 @@ %% sockctrl.tex %% -%% Copyright (C) 2004-2011 Simone Piccardi. Permission is granted to +%% Copyright (C) 2004-2012 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", @@ -145,7 +145,7 @@ tab.~\ref{tab:sys_NSS_classes}. \hline \hline \texttt{passwd} & Corrispondenze fra nome dell'utente e relative - proprietà (\acr{uid}, gruppo principale, ecc.).\\ + proprietà (\ids{UID}, gruppo principale, ecc.).\\ \texttt{shadow} & Corrispondenze fra username e password dell'utente (e altre informazioni relative alle password).\\ \texttt{group} & Corrispondenze fra nome del gruppo e proprietà dello @@ -269,16 +269,16 @@ gli indirizzi dei server DNS da contattare e l'ordine delle ricerche; se non sono specificati server verrà utilizzato l'indirizzo locale, e se non è definito un dominio di default sarà usato quello associato con l'indirizzo locale (ma questo può essere sovrascritto con l'uso della variabile di -ambiente \texttt{LOCALDOMAIN}). In genere non è necessario eseguire questa +ambiente \envvar{LOCALDOMAIN}). In genere non è necessario eseguire questa funzione direttamente in quanto viene automaticamente chiamata la prima volta che si esegue una delle altre. Le impostazioni e lo stato del \textit{resolver} vengono mantenuti in una serie di variabili raggruppate nei campi di una apposita struttura \var{\_res} -usata da tutte queste funzioni. Essa viene definita in \file{resolv.h} ed è -utilizzata internamente alle funzioni essendo definita come variabile globale; -questo consente anche di accedervi direttamente all'interno di un qualunque -programma, una volta che la sia opportunamente dichiarata come: +usata da tutte queste funzioni. Essa viene definita in \headfile{resolv.h} ed +è utilizzata internamente alle funzioni essendo definita come variabile +globale; questo consente anche di accedervi direttamente all'interno di un +qualunque programma, una volta che la sia opportunamente dichiarata come: \includecodesnip{listati/resolv_option.c} Tutti i campi della struttura sono ad uso interno, e vengono usualmente @@ -320,7 +320,7 @@ comportamento del \textit{resolver}. \const{RES\_INSECURE1} & Blocca i controlli di sicurezza di tipo 1.\\ \const{RES\_INSECURE2} & Blocca i controlli di sicurezza di tipo 2.\\ \const{RES\_NOALIASES} & Blocca l'uso della variabile di ambiente - \texttt{HOSTALIASES}.\\ + \envvar{HOSTALIASES}.\\ \const{RES\_USE\_INET6} & Restituisce indirizzi IPv6 con \func{gethostbyname}. \\ \const{RES\_ROTATE} & Ruota la lista dei server DNS dopo ogni @@ -354,22 +354,23 @@ Non tratteremo il significato degli altri campi non essendovi necessità di modificarli direttamente; gran parte di essi sono infatti impostati dal contenuto dei file di configurazione, mentre le funzionalità controllate da alcuni di esse possono essere modificate con l'uso delle opportune variabili -di ambiente come abbiamo visto per \texttt{LOCALDOMAIN}. In particolare con -\texttt{RES\_RETRY} si soprassiede il valore del campo \var{retry} che +di ambiente come abbiamo visto per \envvar{LOCALDOMAIN}. In particolare con +\envvar{RES\_RETRY} si soprassiede il valore del campo \var{retry} che controlla quante volte viene ripetuto il tentativo di connettersi ad un server DNS prima di dichiarare fallimento; il valore di default è 4, un valore nullo -significa bloccare l'uso del DNS. Infine con \texttt{RES\_TIMEOUT} si +significa bloccare l'uso del DNS. Infine con \envvar{RES\_TIMEOUT} si soprassiede il valore del campo \var{retrans},\footnote{preimpostato al valore - della omonima costante \const{RES\_TIMEOUT} di \file{resolv.h}.} che è il -valore preso come base (in numero di secondi) per definire la scadenza di una -richiesta, ciascun tentativo di richiesta fallito viene ripetuto raddoppiando -il tempo di scadenza per il numero massimo di volte stabilito da + della omonima costante \const{RES\_TIMEOUT} di \headfile{resolv.h}.} che è +il valore preso come base (in numero di secondi) per definire la scadenza di +una richiesta, ciascun tentativo di richiesta fallito viene ripetuto +raddoppiando il tempo di scadenza per il numero massimo di volte stabilito da \texttt{RES\_RETRY}. La funzione di interrogazione principale è \funcd{res\_query}, che serve ad eseguire una richiesta ad un server DNS per un nome a dominio -\textsl{completamente specificato} (quello che si chiama FQDN, \textit{Fully - Qualified Domain Name}); il suo prototipo è: +\textsl{completamente specificato} (quello che si chiama +\itindex{Fully~Qualified~Domain~Name~(FQDN)} FQDN, \textit{Fully Qualified + Domain Name}); il suo prototipo è: \begin{functions} \headdecl{netinet/in.h} @@ -453,19 +454,19 @@ tab.~\ref{tab:DNS_address_class}.\footnote{esisteva in realtà anche una classe Come accennato le tipologie di dati che sono mantenibili su un server DNS sono diverse, ed a ciascuna di essa corrisponde un diverso tipo di \textit{resource record}. L'elenco delle costanti\footnote{ripreso dai file di dichiarazione - \file{arpa/nameser.h} e \file{arpa/nameser\_compat.h}.} che definiscono i -valori che si possono usare per l'argomento \param{type} per specificare il -tipo di \textit{resource record} da richiedere è riportato in + \headfile{arpa/nameser.h} e \headfile{arpa/nameser\_compat.h}.} che +definiscono i valori che si possono usare per l'argomento \param{type} per +specificare il tipo di \textit{resource record} da richiedere è riportato in tab.~\ref{tab:DNS_record_type}; le costanti (tolto il \texttt{T\_} iniziale) hanno gli stessi nomi usati per identificare i record nei file di zona di BIND,\footnote{BIND, acronimo di \textit{Berkley Internet Name Domain}, è una implementazione di un server DNS, ed, essendo utilizzata nella stragrande - maggioranza dei casi, fa da riferimento; i dati relativi ad un certo - dominio (cioè i suoi \textit{resource record} vengono mantenuti in quelli - che sono usualmente chiamati \textsl{file di zona}, e in essi ciascun tipo - di dominio è identificato da un nome che è appunto identico a quello delle - costanti di tab.~\ref{tab:DNS_record_type} senza il \texttt{T\_} iniziale.} -e che normalmente sono anche usati come nomi per indicare i record. + maggioranza dei casi, fa da riferimento; i dati relativi ad un certo dominio + (cioè i suoi \textit{resource record} vengono mantenuti in quelli che sono + usualmente chiamati \textsl{file di zona}, e in essi ciascun tipo di dominio + è identificato da un nome che è appunto identico a quello delle costanti di + tab.~\ref{tab:DNS_record_type} senza il \texttt{T\_} iniziale.} e che +normalmente sono anche usati come nomi per indicare i record. \begin{table}[!htb] \centering @@ -710,7 +711,7 @@ Determina l'indirizzo di tipo \param{af} associato al nome a dominio In questo caso la funzione prende un secondo argomento \param{af} che indica (i soli valori consentiti sono \const{AF\_INET} o \const{AF\_INET6}, per -questo è necessario l'uso di \texttt{sys/socket.h}) la famiglia di indirizzi +questo è necessario l'uso di \headfile{sys/socket.h}) la famiglia di indirizzi che dovrà essere utilizzata nei risultati restituiti dalla funzione. Per tutto il resto la funzione è identica a \func{gethostbyname}, ed identici sono i suoi risultati. @@ -1281,7 +1282,7 @@ tipo \struct{addrinfo} contenenti tutte le informazioni ottenute. \end{figure} Come illustrato la struttura \struct{addrinfo}, la cui definizione\footnote{la - definizione è ripresa direttamente dal file \texttt{netdb.h} in questa + definizione è ripresa direttamente dal file \headfile{netdb.h} in questa struttura viene dichiarata, la pagina di manuale riporta \type{size\_t} come tipo di dato per il campo \var{ai\_addrlen}, qui viene usata quanto previsto dallo standard POSIX, in cui viene utilizzato \type{socklen\_t}; i due tipi @@ -1671,10 +1672,10 @@ terminate dal carattere NUL, a meno che queste non debbano essere troncate qualora la loro dimensione ecceda quelle specificate dagli argomenti \param{hostlen} e \param{servlen}. Sono comunque definite le due costanti \const{NI\_MAXHOST} e \const{NI\_MAXSERV}\footnote{in Linux le due costanti - sono definite in \file{netdb.h} ed hanno rispettivamente il valore 1024 e - 12.} che possono essere utilizzate come limiti massimi. In caso di errore -viene restituito invece un codice che assume gli stessi valori illustrati in -tab.~\ref{tab:addrinfo_error_code}. + sono definite in \headfile{netdb.h} ed hanno rispettivamente il valore 1024 + e 12.} che possono essere utilizzate come limiti massimi. In caso di +errore viene restituito invece un codice che assume gli stessi valori +illustrati in tab.~\ref{tab:addrinfo_error_code}. A questo punto possiamo fornire degli esempi di utilizzo della nuova interfaccia, adottandola per le precedenti implementazioni del client e del @@ -1752,7 +1753,7 @@ valore del relativo puntatore precedentemente (\texttt{\small 17}) salvato. Si noti come per la funzione sia del tutto irrilevante se la struttura ritornata contiene indirizzi IPv6 o IPv4, in quanto si fa uso direttamente dei dati relativi alle strutture degli indirizzi di \struct{addrinfo} che sono -\textsl{opachi} rispetto all'uso della funzione \func{connect}. +\index{tipo!opaco} opachi rispetto all'uso della funzione \func{connect}. \begin{figure}[!htbp] \footnotesize \centering @@ -1947,7 +1948,7 @@ Il quarto argomento, \param{optval} è un puntatore ad una zona di memoria che contiene i dati che specificano il valore dell'opzione che si vuole passare al socket, mentre l'ultimo argomento \param{optlen},\footnote{questo argomento è in realtà sempre di tipo \ctyp{int}, come era nelle \acr{libc4} e - \acr{libc5}; l'uso di \ctyp{socklen\_t} è stato introdotto da POSIX (valgono + \acr{libc5}; l'uso di \type{socklen\_t} è stato introdotto da POSIX (valgono le stesse considerazioni per l'uso di questo tipo di dato fatte in sez.~\ref{sec:TCP_func_accept}) ed adottato dalle \acr{glibc}.} è la dimensione in byte dei dati presenti all'indirizzo indicato da \param{optval}. @@ -2272,10 +2273,10 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni: per mantenere dati amministrativi e strutture interne, e solo una parte viene usata come buffer per i dati, mentre il valore letto da \func{getsockopt} e quello riportato nei vari parametri di - \textit{sysctl}\footnote{cioè \procrelfile{/proc/sys/net/core}{wmem\_max} e - \procrelfile{/proc/sys/net/core}{rmem\_max} in \texttt{/proc/sys/net/core} - e \procrelfile{/proc/sys/net/ipv4}{tcp\_wmem} e - \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem} in + \textit{sysctl}\footnote{cioè \sysctlrelfile{net/core}{wmem\_max} e + \sysctlrelfile{net/core}{rmem\_max} in \texttt{/proc/sys/net/core} + e \sysctlrelfile{net/ipv4}{tcp\_wmem} e + \sysctlrelfile{net/ipv4}{tcp\_rmem} in \texttt{/proc/sys/net/ipv4}, vedi sez.~\ref{sec:sock_sysctl}.} indica la memoria effettivamente impiegata. Si tenga presente inoltre che le modifiche alle dimensioni dei buffer di ricezione e trasmissione, per poter @@ -2287,7 +2288,7 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni: connessioni (è pertanto usata con i socket TCP ed ignorata per UDP) e modifica il comportamento delle funzioni \func{close} e \func{shutdown}. L'opzione richiede che l'argomento \param{optval} sia una struttura di tipo - \struct{linger}, definita in \texttt{sys/socket.h} ed illustrata in + \struct{linger}, definita in \headfile{sys/socket.h} ed illustrata in fig.~\ref{fig:sock_linger_struct}. Maggiori dettagli sul suo funzionamento sono forniti in sez.~\ref{sec:sock_options_main}. @@ -2736,7 +2737,8 @@ socket che usano il protocollo IPv4.\footnote{come per le precedenti opzioni livello da utilizzare è \const{SOL\_IP} (o l'equivalente \const{IPPROTO\_IP}); si è riportato un elenco di queste opzioni in tab.~\ref{tab:sock_opt_iplevel}. Le costanti indicanti le opzioni e tutte le altre costanti ad esse collegate -sono definite in \file{netinet/ip.h}, ed accessibili includendo detto file. +sono definite in \headfile{netinet/ip.h}, ed accessibili includendo detto +file. \begin{table}[!htb] \centering @@ -3102,10 +3104,11 @@ riportate le varie opzioni disponibili in tab.~\ref{tab:sock_opt_tcplevel}, dove sono elencate le rispettive costanti da utilizzare come valore per l'argomento \param{optname}. Dette costanti e tutte le altre costanti e strutture collegate all'uso delle opzioni TCP sono definite in -\file{netinet/tcp.h}, ed accessibili includendo detto file.\footnote{in realtà - questo è il file usato dalle librerie; la definizione delle opzioni - effettivamente supportate da Linux si trova nel file \texttt{linux/tcp.h}, - dal quale si sono estratte le costanti di tab.~\ref{tab:sock_opt_tcplevel}.} +\headfile{netinet/tcp.h}, ed accessibili includendo detto file.\footnote{in + realtà questo è il file usato dalle librerie; la definizione delle opzioni + effettivamente supportate da Linux si trova nel file + \texttt{include/linux/tcp.h} dei sorgenti del kernel, dal quale si sono + estratte le costanti di tab.~\ref{tab:sock_opt_tcplevel}.} \begin{table}[!htb] \centering @@ -3451,29 +3454,21 @@ quantità di dettagli è fornita nel seguente elenco: \hline reno& -- &Algoritmo tradizionale, usato in caso di assenza degli altri.\\ \texttt{bic} &\texttt{TCP\_CONG\_BIC} & - \href{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index.htm} - {\textsf{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index.htm}}.\\ + \url{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index.htm}.\\ \texttt{cubic} &\texttt{TCP\_CONG\_CUBIC} & - \href{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index.htm} - {\textsf{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index.htm}}.\\ + \url{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index.htm}.\\ \texttt{highspeed}&\texttt{TCP\_CONG\_HSTCP} & - \href{http://www.icir.org/floyd/hstcp.html} - {\textsf{http://www.icir.org/floyd/hstcp.html}}.\\ + \url{http://www.icir.org/floyd/hstcp.html}.\\ \texttt{htcp} &\texttt{TCP\_CONG\_HTCP} & - \href{http://www.hamilton.ie/net/htcp/} - {\textsf{http://www.hamilton.ie/net/htcp/}}.\\ + \url{http://www.hamilton.ie/net/htcp/}.\\ \texttt{hybla} &\texttt{TCP\_CONG\_HYBLA} & - \href{http://www.danielinux.net/projects.html} - {\textsf{http://www.danielinux.net/projects.html}}.\\ + \url{http://www.danielinux.net/projects.html}.\\ \texttt{scalable}&\texttt{TCP\_CONG\_SCALABLE}& - \href{http://www.deneholme.net/tom/scalable/} - {\textsf{http://www.deneholme.net/tom/scalable/}}.\\ + \url{http://www.deneholme.net/tom/scalable/}.\\ \texttt{vegas} &\texttt{TCP\_CONG\_VEGAS} & - \href{http://www.cs.arizona.edu/protocols/} - {\textsf{http://www.cs.arizona.edu/protocols/}}.\\ + \url{http://www.cs.arizona.edu/protocols/}.\\ \texttt{westwood}&\texttt{TCP\_CONG\_WESTWOOD}& - \href{http://www.cs.ucla.edu/NRL/hpi/tcpw/} - {\textsf{http://www.cs.ucla.edu/NRL/hpi/tcpw/}}.\\ + \url{http://www.cs.ucla.edu/NRL/hpi/tcpw/}.\\ % \texttt{}&\texttt{}& .\\ \hline \end{tabular} @@ -3490,10 +3485,11 @@ ridotto di opzioni, riportate in tab.~\ref{tab:sock_opt_udplevel}; anche in questo caso per poterle utilizzare occorrerà impostare l'opportuno valore per l'argomento \param{level}, che è \const{SOL\_UDP} (o l'equivalente \const{IPPROTO\_UDP}). Le costanti che identificano dette opzioni sono -definite in \file{netinet/udp.h}, ed accessibili includendo detto +definite in \headfile{netinet/udp.h}, ed accessibili includendo detto file.\footnote{come per TCP, la definizione delle opzioni effettivamente - supportate dal kernel si trova in realtà nel file \texttt{linux/udp.h}, dal - quale si sono estratte le costanti di tab.~\ref{tab:sock_opt_udplevel}.} + supportate dal kernel si trova in realtà nel file + \texttt{include/linux/udp.h}, dal quale si sono estratte le costanti di + tab.~\ref{tab:sock_opt_udplevel}.} \begin{table}[!htb] \centering @@ -3581,11 +3577,11 @@ identificano le operazioni sono le seguenti: accennato in sez.~\ref{sec:net_tcp}.} dei pacchetti sulla rete. \item[\const{SIOCSPGRP}] imposta il processo o il \itindex{process~group} - \textit{process group} a cui inviare i segnali \const{SIGIO} e - \const{SIGURG} quando viene completata una operazione di I/O asincrono o + \textit{process group} a cui inviare i segnali \signal{SIGIO} e + \signal{SIGURG} quando viene completata una operazione di I/O asincrono o arrivano dei dati urgenti \itindex{out-of-band} (\texttt{out-of-band}). Il terzo argomento deve essere un puntatore ad una variabile di tipo - \type{pid\_t}; un valore positivo indica direttamente il \acr{pid} del + \type{pid\_t}; un valore positivo indica direttamente il \ids{PID} del processo, mentre un valore negativo indica (col valore assoluto) il \textit{process group}. Senza privilegi di amministratore o la capability \const{CAP\_KILL} si può impostare solo se stessi o il proprio @@ -3593,15 +3589,15 @@ identificano le operazioni sono le seguenti: \item[\const{SIOCGPGRP}] legge le impostazioni presenti sul socket relativamente all'eventuale processo o \itindex{process~group} - \textit{process group} cui devono essere inviati i segnali \const{SIGIO} e - \const{SIGURG}. Come per \const{SIOCSPGRP} l'argomento passato deve un + \textit{process group} cui devono essere inviati i segnali \signal{SIGIO} e + \signal{SIGURG}. Come per \const{SIOCSPGRP} l'argomento passato deve un puntatore ad una variabile di tipo \type{pid\_t}, con lo stesso significato. Qualora non sia presente nessuna impostazione verrà restituito un valore nullo. \item[\const{FIOASYNC}] Abilita o disabilita la modalità di I/O asincrono sul socket. Questo significa (vedi sez.~\ref{sec:file_asyncronous_operation}) - che verrà inviato il segnale di \const{SIGIO} (o quanto impostato con + che verrà inviato il segnale di \signal{SIGIO} (o quanto impostato con \const{F\_SETSIG}, vedi sez.~\ref{sec:file_fcntl}) in caso di eventi di I/O sul socket. \end{basedescript} @@ -3643,7 +3639,7 @@ il primo campo della struttura, \var{ifr\_name} per specificare il nome dell'interfaccia su cui si vuole operare (ad esempio \texttt{eth0}, \texttt{ppp0}, ecc.), e si inseriscono (o ricevono) i valori relativi alle diversa caratteristiche e funzionalità nel secondo campo, che come si può -notare è definito come una \ctyp{union} proprio in quanto il suo significato +notare è definito come una \direct{union} proprio in quanto il suo significato varia a secondo dell'operazione scelta. Si tenga inoltre presente che alcune di queste operazioni (in particolare @@ -3843,7 +3839,7 @@ questo buffer deve essere specificata nel campo \var{ifc\_len} di \var{ifc\_req}. Qualora il buffer sia stato allocato come una stringa, il suo indirizzo potrà essere fornito usando il campo \var{ifc\_buf}.\footnote{si noti che l'indirizzo del buffer è definito in \struct{ifconf} con una - \ctyp{union}, questo consente di utilizzare una delle due forme a piacere.} + \direct{union}, questo consente di utilizzare una delle due forme a piacere.} La funzione restituisce nel buffer indicato una serie di strutture \struct{ifreq} contenenti nel campo \var{ifr\_name} il nome dell'interfaccia e @@ -4035,19 +4031,19 @@ socket. Quelli descritti anche nella pagina di manuale, accessibile con \texttt{man 7 socket} sono i seguenti: \begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}} -\item[\procrelfile{/proc/sys/net/core}{rmem\_default}] imposta la dimensione +\item[\sysctlrelfile{net/core}{rmem\_default}] imposta la dimensione di default del buffer di ricezione (cioè per i dati in ingresso) dei socket. -\item[\procrelfile{/proc/sys/net/core}{rmem\_max}] imposta la dimensione +\item[\sysctlrelfile{net/core}{rmem\_max}] imposta la dimensione massima che si può assegnare al buffer di ricezione dei socket attraverso l'uso dell'opzione \const{SO\_RCVBUF}. -\item[\procrelfile{/proc/sys/net/core}{wmem\_default}] imposta la dimensione +\item[\sysctlrelfile{net/core}{wmem\_default}] imposta la dimensione di default del buffer di trasmissione (cioè per i dati in uscita) dei socket. -\item[\procrelfile{/proc/sys/net/core}{wmem\_max}] imposta la dimensione +\item[\sysctlrelfile{net/core}{wmem\_max}] imposta la dimensione massima che si può assegnare al buffer di trasmissione dei socket attraverso l'uso dell'opzione \const{SO\_SNDBUF}. -\item[\procrelfile{/proc/sys/net/core}{message\_cost}, - \procrelfile{/proc/sys/net/core}{message\_burst}] contengono le impostazioni +\item[\sysctlrelfile{net/core}{message\_cost}, + \sysctlrelfile{net/core}{message\_burst}] contengono le impostazioni del \itindex{bucket~filter} \textit{bucket filter} che controlla l'emissione di messaggi di avviso da parte del kernel per eventi relativi a problemi sulla rete, imponendo un limite che consente di prevenire eventuali attacchi @@ -4077,10 +4073,10 @@ socket. Quelli descritti anche nella pagina di manuale, accessibile con emissione (verranno accettati inizialmente fino ad un massimo di \texttt{message\_cost/message\_burst} messaggi). -\item[\procrelfile{/proc/sys/net/core}{netdev\_max\_backlog}] numero massimo +\item[\sysctlrelfile{net/core}{netdev\_max\_backlog}] numero massimo di pacchetti che possono essere contenuti nella coda di ingresso generale. -\item[\procrelfile{/proc/sys/net/core}{optmem\_max}] lunghezza massima dei +\item[\sysctlrelfile{net/core}{optmem\_max}] lunghezza massima dei dati ancillari e di controllo (vedi sez.~\ref{sec:net_ancillary_data}). \end{basedescript} @@ -4089,31 +4085,31 @@ file, la cui documentazione dovrebbe essere mantenuta nei sorgenti del kernel, nel file \texttt{Documentation/networking/ip-sysctl.txt}; la maggior parte di questi però non è documentato: \begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}} -\item[\procrelfile{/proc/sys/net/core}{dev\_weight}] blocco di lavoro +\item[\sysctlrelfile{net/core}{dev\_weight}] blocco di lavoro (\textit{work quantum}) dello scheduler di processo dei pacchetti. % TODO da documentare meglio -\item[\procrelfile{/proc/sys/net/core}{lo\_cong}] valore per l'occupazione +\item[\sysctlrelfile{net/core}{lo\_cong}] valore per l'occupazione della coda di ricezione sotto la quale si considera di avere una bassa congestione. -\item[\procrelfile{/proc/sys/net/core}{mod\_cong}] valore per l'occupazione +\item[\sysctlrelfile{net/core}{mod\_cong}] valore per l'occupazione della coda di ricezione sotto la quale si considera di avere una congestione moderata. -\item[\procrelfile{/proc/sys/net/core}{no\_cong}] valore per l'occupazione +\item[\sysctlrelfile{net/core}{no\_cong}] valore per l'occupazione della coda di ricezione sotto la quale si considera di non avere congestione. -\item[\procrelfile{/proc/sys/net/core}{no\_cong\_thresh}] valore minimo +\item[\sysctlrelfile{net/core}{no\_cong\_thresh}] valore minimo (\textit{low water mark}) per il riavvio dei dispositivi congestionati. - % \item[\procrelfile{/proc/sys/net/core}{netdev\_fastroute}] è presente + % \item[\sysctlrelfile{net/core}{netdev\_fastroute}] è presente % soltanto quando si è compilato il kernel con l'apposita opzione di % ottimizzazione per l'uso come router. -\item[\procrelfile{/proc/sys/net/core}{somaxconn}] imposta la dimensione +\item[\sysctlrelfile{net/core}{somaxconn}] imposta la dimensione massima utilizzabile per il \textit{backlog} della funzione \func{listen} (vedi sez.~\ref{sec:TCP_func_listen}), e corrisponde al valore della costante \const{SOMAXCONN}; il suo valore di default è 128. @@ -4135,7 +4131,7 @@ protocollo IP in quanto tale, che sono descritti anche nella relativa pagina di manuale accessibile con \texttt{man 7 ip}, sono i seguenti: \begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}} -\item[\procrelfile{/proc/sys/net/ipv4}{ip\_default\_ttl}] imposta il valore di +\item[\sysctlrelfile{net/ipv4}{ip\_default\_ttl}] imposta il valore di default per il campo TTL (vedi sez.~\ref{sec:IP_header}) di tutti i pacchetti uscenti, stabilendo così il numero massimo di router che i pacchetti possono attraversare. Il valore può essere modificato anche per il @@ -4148,12 +4144,12 @@ di manuale accessibile con \texttt{man 7 ip}, sono i seguenti: quanto in caso di problemi di routing si allunga inutilmente il numero di ritrasmissioni. -\item[\procrelfile{/proc/sys/net/ipv4}{ip\_forward}] abilita l'inoltro dei +\item[\sysctlrelfile{net/ipv4}{ip\_forward}] abilita l'inoltro dei pacchetti da una interfaccia ad un altra, e può essere impostato anche per la singola interfaccia. Prende un valore logico (0 disabilita, diverso da zero abilita), di default è disabilitato. -\item[\procrelfile{/proc/sys/net/ipv4}{ip\_dynaddr}] abilita la riscrittura +\item[\sysctlrelfile{net/ipv4}{ip\_dynaddr}] abilita la riscrittura automatica degli indirizzi associati ad un socket quando una interfaccia cambia indirizzo. Viene usato per le interfacce usate nei collegamenti in dial-up, il cui indirizzo IP viene assegnato dinamicamente dal provider, e @@ -4162,13 +4158,13 @@ di manuale accessibile con \texttt{man 7 ip}, sono i seguenti: diverso dai precedenti) la si abilità in modalità \textsl{prolissa}; di default la funzionalità è disabilitata. -\item[\procrelfile{/proc/sys/net/ipv4}{ip\_autoconfig}] specifica se +\item[\sysctlrelfile{net/ipv4}{ip\_autoconfig}] specifica se l'indirizzo IP è stato configurato automaticamente dal kernel all'avvio attraverso DHCP, BOOTP o RARP. Riporta un valore logico (0 falso, 1 vero) accessibile solo in lettura, è inutilizzato nei kernel recenti ed eliminato a partire dal kernel 2.6.18. -\item[\procrelfile{/proc/sys/net/ipv4}{ip\_local\_port\_range}] imposta +\item[\sysctlrelfile{net/ipv4}{ip\_local\_port\_range}] imposta l'intervallo dei valori usati per l'assegnazione delle porte effimere, permette cioè di modificare i valori illustrati in fig.~\ref{fig:TCP_port_alloc}; prende due valori interi separati da spazi, @@ -4179,7 +4175,7 @@ di manuale accessibile con \texttt{man 7 ip}, sono i seguenti: valore iniziale maggiore di 1024 (o meglio ancora di 4096) per evitare conflitti con le porte usate dai servizi noti. -\item[\procrelfile{/proc/sys/net/ipv4}{ip\_no\_pmtu\_disc}] permette di +\item[\sysctlrelfile{net/ipv4}{ip\_no\_pmtu\_disc}] permette di disabilitare per i socket \const{SOCK\_STREAM} la ricerca automatica della \itindex{Maximum~Transfer~Unit} \textit{Path MTU} (vedi sez.~\ref{sec:net_lim_dim} e sez.~\ref{sec:sock_ipv4_options}). Prende un @@ -4189,13 +4185,13 @@ di manuale accessibile con \texttt{man 7 ip}, sono i seguenti: procedimento del \itindex{Maximum~Transfer~Unit} \textit{Path MTU discovery} fallisce; dato che questo può avvenire a causa di router\footnote{ad esempio se si scartano tutti i pacchetti ICMP, il problema è affrontato - anche in sez.~1.4.4 di \cite{FwGL}.} o interfacce\footnote{ad esempio se i + anche in sez.~3.4.4 di \cite{SGL}.} o interfacce\footnote{ad esempio se i due capi di un collegamento \textit{point-to-point} non si accordano sulla - stessa MTU.} mal configurate è opportuno correggere le configurazioni, + stessa MTU.} mal configurati è opportuno correggere le configurazioni, perché disabilitare globalmente il procedimento con questo parametro ha pesanti ripercussioni in termini di prestazioni di rete. -\item[\procrelfile{/proc/sys/net/ipv4}{ip\_always\_defrag}] fa si che tutti i +\item[\sysctlrelfile{net/ipv4}{ip\_always\_defrag}] fa si 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 @@ -4206,17 +4202,17 @@ di manuale accessibile con \texttt{man 7 ip}, sono i seguenti: \itindex{netfilter} \textit{netfilter}, e questo parametro non è più presente. -\item[\procrelfile{/proc/sys/net/ipv4}{ipfrag\_high\_thresh}] indica il limite +\item[\sysctlrelfile{net/ipv4}{ipfrag\_high\_thresh}] indica il limite massimo (espresso in numero di byte) sui pacchetti IP frammentati presenti in coda; quando questo valore viene raggiunta la coda viene ripulita fino al valore \texttt{ipfrag\_low\_thresh}. Prende un valore intero. -\item[\procrelfile{/proc/sys/net/ipv4}{ipfrag\_low\_thresh}] soglia bassa +\item[\sysctlrelfile{net/ipv4}{ipfrag\_low\_thresh}] soglia bassa (specificata in byte) a cui viene riportata la coda dei pacchetti IP frammentati quando si raggiunge il valore massimo dato da \texttt{ipfrag\_high\_thresh}. Prende un valore intero. -\item[\procrelfile{/proc/sys/net/ipv4}{ip\_nonlocal\_bind}] se abilitato rende +\item[\sysctlrelfile{net/ipv4}{ip\_nonlocal\_bind}] se abilitato rende possibile ad una applicazione eseguire \func{bind} anche su un indirizzo che non è presente su nessuna interfaccia locale. Prende un valore logico e di default è disabilitato. @@ -4237,7 +4233,7 @@ caratteristiche specifiche del protocollo TCP, elencati anche nella rispettiva pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: \begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}} -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_abort\_on\_overflow}] indica al +\item[\sysctlrelfile{net/ipv4}{tcp\_abort\_on\_overflow}] indica al kernel di azzerare le connessioni quando il programma che le riceve è troppo lento ed incapace di accettarle. Prende un valore logico ed è disabilitato di default. Questo consente di recuperare le connessioni se si è avuto un @@ -4246,9 +4242,9 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: quando si è sicuri che non è possibile ottimizzare il server in modo che sia in grado di accettare connessioni più rapidamente. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_adv\_win\_scale}] indica al kernel +\item[\sysctlrelfile{net/ipv4}{tcp\_adv\_win\_scale}] indica al kernel quale frazione del buffer associato ad un socket\footnote{quello impostato - con \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}.} deve essere utilizzata + con \sysctlrelfile{net/ipv4}{tcp\_rmem}.} deve essere utilizzata per la finestra del protocollo TCP\footnote{in sostanza il valore che costituisce la \itindex{advertised~window} \textit{advertised window} annunciata all'altro capo del socket.} e quale come buffer applicativo per @@ -4259,7 +4255,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: negativo. Il default è 2 che significa che al buffer dell'applicazione viene riservato un quarto del totale. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_app\_win}] indica la frazione +\item[\sysctlrelfile{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 dimensione in byte come il massimo fra la \itindex{Maximum~Segment~Size} @@ -4272,7 +4268,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: % \item[\texttt{tcp\_bic\_low\_window}] % \item[\texttt{tcp\_bic\_fast\_convergence}] -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_dsack}] abilita il supporto, +\item[\sysctlrelfile{net/ipv4}{tcp\_dsack}] abilita il supporto, definito nell'\href{http://www.ietf.org/rfc/rfc2884.txt}{RFC~2884}, per il cosiddetto \textit{Duplicate SACK}.\footnote{si indica con SACK (\textit{Selective Acknowledgement}) un'opzione TCP, definita @@ -4284,7 +4280,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: % mettere riferimento nelle appendici -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_ecn}] abilita il meccanismo della +\item[\sysctlrelfile{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 @@ -4305,14 +4301,14 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: % mettere riferimento nelle appendici -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_fack}] abilita il supporto per il +\item[\sysctlrelfile{net/ipv4}{tcp\_fack}] abilita il supporto per il \textit{TCP Forward Acknowledgement}, un algoritmo per il controllo della congestione del traffico. Prende un valore logico e di default è abilitato. % TODO documentare o descrivere che cos'è il TCP Forward Acknowledgement o % mettere riferimento nelle appendici -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_fin\_timeout}] specifica il numero +\item[\sysctlrelfile{net/ipv4}{tcp\_fin\_timeout}] specifica il numero di secondi da passare in stato \texttt{FIN\_WAIT2} nell'attesa delle ricezione del pacchetto FIN conclusivo, passati quali il socket viene comunque chiuso forzatamente. Prende un valore intero che indica i secondi @@ -4322,26 +4318,26 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: ma è utile per fronteggiare alcuni attacchi di \itindex{Denial~of~Service~(DoS)} \textit{Denial of Service}. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_frto}] abilita il supporto per +\item[\sysctlrelfile{net/ipv4}{tcp\_frto}] abilita il supporto per l'algoritmo F-RTO, un algoritmo usato per la ritrasmissione dei timeout del protocollo TCP, che diventa molto utile per le reti wireless dove la perdita di pacchetti è usualmente dovuta a delle interferenze radio, piuttosto che alla congestione dei router. Prende un valore logico e di default è disabilitato. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_keepalive\_intvl}] indica il +\item[\sysctlrelfile{net/ipv4}{tcp\_keepalive\_intvl}] indica il numero di secondi che deve trascorrere fra l'emissione di due successivi pacchetti di test quando è abilitata la funzionalità del \textit{keepalive} (vedi sez.~\ref{sec:sock_options_main}). Prende un valore intero che di default è 75. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_keepalive\_probes}] indica il +\item[\sysctlrelfile{net/ipv4}{tcp\_keepalive\_probes}] indica il massimo numero pacchetti di \textit{keepalive} (vedi sez.~\ref{sec:sock_options_main}) che devono essere inviati senza ricevere risposta prima che il kernel decida che la connessione è caduta e la termini. Prende un valore intero che di default è 9. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_keepalive\_time}] indica il numero +\item[\sysctlrelfile{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 è @@ -4349,7 +4345,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: sez.~\ref{sec:sock_options_main}.} Prende un valore intero che di default è 7200, pari a due ore. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_low\_latency}] indica allo stack +\item[\sysctlrelfile{net/ipv4}{tcp\_low\_latency}] indica allo stack TCP del kernel di ottimizzare il comportamento per ottenere tempi di latenza più bassi a scapito di valori più alti per l'utilizzo della banda. Prende un valore logico che di default è disabilitato in quanto un maggior utilizzo @@ -4357,7 +4353,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: riduzione della latenza è più importante (ad esempio per i cluster di calcolo parallelo) nelle quali lo si può abilitare. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_max\_orphans}] indica il numero +\item[\sysctlrelfile{net/ipv4}{tcp\_max\_orphans}] indica il numero massimo di socket TCP ``\textsl{orfani}'' (vale a dire non associati a nessun file descriptor) consentito nel sistema.\footnote{trattasi in genere delle connessioni relative a socket chiusi che non hanno completato il @@ -4373,7 +4369,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: % TODO verificare la spiegazione di connessione orfana. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_max\_syn\_backlog}] indica la +\item[\sysctlrelfile{net/ipv4}{tcp\_max\_syn\_backlog}] indica la lunghezza della coda delle connessioni incomplete, cioè delle connessioni per le quali si è ricevuto un SYN di richiesta ma non l'ACK finale del \itindex{three~way~handshake} \textit{three way handshake} (si riveda quanto @@ -4390,7 +4386,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: del kernel, in modo che sia $\mathtt{tcp\_max\_syn\_backlog} \ge \mathtt{16*TCP\_SYNQ\_HSIZE}$, per poi ricompilare il kernel.} -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_max\_tw\_buckets}] indica il +\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 @@ -4399,7 +4395,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: prevenire alcuni semplici attacchi di \textit{denial of service}. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_mem}] viene usato dallo stack TCP +\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: @@ -4419,12 +4415,12 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: ogni altro valore specificato dagli altri limiti del kernel. \end{itemize*} -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_orphan\_retries}] indica il numero +\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[\procrelfile{/proc/sys/net/ipv4}{tcp\_reordering}] indica il numero +\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 @@ -4432,7 +4428,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: ritrasmissioni provocate dal riordinamento. Prende un valore intero che di default che è 3, e che non è opportuno modificare. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_retrans\_collapse}] in caso di +\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 @@ -4440,7 +4436,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: pacchetto (o su un numero minore di pacchetti di dimensione maggiore). Prende un valore logico e di default è abilitato. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_retries1}] imposta il massimo +\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 @@ -4448,7 +4444,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: aggiornamento della rotta verso la destinazione prima di eseguire ogni successiva ritrasmissione. Prende un valore intero che di default è 3. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_retries2}] imposta il numero di +\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 @@ -4457,7 +4453,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: 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[\procrelfile{/proc/sys/net/ipv4}{tcp\_rfc1337}] indica al kernel di +\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 @@ -4465,7 +4461,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: immediatamente senza attendere la conclusione del periodo di \texttt{TIME\_WAIT}. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}] viene usato dallo stack TCP +\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: @@ -4476,7 +4472,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: 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 - \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}) le allocazioni al di sotto di + \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}. @@ -4484,31 +4480,31 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: \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 \procfile{/proc/sys/net/core/mem\_default} che vale + 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 - \procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}). + \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 - \procfile{/proc/sys/net/core/rmem\_max}. Questo valore non viene ad + \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[\procrelfile{/proc/sys/net/ipv4}{tcp\_sack}] indica al kernel di +\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[\procrelfile{/proc/sys/net/ipv4}{tcp\_stdurg}] indica al kernel di +\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 @@ -4517,12 +4513,12 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: Prende un valore logico e di default è disabilitato, perché abilitarlo può dar luogo a problemi di interoperabilità. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_synack\_retries}] indica il numero +\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[\procrelfile{/proc/sys/net/ipv4}{tcp\_syncookies}] abilita i \textit{TCP +\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 @@ -4532,18 +4528,18 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: con altre funzionalità come le estensioni e può causare problemi per i client ed il reinoltro dei pacchetti. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_syn\_retries}] imposta il numero +\item[\sysctlrelfile{net/ipv4}{tcp\_syn\_retries}] imposta il numero di tentativi di ritrasmissione dei pacchetti SYN di inizio connessione del \itindex{three~way~handshake} \textit{three way handshake} (si ricordi quanto illustrato in sez.~\ref{sec:TCP_func_connect}). Prende un valore intero che di default è 5; non si deve superare il valore massimo di 255. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_timestamps}] abilita l'uso dei +\item[\sysctlrelfile{net/ipv4}{tcp\_timestamps}] abilita l'uso dei \textit{TCP timestamps}, come definiti nell'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}. Prende un valore logico e di default è abilitato. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_recycle}] abilita il +\item[\sysctlrelfile{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 \textit{Network Address @@ -4553,11 +4549,11 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: \textit{netfilter}, per maggiori dettagli si consulti il cap.~2 di \cite{FwGL}.} -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_reuse}] abilita il riutilizzo +\item[\sysctlrelfile{net/ipv4}{tcp\_tw\_reuse}] abilita il riutilizzo dello stato \texttt{TIME\_WAIT} quando questo è sicuro dal punto di vista del protocollo. Prende un valore logico e di default è disabilitato. -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}] un valore +\item[\sysctlrelfile{net/ipv4}{tcp\_window\_scaling}] un valore logico, attivo di default, che abilita la funzionalità del \itindex{TCP~window~scaling} \textit{TCP window scaling} definita dall'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}. Prende un valore @@ -4570,13 +4566,13 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: \itindex{TCP~window~scaling} \textit{TCP window scaling} con l'altro capo della connessione non viene effettuata. -%\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_vegas\_cong\_avoid}] +%\item[\sysctlrelfile{net/ipv4}{tcp\_vegas\_cong\_avoid}] % TODO: controllare su internet -%\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_westwood}] +%\item[\sysctlrelfile{net/ipv4}{tcp\_westwood}] % TODO: controllare su internet -\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_wmem}] viene usato dallo stack TCP +\item[\sysctlrelfile{net/ipv4}{tcp\_wmem}] viene usato dallo stack TCP per controllare dinamicamente le dimensioni dei propri buffer di spedizione, adeguandole in rapporto alla memoria disponibile. Prende una tripletta di valori interi separati da spazi che indicano delle dimensioni in byte: @@ -4584,9 +4580,9 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: \begin{itemize} \item il primo valore, chiamato \textit{min}, indica la dimensione minima in byte del buffer di spedizione; il default è 4Kb. Come per l'analogo di - \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}) viene usato per assicurare + \sysctlrelfile{net/ipv4}{tcp\_rmem}) viene usato per assicurare che anche in situazioni di pressione sulla memoria (vedi - \procrelfile{/proc/sys/net/ipv4}{tcp\_mem}) le allocazioni al di sotto di + \sysctlrelfile{net/ipv4}{tcp\_mem}) le allocazioni al di sotto di questo limite abbiamo comunque successo. Di nuovo questo valore non viene ad incidere sulla dimensione del buffer di trasmissione di un singolo socket dichiarata con l'opzione \const{SO\_SNDBUF}. @@ -4594,20 +4590,20 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: \item il secondo valore, denominato \textit{default}, indica la dimensione di default in byte del buffer di spedizione di un socket TCP. Questo valore sovrascrive il default iniziale impostato per tutti i tipi di - socket con \procfile{/proc/sys/net/core/wmem\_default}. Il default è 87380 + socket con \sysctlfile{net/core/wmem\_default}. Il default è 87380 byte, ridotto a 43689 per sistemi con poca memoria. Si può aumentare questo valore quando si desiderano dimensioni più ampie del buffer di trasmissione per i socket TCP, ma come per il precedente - \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}) se si vuole che in + \sysctlrelfile{net/ipv4}{tcp\_rmem}) 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} - con \procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}. + con \sysctlrelfile{net/ipv4}{tcp\_window\_scaling}. \item il terzo valore, denominato \textit{max}, indica la dimensione massima in byte del buffer di spedizione di un socket TCP; il default è 128Kb, che viene ridotto automaticamente a 64Kb per sistemi con poca memoria. Il valore non può comunque eccedere il limite generale per tutti i socket - posto con \procfile{/proc/sys/net/core/wmem\_max}. Questo valore non viene + posto con \sysctlfile{net/core/wmem\_max}. Questo valore non viene ad incidere sulla dimensione del buffer di trasmissione di un singolo socket dichiarata con l'opzione \const{SO\_SNDBUF}. \end{itemize}