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
- 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
- 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\_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}]
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.
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
-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:
% 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