Aggiunte sessioni
[gapil.git] / elemtcp.tex
index 7e75f92ffe584bb81af01af51185e53d64540f11..964dd4f16f5cc1c0539b9338093392ae75c5905a 100644 (file)
@@ -60,8 +60,8 @@ creazione di una connessione 
 \item il server deve dare ricevuto (l'\textit{acknowledge}) del SYN del
   client, inoltre anche il server deve inviare il suo SYN al client (e
   trasmettere il suo numero di sequenza iniziale) questo viene fatto
 \item il server deve dare ricevuto (l'\textit{acknowledge}) del SYN del
   client, inoltre anche il server deve inviare il suo SYN al client (e
   trasmettere il suo numero di sequenza iniziale) questo viene fatto
-  ritrasmettendo un singolo segmento in cui entrambi i flag SYN ACK e sono
-  settati.
+  ritrasmettendo un singolo segmento in cui sono impostati entrambi i flag SYN
+  ACK.
   
 \item una volta che il client ha ricevuto l'acknowledge dal server la funzione
   \func{connect} ritorna, l'ultimo passo è dare dare il ricevuto del SYN del
   
 \item una volta che il client ha ricevuto l'acknowledge dal server la funzione
   \func{connect} ritorna, l'ultimo passo è dare dare il ricevuto del SYN del
@@ -100,7 +100,7 @@ segmento.
 Il numero di sequenza di ciascun segmento viene calcolato a partire da un
 \textsl{numero di sequenza iniziale} generato in maniera casuale del kernel
 all'inizio della connessione e trasmesso con il SYN; l'acknowledgement di
 Il numero di sequenza di ciascun segmento viene calcolato a partire da un
 \textsl{numero di sequenza iniziale} generato in maniera casuale del kernel
 all'inizio della connessione e trasmesso con il SYN; l'acknowledgement di
-ciascun segmento viene effettuato dall'altro capo della connessione settando
+ciascun segmento viene effettuato dall'altro capo della connessione impostando
 il flag ACK e restituendo nell'apposito campo dell'header un
 \textit{acknowledge number}) pari al numero di sequenza che il ricevente si
 aspetta di ricevere con il pacchetto successivo; dato che il primo pacchetto
 il flag ACK e restituendo nell'apposito campo dell'header un
 \textit{acknowledge number}) pari al numero di sequenza che il ricevente si
 aspetta di ricevere con il pacchetto successivo; dato che il primo pacchetto
@@ -642,8 +642,8 @@ ci si porr
   contiene, secondo quanto già trattato in \secref{sec:sock_sockaddr}.
   
   \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
   contiene, secondo quanto già trattato in \secref{sec:sock_sockaddr}.
   
   \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
-    errore; in caso di errore la variabile \var{errno} viene settata secondo i
-    seguenti codici di errore:
+    errore; in caso di errore la variabile \var{errno} viene impostata secondo
+    seguenti codici di errore:
   \begin{errlist}
   \item[\macro{EBADF}] il file descriptor non è valido.
   \item[\macro{EINVAL}] il socket ha già un indirizzo assegnato.
   \begin{errlist}
   \item[\macro{EBADF}] il file descriptor non è valido.
   \item[\macro{EINVAL}] il socket ha già un indirizzo assegnato.
@@ -703,7 +703,7 @@ consente l'uso di una struttura costante come operando a destra in una
 assegnazione.  
 
 Per questo nell'header \file{netinet/in.h} è definita una variabile
 assegnazione.  
 
 Per questo nell'header \file{netinet/in.h} è definita una variabile
-\type{in6addr\_any} (dichiarata come \type{extern}, ed inizializzata dal
+\type{in6addr\_any} (dichiarata come \ctyp{extern}, ed inizializzata dal
 sistema al valore \macro{IN6ADRR\_ANY\_INIT}) che permette di effettuare una
 assegnazione del tipo: 
 
 sistema al valore \macro{IN6ADRR\_ANY\_INIT}) che permette di effettuare una
 assegnazione del tipo: 
 
@@ -728,17 +728,19 @@ connessione con un server TCP, il prototipo della funzione 
   socket, già descritta in \secref{sec:sock_sockaddr}.
   
   \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
   socket, già descritta in \secref{sec:sock_sockaddr}.
   
   \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
-    errore, in caso di errore la variabile \var{errno} viene settata secondo i
-    seguenti codici di errore:
+    errore, in caso di errore la variabile \var{errno} viene impostata secondo
+    seguenti codici di errore:
   \begin{errlist}
   \item[\macro{ECONNREFUSED}] non c'è nessuno in ascolto sull'indirizzo remoto.
   \item[\macro{ETIMEDOUT}] si è avuto timeout durante il tentativo di
     connessione.
   \item[\macro{ENETUNREACH}] la rete non è raggiungibile.
   \begin{errlist}
   \item[\macro{ECONNREFUSED}] non c'è nessuno in ascolto sull'indirizzo remoto.
   \item[\macro{ETIMEDOUT}] si è avuto timeout durante il tentativo di
     connessione.
   \item[\macro{ENETUNREACH}] la rete non è raggiungibile.
-  \item[\macro{EINPROGRESS}] il socket è non bloccante e la connessione non
-    può essere conclusa immediatamente.
-  \item[\macro{EALREADY}] il socket è non bloccante e un tentativo precedente
-    di connessione non si è ancora concluso.
+  \item[\macro{EINPROGRESS}] il socket è non bloccante (vedi
+    \secref{sec:file_noblocking}) e la connessione non può essere conclusa
+    immediatamente.
+  \item[\macro{EALREADY}] il socket è non bloccante (vedi
+    \secref{sec:file_noblocking}) e un tentativo precedente di connessione non
+    si è ancora concluso.
   \item[\macro{EAGAIN}] non ci sono più porte locali libere. 
   \item[\macro{EAFNOSUPPORT}] l'indirizzo non ha una famiglia di indirizzi
     corretta nel relativo campo.
   \item[\macro{EAGAIN}] non ci sono più porte locali libere. 
   \item[\macro{EAFNOSUPPORT}] l'indirizzo non ha una famiglia di indirizzi
     corretta nel relativo campo.
@@ -769,11 +771,11 @@ seguenti:
   invece ripete l'emissione del SYN ad intervalli di 30 secondi per un numero
   di volte che può essere stabilito dall'utente sia con una opportuna
   \func{sysctl} che attraverso il filesystem \file{/proc} scrivendo il valore
   invece ripete l'emissione del SYN ad intervalli di 30 secondi per un numero
   di volte che può essere stabilito dall'utente sia con una opportuna
   \func{sysctl} che attraverso il filesystem \file{/proc} scrivendo il valore
-  voluto in \file{/proc/sys/net/ipv4/tcp\_syn\_retries}. Il valore di default
+  voluto in \file{/proc/sys/net/ipv4/tcp\_syn\_retries}. Il valore predefinito
   per la ripetizione dell'invio è di 5 volte, che comporta un timeout dopo
   circa 180 secondi.
 %
   per la ripetizione dell'invio è di 5 volte, che comporta un timeout dopo
   circa 180 secondi.
 %
-% Le informazioni su tutte le opzioni settabili via /proc stanno in
+% Le informazioni su tutte le opzioni impostabili via /proc stanno in
 % Linux/Documentation/networking/ip-sysctl.txt
 %
 \item Il client riceve come risposta al SYN un RST significa che non c'è
 % Linux/Documentation/networking/ip-sysctl.txt
 %
 \item Il client riceve come risposta al SYN un RST significa che non c'è
@@ -821,7 +823,7 @@ sostanza l'effetto della funzione 
 \texttt{CLOSED} a quello \texttt{LISTEN}. In genere si chiama la funzione in
 un server dopo le chiamate a \func{socket} e \func{bind} e prima della
 chiamata ad \func{accept}. Il prototipo della funzione come definito dalla
 \texttt{CLOSED} a quello \texttt{LISTEN}. In genere si chiama la funzione in
 un server dopo le chiamate a \func{socket} e \func{bind} e prima della
 chiamata ad \func{accept}. Il prototipo della funzione come definito dalla
-man page è:
+pagina di manuale è:
 \begin{prototype}{sys/socket.h}{int listen(int sockfd, int backlog)}
   La funzione pone il socket specificato da \var{sockfd} in modalità
   passiva e predispone una coda per le connessioni in arrivo di lunghezza pari
 \begin{prototype}{sys/socket.h}{int listen(int sockfd, int backlog)}
   La funzione pone il socket specificato da \var{sockfd} in modalità
   passiva e predispone una coda per le connessioni in arrivo di lunghezza pari
@@ -944,7 +946,7 @@ viene messo in attesa. Il prototipo della funzione 
  
   \bodydesc{La funzione restituisce un numero di socket descriptor positivo in
     caso di successo e -1 in caso di errore, nel qual caso la variabile
  
   \bodydesc{La funzione restituisce un numero di socket descriptor positivo in
     caso di successo e -1 in caso di errore, nel qual caso la variabile
-    \var{errno} viene settata ai seguenti valori:
+    \var{errno} viene impostata ai seguenti valori:
 
   \begin{errlist}
   \item[\macro{EBADF}] l'argomento \var{sockfd} non è un file descriptor
 
   \begin{errlist}
   \item[\macro{EBADF}] l'argomento \var{sockfd} non è un file descriptor
@@ -952,8 +954,9 @@ viene messo in attesa. Il prototipo della funzione 
   \item[\macro{ENOTSOCK}] l'argomento \var{sockfd} non è un socket.
   \item[\macro{EOPNOTSUPP}] il socket è di un tipo che non supporta questa
     operazione.    
   \item[\macro{ENOTSOCK}] l'argomento \var{sockfd} non è un socket.
   \item[\macro{EOPNOTSUPP}] il socket è di un tipo che non supporta questa
     operazione.    
-  \item[\macro{EAGAIN} o \macro{EWOULDBLOCK}] il socket è stato settato come
-    non bloccante, e non ci sono connessioni in attesa di essere accettate.
+  \item[\macro{EAGAIN} o \macro{EWOULDBLOCK}] il socket è stato impostato come
+    non bloccante (vedi \secref{sec:file_noblocking}), e non ci sono
+    connessioni in attesa di essere accettate.
   \item[\macro{EPERM}] Le regole del firewall non consentono la connessione.
   \item[\macro{ENOBUFS, ENOMEM}] questo spesso significa che l'allocazione
     della memoria è limitata dai limiti sui buffer dei socket, non dalla
   \item[\macro{EPERM}] Le regole del firewall non consentono la connessione.
   \item[\macro{ENOBUFS, ENOMEM}] questo spesso significa che l'allocazione
     della memoria è limitata dai limiti sui buffer dei socket, non dalla
@@ -999,10 +1002,11 @@ prima connessione completa (estratta dalla relativa coda, vedi
 socket \var{sockfd}. Quest'ultimo (detto \textit{listening socket}) è quello
 creato all'inizio e messo in ascolto con \func{listen}, e non viene toccato
 dalla funzione.  Se non ci sono connessioni pendenti da accettare la funzione
 socket \var{sockfd}. Quest'ultimo (detto \textit{listening socket}) è quello
 creato all'inizio e messo in ascolto con \func{listen}, e non viene toccato
 dalla funzione.  Se non ci sono connessioni pendenti da accettare la funzione
-mette in attesa il processo\footnote{a meno che non si sia settato il socket
-  per essere non-bloccante, nel qual caso ritorna con l'errore \macro{EAGAIN}.
-  Torneremo su questa modalità di operazione in
-  \secref{sec:xxx_sock_noblock}.}  fintanto che non ne arriva una.
+mette in attesa il processo\footnote{a meno che non si sia imopstato il socket
+  per essere non bloccante (vedi \secref{sec:file_noblocking}), nel qual caso
+  ritorna con l'errore \macro{EAGAIN}.  Torneremo su questa modalità di
+  operazione in \secref{sec:xxx_sock_noblock}.}  fintanto che non ne arriva
+una.
  
 Il meccanismo di funzionamento di \func{accept} è essenziale per capire il
 funzionamento di un server: in generale infatti c'è sempre un solo socket in
  
 Il meccanismo di funzionamento di \func{accept} è essenziale per capire il
 funzionamento di un server: in generale infatti c'è sempre un solo socket in
@@ -1258,11 +1262,11 @@ connesso (\cmd{inetd} ad esempio fa sempre in modo che i file descriptor 0,
 1 e 2 corrispondano al socket connesso) quest'ultimo potrà usare la funzione
 \func{getpeername} per determinare l'indirizzo remoto del client.
 
 1 e 2 corrispondano al socket connesso) quest'ultimo potrà usare la funzione
 \func{getpeername} per determinare l'indirizzo remoto del client.
 
-Infine è da chiarire (si legga la man page) che come per \func{accept} il
-terzo parametro che è specificato dallo standard POSIX 1003.1g come di tipo
-\type{socklen\_t *} in realtà deve sempre corrispondere ad un \type{int *}
-come prima dello standard perché tutte le implementazioni dei socket BSD fanno
-questa assunzione.
+Infine è da chiarire (si legga la pagina di manuale) che, come per
+\func{accept}, il terzo parametro, che è specificato dallo standard POSIX.1g
+come di tipo \code{socklen\_t *} in realtà deve sempre corrispondere ad un
+\ctyp{int *} come prima dello standard perché tutte le implementazioni dei
+socket BSD fanno questa assunzione.