X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=sockctrl.tex;h=18cada6e51c6bb9b0a4e9faffa384ac59eba370c;hb=e35bdc25982790962f06f395b8329634d67448e9;hp=ae340ef9484a64a5239109c8c813af2cdc09ee12;hpb=3925d42aafd1c1ac743c2f0a748981c26335915d;p=gapil.git diff --git a/sockctrl.tex b/sockctrl.tex index ae340ef..18cada6 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -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 - \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 è @@ -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 - 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}] @@ -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 è -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. @@ -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 -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: @@ -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: 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