X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=elemtcp.tex;h=39fc7cd2f54e3f89fe79637c7a681356588d0a74;hp=f59308a68ad1ca52eef5b765c9086c420621e5df;hb=2c87ecb104050dd0cd78865a5390d8635b989b1a;hpb=ff2d0141751ed62ef56e5bfd226c589311b8b669 diff --git a/elemtcp.tex b/elemtcp.tex index f59308a..39fc7cd 100644 --- a/elemtcp.tex +++ b/elemtcp.tex @@ -141,7 +141,7 @@ regolare la connessione. Normalmente vengono usate le seguenti opzioni: indicare un massimo di 65535 byte (anche se Linux usa come massimo 32767 per evitare problemi con alcuni stack bacati che usano l'aritmetica con segno per implementare lo stack TCP); ma alcuni tipi di connessione come quelle ad - alta velocità (sopra i 45Mbits/sec) e quelle che hanno grandi ritardi nel + alta velocità (sopra i 45Mbit/sec) e quelle che hanno grandi ritardi nel cammino dei pacchetti (come i satelliti) richiedono una finestra più grande per poter ottenere il massimo dalla trasmissione, per questo esiste questa opzione che indica un fattore di scala da applicare al valore della finestra @@ -150,7 +150,7 @@ regolare la connessione. Normalmente vengono usate le seguenti opzioni: attiva prevede come negoziazione che l'altro capo della connessione riconosca esplicitamente l'opzione inserendola anche lui nel suo SYN di risposta dell'apertura della connessione.} per la connessione corrente - (espresso come numero di bit cui shiftare a sinistra il valore della + (espresso come numero di bit cui spostare a sinistra il valore della finestra annunciata inserito nel pacchetto). \item \textit{timestamp option}, è anche questa una nuova opzione necessaria @@ -324,10 +324,9 @@ dati rispondono meglio alle esigenze che devono essere affrontate. Come riportato da Stevens in \cite{UNP1} lo stato \texttt{TIME\_WAIT} è probabilmente uno degli aspetti meno compresi del protocollo TCP, è infatti -comune trovare nei newsgroup domande su come sia possibile evitare che -un'applicazione resti in questo stato lasciando attiva una connessione ormai -conclusa; la risposta è che non deve essere fatto, ed il motivo cercheremo di -spiegarlo adesso. +comune trovare domande su come sia possibile evitare che un'applicazione resti +in questo stato lasciando attiva una connessione ormai conclusa; la risposta è +che non deve essere fatto, ed il motivo cercheremo di spiegarlo adesso. Come si è visto nell'esempio precedente (vedi \figref{fig:TPCel_conn_example}) \texttt{TIME\_WAIT} è lo stato finale in cui il capo di una connessione che @@ -339,12 +338,12 @@ La MSL sulla rete; questo tempo è limitato perché ogni pacchetto IP può essere ritrasmesso dai router un numero massimo di volte (detto \textit{hop limit}). Il numero di ritrasmissioni consentito è indicato dal campo TTL dell'header di -IP (per maggiori dettagli vedi \secref{sec:IP_xxx}), e viene decrementato -ad ogni passaggio da un router; quando si annulla il pacchetto viene scartato. -Siccome il numero è ad 8 bit il numero massimo di ``salti'' è di 255, pertanto -anche se il TTL (da \textit{time to live}) non è propriamente un limite sul -tempo di vita, si stima che un pacchetto IP non possa restare nella rete per -più di MSL secondi. +IP (per maggiori dettagli vedi \secref{sec:IP_xxx}), e viene decrementato ad +ogni passaggio da un router; quando si annulla il pacchetto viene scartato. +Siccome il numero è ad 8 bit il numero massimo di ``\textsl{salti}'' è di 255, +pertanto anche se il TTL (da \textit{time to live}) non è propriamente un +limite sul tempo di vita, si stima che un pacchetto IP non possa restare nella +rete per più di MSL secondi. Ogni implementazione del TCP deve scegliere un valore per la MSL (l'RFC~1122 raccomanda 2 minuti, Linux usa 30 secondi), questo comporta una durata dello @@ -1042,7 +1041,7 @@ prima connessione completa (estratta dalla relativa coda, vedi socket \param{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 imopstato il socket +mette in attesa il processo\footnote{a meno che non si sia impostato il socket per essere non bloccante (vedi \secref{sec:file_noblocking}), nel qual caso ritorna con l'errore \errcode{EAGAIN}. Torneremo su questa modalità di operazione in \secref{sec:xxx_sock_noblock}.} fintanto che non ne arriva @@ -1123,7 +1122,7 @@ rispetto al precedente esempio. Al solito il sorgente completo del server \begin{lstlisting}{} #include /* predefined types */ #include /* include unix standard library */ -#include /* IP addresses conversion utiliites */ +#include /* IP addresses conversion utililites */ #include /* socket library */ #include /* include standard I/O library */ #include @@ -1222,7 +1221,7 @@ chiusa. \subsection{Le funzioni \func{getsockname} e \func{getpeername}} \label{sec:TCPel_get_names} -Queste due funzioni vengono usate per ottenere i dati realtivi alla socket +Queste due funzioni vengono usate per ottenere i dati relativi alla socket pair associata ad un certo socket; la prima è \funcd{getsockname} e restituisce l'indirizzo locale; il suo prototipo è: \begin{prototype}{sys/socket.h}