Indicizzati file sotto /proc, ed ulteriore materiale su ''inotify''.
[gapil.git] / tcpsock.tex
index a976ecdc9b9e921b710555d94fc204056ccf9c15..485f36f0be956b66ddef6942654ddce9b42dfc35 100644 (file)
@@ -163,13 +163,13 @@ connessione.  Normalmente vengono usate le seguenti opzioni:
     inserendola anche lui nel suo SYN di risposta dell'apertura della
     connessione.} per la connessione corrente (espresso come numero di bit cui
   spostare a sinistra il valore della finestra annunciata inserito nel
-  pacchetto). Con Linux è possibile indicare al kernel di far negozioare il
+  pacchetto). Con Linux è possibile indicare al kernel di far negoziare il
   fattore di scala in fase di creazione di una connessione tramite la
   \textit{sysctl} \texttt{tcp\_window\_scaling} (vedi
   sez.~\ref{sec:sock_ipv4_sysctl}).\footnote{per poter usare questa
     funzionalità è comunque necessario ampliare le dimensioni dei buffer di
     ricezione e spedizione, cosa che può essere fatta sia a livello di sistema
-    con le opportune \textit{sysct} (vedi sez.~\ref{sec:sock_ipv4_sysctl}) che
+    con le opportune \textit{sysctl} (vedi sez.~\ref{sec:sock_ipv4_sysctl}) che
     a livello di singoli socket con le relative opzioni (vedi
     sez.~\ref{sec:sock_tcp_udp_options}).}
 
@@ -479,11 +479,11 @@ dall'\href{http://www.ietf.org/rfc/rfc1700.txt}{RFC~1700} che contiene
 l'elenco delle porte assegnate dalla IANA (la \textit{Internet Assigned Number
   Authority}) ma l'elenco viene costantemente aggiornato e pubblicato su
 internet (una versione aggiornata si può trovare all'indirizzo
-\href{ftp://ftp.isi.edu/in-notes/iana/assignements/port-number}
-{\texttt{ftp://ftp.isi.edu/in-notes/iana/assignements/port-numbers}}); inoltre
-in un sistema unix-like un analogo elenco viene mantenuto nel file
-\file{/etc/services}, con la corrispondenza fra i vari numeri di porta ed il
-nome simbolico del servizio.  I numeri sono divisi in tre intervalli:
+\href{http://www.iana.org/assignments/port-numbers}
+{\texttt{http://www.iana.org/assignments/port-numbers}}); inoltre in un
+sistema unix-like un analogo elenco viene mantenuto nel file
+\conffile{/etc/services}, con la corrispondenza fra i vari numeri di porta ed
+il nome simbolico del servizio.  I numeri sono divisi in tre intervalli:
 
 \begin{enumerate*}
 \item \textsl{le porte note}. I numeri da 0 a 1023. Queste sono controllate e
@@ -709,7 +709,7 @@ per il server\footnote{un'eccezione a tutto ci
   demone che deve essere contattato dai client per ottenere la porta effimera
   su cui si trova il server.} che in genere viene identificato dalla porta su
 cui risponde (l'elenco di queste porte, e dei relativi servizi, è in
-\file{/etc/services}).
+\conffile{/etc/services}).
 
 Con \func{bind} si può assegnare un indirizzo IP specifico ad un socket,
 purché questo appartenga ad una interfaccia della macchina.  Per un client TCP
@@ -842,7 +842,7 @@ nella chiamata della funzione sono le seguenti:
   secondi per un numero di volte che può essere stabilito dall'utente. Questo
   può essere fatto a livello globale con una opportuna
   \func{sysctl},\footnote{o più semplicemente scrivendo il valore voluto in
-    \file{/proc/sys/net/ipv4/tcp\_syn\_retries}, vedi
+    \procfile{/proc/sys/net/ipv4/tcp\_syn\_retries}, vedi
     sez.~\ref{sec:sock_ipv4_sysctl}.} e a livello di singolo socket con
   l'opzione \const{TCP\_SYNCNT} (vedi sez.~\ref{sec:sock_tcp_udp_options}). Il
   valore predefinito per la ripetizione dell'invio è di 5 volte, che comporta
@@ -977,12 +977,12 @@ indicare la lunghezza della coda delle connessioni complete. La lunghezza
 della coda delle connessioni incomplete può essere ancora controllata usando
 la funzione \func{sysctl} con il parametro \const{NET\_TCP\_MAX\_SYN\_BACKLOG}
 o scrivendola direttamente in
-\file{/proc/sys/net/ipv4/tcp\_max\_syn\_backlog}.  Quando si attiva la
+\procfile{/proc/sys/net/ipv4/tcp\_max\_syn\_backlog}.  Quando si attiva la
 protezione dei syncookies però (con l'opzione da compilare nel kernel e da
-attivare usando \file{/proc/sys/net/ipv4/tcp\_syncookies}) questo valore viene
-ignorato e non esiste più un valore massimo.  In ogni caso in Linux il valore
-di \param{backlog} viene troncato ad un massimo di \const{SOMAXCONN} se è
-superiore a detta costante (che di default vale 128).\footnote{il valore di
+attivare usando \procfile{/proc/sys/net/ipv4/tcp\_syncookies}) questo valore
+viene ignorato e non esiste più un valore massimo.  In ogni caso in Linux il
+valore di \param{backlog} viene troncato ad un massimo di \const{SOMAXCONN} se
+è superiore a detta costante (che di default vale 128).\footnote{il valore di
   questa costante può essere controllato con un altro parametro di
   \func{sysctl}, vedi sez.~\ref{sec:sock_ioctl_IP}.}
 
@@ -2622,7 +2622,8 @@ successivo, per tentare di ristabilire la connessione.
 Il risultato finale qui dipende dall'implementazione dello stack TCP, e nel
 caso di Linux anche dall'impostazione di alcuni dei parametri di sistema che
 si trovano in \file{/proc/sys/net/ipv4}, che ne controllano il comportamento:
-in questo caso in particolare da \file{tcp\_retries2} (vedi
+in questo caso in particolare da
+\procrelfile{/proc/sys/net/ipv4}{tcp\_retries2} (vedi
 sez.~\ref{sec:sock_ipv4_sysctl}). Questo parametro infatti specifica il numero
 di volte che deve essere ritentata la ritrasmissione di un pacchetto nel mezzo
 di una connessione prima di riportare un errore di timeout.  Il valore
@@ -2744,6 +2745,7 @@ impostazione speciale del socket (ci torneremo in
 sez.~\ref{sec:sock_generic_options}) che provvede all'esecuzione di questo
 controllo.
 
+
 \section{L'uso dell'I/O multiplexing}
 \label{sec:TCP_sock_multiplexing}
 
@@ -2865,9 +2867,8 @@ quando c'
   dati in ricezione; per cui, nella situazione in cui si conosce almeno un
   valore minimo, per evitare la penalizzazione dovuta alla ripetizione delle
   operazioni di lettura per accumulare dati sufficienti, si può lasciare al
-  kernel il compito di impostare un minimo al di sotto del quale il file
-  descriptor, pur avendo disponibili dei dati, non viene dato per pronto in
-  lettura.}
+  kernel il compito di impostare un minimo al di sotto del quale il socket,
+  pur avendo disponibili dei dati, non viene dato per pronto in lettura.}
 
 
 
@@ -3581,12 +3582,15 @@ quanto l'uscita 
 anche a questo server le considerazioni finali di
 sez.~\ref{sec:TCP_serv_select}.
 
+% TODO fare esempio con epoll
+
+
 
 % LocalWords:  socket TCP client dell'I multiplexing stream three way handshake
 % LocalWords:  header stack kernel SYN ACK URG syncronize sez bind listen fig
 % LocalWords:  accept connect active acknowledge l'acknowledge nell'header MSS
 % LocalWords:  sequence number l'acknowledgement dell'header options l'header
-% LocalWords:  option MMS segment size MAXSEG window advertized Mbit sec nell'
+% LocalWords:  option MMS segment size MAXSEG window advertised Mbit sec nell'
 % LocalWords:  timestamp RFC long fat close of l'end l'ACK half shutdown CLOSED
 % LocalWords:  netstat SENT ESTABLISHED WAIT IPv Ethernet piggybacking UDP MSL
 % LocalWords:  l'overhead Stevens Lifetime router hop limit TTL to live RST SSH
@@ -3620,7 +3624,7 @@ sez.~\ref{sec:TCP_serv_select}.
 % LocalWords:  SNDLOWAT third fset maxfd fileno ISSET closed how SHUT RD WR eof
 % LocalWords:  RDWR fifo Trip ping fourth CLR sull'I SETSIZE nread break Denial
 % LocalWords:  Service poll POLLIN POLLRDNORM POLLPRI POLLRDBAND POLLOUT events
-% LocalWords:  POLLHUP POLLERR revents pollfd Di
+% LocalWords:  POLLHUP POLLERR revents pollfd Di scaling SYNCNT DoS
 
 %%% Local Variables: 
 %%% mode: latex