Cambiati indici, aggiunto riferimento per inotify, e qualcosa su TCP_CORK
[gapil.git] / sockctrl.tex
index ae340ef9484a64a5239109c8c813af2cdc09ee12..18cada6e51c6bb9b0a4e9faffa384ac59eba370c 100644 (file)
@@ -3074,17 +3074,20 @@ opzioni 
   trasmissione di tanti pacchetti piccoli, che comporta un utilizzo non
   ottimale della banda disponibile, un meccanismo di bufferizzazione dei
   pacchetti uscenti controllato da un apposito algoritmo (detto
   trasmissione di tanti pacchetti piccoli, che comporta un utilizzo non
   ottimale della banda disponibile, un meccanismo di bufferizzazione dei
   pacchetti uscenti controllato da un apposito algoritmo (detto
-  \textsl{algoritmo di Nagle}, vedi sez.\ref{sez:tcp_protocol_xxx}).
-  Il comportamento normale prevede invece che i pacchetti siano accumulati
+  \textsl{algoritmo di Nagle}, vedi sez.\ref{sez:tcp_protocol_xxx}).  Il
+  comportamento normale prevede invece che i pacchetti siano accumulati
   fintanto che non si raggiunge una quantità di dati considerata adeguata per
   fintanto che non si raggiunge una quantità di dati considerata adeguata per
-  eseguire la trasmissione. 
+  eseguire la trasmissione.
 
   Impostando questa opzione si disabilita questo meccanismo ed i pacchetti
   vengono inviati immediatamente qualunque sia la loro dimensione; l'opzione
   viene sovrascritta dall'eventuale impostazione \const{TCP\_CORK} (che blocca
   l'invio immediato), tuttavia quando la si abilita viene sempre forzato lo
   scaricamento della coda di invio (con conseguente trasmissione di tutti i
 
   Impostando questa opzione si disabilita questo meccanismo ed i pacchetti
   vengono inviati immediatamente qualunque sia la loro dimensione; l'opzione
   viene sovrascritta dall'eventuale impostazione \const{TCP\_CORK} (che blocca
   l'invio immediato), tuttavia quando la si abilita viene sempre forzato lo
   scaricamento della coda di invio (con conseguente trasmissione di tutti i
-  pacchetti pendenti), anche qualora si fosse già abilitata \const{TCP\_CORK}.
+  pacchetti pendenti), anche qualora si fosse già abilitata
+  \const{TCP\_CORK}.\footnote{si tenga presente però che \const{TCP\_CORK} può
+    essere specificata insieme a \const{TCP\_NODELAY} soltanto a partire dal
+    kernel 2.5.71.}
 
 \item[\const{TCP\_MAXSEG}] permette di leggere e modificare il valore della
   \itindex{Maximum~Segment~Size} MSS dei pacchetti uscenti, e se l'opzione è
 
 \item[\const{TCP\_MAXSEG}] permette di leggere e modificare il valore della
   \itindex{Maximum~Segment~Size} MSS dei pacchetti uscenti, e se l'opzione è
@@ -3095,7 +3098,13 @@ opzioni 
 
 \item[\const{TCP\_CORK}] quando questa opzione viene abilitata non vengono
   inviati pacchetti di dati fintanto che essa non venga disabilitata; a quel
 
 \item[\const{TCP\_CORK}] quando questa opzione viene abilitata non vengono
   inviati pacchetti di dati fintanto che essa non venga disabilitata; a quel
-  punto tutti i pacchetti rimasti in coda saranno inviati. 
+  punto tutti i dati rimasti in coda saranno inviati in un solo pacchetto.
+  Questa opzione viene usata per gestire direttamente il flusso dei dati
+  mettendo un ``\textsl{tappo}'' al flusso di uscita, in modo ottimizzare a
+  mano il throughput.
+
+  Questa opzione non è disponibile su tutti i kernel unix-like e deve essere
+  evitata se si vuole avere codice portabile.
 
 \item[\const{TCP\_KEEPINTVL}] 
 
 
 \item[\const{TCP\_KEEPINTVL}] 
 
@@ -3245,7 +3254,7 @@ processo che riceve i segnali) che si effettuano chiamando \func{ioctl} con
 Benché non strettamente attinenti alla gestione dei socket, vale la pena di
 trattare qui l'interfaccia di accesso a basso livello ai dispositivi di rete
 che viene appunto fornita attraverso la funzione \texttt{ioctl}. Questa non è
 Benché non strettamente attinenti alla gestione dei socket, vale la pena di
 trattare qui l'interfaccia di accesso a basso livello ai dispositivi di rete
 che viene appunto fornita attraverso la funzione \texttt{ioctl}. Questa non è
-attinente a carattestiche specifiche di un qualche protocollo, ma si applica a
+attinente a caratteristiche specifiche di un qualche protocollo, ma si applica a
 tutti i socket, indipendentemente dal tipo o famiglia dello stesso, e permette
 di impostare e rilevare le funzionalità delle interfacce di rete.
 
 tutti i socket, indipendentemente dal tipo o famiglia dello stesso, e permette
 di impostare e rilevare le funzionalità delle interfacce di rete.
 
@@ -3265,13 +3274,13 @@ Tutte le operazioni di questo tipo utilizzano come terzo argomento di
 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
 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 carateristiche e funzionalità nel secondo campo, che come si può
+diversa caratteristiche e funzionalità nel secondo campo, che come si può
 notare è definito come una \ctyp{union} proprio in quanto il suo significato
 varia a secondo dell'operazione scelta.
 
 Si tenga inoltre presente che alcune di queste operazioni (in particolare
 quelle che modificano le caratteristiche dell'interfaccia) sono privilegiate e
 notare è definito come una \ctyp{union} proprio in quanto il suo significato
 varia a secondo dell'operazione scelta.
 
 Si tenga inoltre presente che alcune di queste operazioni (in particolare
 quelle che modificano le caratteristiche dell'interfaccia) sono privilegiate e
-richiedono i privilegi di amministatore o la \itindex{capabilities}
+richiedono i privilegi di amministratore o la \itindex{capabilities}
 \textit{capability} \const{CAP\_NET\_ADMIN}, altrimenti si otterrà un errore
 di \errval{EPERM}.  Le costanti che identificano le operazioni disponibili
 sono le seguenti:
 \textit{capability} \const{CAP\_NET\_ADMIN}, altrimenti si otterrà un errore
 di \errval{EPERM}.  Le costanti che identificano le operazioni disponibili
 sono le seguenti:
@@ -3726,4 +3735,12 @@ accessibile con \texttt{man 7 ip}, sono i seguenti:
 % LocalWords:  Documentation SIOCATMARK SIOCOUTQ FIONREAD TIOCOUTQ Denial work
 % LocalWords:  netfilter scheduler mark ARP DHCP BOOTP RARP nonlocal sniffer
 % LocalWords:  linux NODELAY MAXSEG CORK KEEPIDLE KEEPINTVL KEEPCNT SYNCNT INFO
 % LocalWords:  Documentation SIOCATMARK SIOCOUTQ FIONREAD TIOCOUTQ Denial work
 % LocalWords:  netfilter scheduler mark ARP DHCP BOOTP RARP nonlocal sniffer
 % LocalWords:  linux NODELAY MAXSEG CORK KEEPIDLE KEEPINTVL KEEPCNT SYNCNT INFO
-% LocalWords:  DEFER ACCEPT WINDOW CLAMP QUICKACK CONGESTION ENCAP urgent
+% 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:  SIOCGIFMETRIC SIOCSIFMETRIC SIOCGIFMTU SIOCSIFMTU SIOCGIFHWADDR
+% LocalWords:  SIOCSIFHWADDR SIOCSIFHWBROADCAST SIOCGIFMAP SIOCSIFMAP
+% LocalWords:  SIOCADDMULTI SIOCDELMULTI SIOCGIFTXQLEN SIOCSIFTXQLEN
+% LocalWords:  SIOCSIFNAME SIOCGIFCONF