Materiale sulle opzioni dei socket e qualche riferimento alla futura
authorSimone Piccardi <piccardi@gnulinux.it>
Wed, 6 Sep 2006 15:56:19 +0000 (15:56 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Wed, 6 Sep 2006 15:56:19 +0000 (15:56 +0000)
sezione sul protocollo TCP delle appendici.

network.tex
sockadv.tex
sockctrl.tex
tcpsock.tex
trasplayer.tex

index 15459e0073ceb56bbf195a5ddffc4db4b07cedb1..c96d96b402fa9b0d26fc1c870f5ffa5186b66fb8 100644 (file)
@@ -782,13 +782,12 @@ potendo i router frammentare i pacchetti, 
 conoscere da subito il \textit{path MTU}.
 \itindend{Maximum~Transfer~Unit}
 
 conoscere da subito il \textit{path MTU}.
 \itindend{Maximum~Transfer~Unit}
 
-
-
-Infine TCP definisce una MSS \textit{Maximum Segment Size} che annuncia
-all'altro capo della connessione la dimensione massima dimensione del segmento
-di dati che può essere ricevuto, così da evitare la frammentazione. Di norma
-viene impostato alla dimensione della MTU dell'interfaccia meno la lunghezza
-delle intestazioni di IP e TCP, in Linux il default, mantenuto nella costante
+Infine TCP definisce una \itindex{Maximum~Segment~Size} \textit{Maximum
+  Segment Size} (da qui in avanti abbreviata in MSS) che annuncia all'altro
+capo della connessione la dimensione massima dimensione del segmento di dati
+che può essere ricevuto, così da evitare la frammentazione. Di norma viene
+impostato alla dimensione della MTU dell'interfaccia meno la lunghezza delle
+intestazioni di IP e TCP, in Linux il default, mantenuto nella costante
 \const{TCP\_MSS} è 512.
 
 
 \const{TCP\_MSS} è 512.
 
 
index f50177191246d037f9904369071bdc6cfa9f4ca1..0f0aa32a0d7fc073dc5a234d00e9d0c66b4f25b7 100644 (file)
@@ -68,7 +68,7 @@ Una caratteristica particolare dei socket TCP 
 all'altro capo della comunicazione una sorta di messaggio privilegiato, che si
 richide che sia trattato il prima possibile. Si fa riferimento a questa
 funzionalità come all'invio dei cosiddetti \textsl{dati urgenti} (o
 all'altro capo della comunicazione una sorta di messaggio privilegiato, che si
 richide che sia trattato il prima possibile. Si fa riferimento a questa
 funzionalità come all'invio dei cosiddetti \textsl{dati urgenti} (o
-\textit{udernt data}); tavolta essi chiamati anche dati \textit{out-of-band}
+\textit{urgent data}); tavolta essi chiamati anche dati \textit{out-of-band}
 poiché, come vedremo più anvati, possono essere letti anche al di fuori del
 flusso di dati normale.
 
 poiché, come vedremo più anvati, possono essere letti anche al di fuori del
 flusso di dati normale.
 
index 8bc4d038ee9e228a5076463d2193a225a1c1b3cc..ae340ef9484a64a5239109c8c813af2cdc09ee12 100644 (file)
@@ -2688,42 +2688,42 @@ sono definite in \file{netinet/ip.h}, ed accessibili includendo detto file.
     \hline
     \hline
     \const{IP\_OPTIONS}         &$\bullet$&$\bullet$&&\texttt{void *}& %??? 
     \hline
     \hline
     \const{IP\_OPTIONS}         &$\bullet$&$\bullet$&&\texttt{void *}& %??? 
-      Imposta o riceve le opzioni di IP.\\
+      imposta o riceve le opzioni di IP.\\
     \const{IP\_PKTINFO}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_PKTINFO}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-      Passa un messaggio di informazione.\\
+      passa un messaggio di informazione.\\
     \const{IP\_RECVTOS}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_RECVTOS}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-      Passa un messaggio col campo TOS.\\
+      passa un messaggio col campo TOS.\\
     \const{IP\_RECVTTL}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_RECVTTL}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-      Passa un messaggio col campo TTL.\\
+      passa un messaggio col campo TTL.\\
     \const{IP\_RECVOPTS}        &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_RECVOPTS}        &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-      Passa un messaggio con le opzioni IP.\\
+      passa un messaggio con le opzioni IP.\\
     \const{IP\_RETOPTS}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_RETOPTS}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-      Passa un messaggio con le opzioni IP non trattate.\\
+      passa un messaggio con le opzioni IP non trattate.\\
     \const{IP\_TOS}             &$\bullet$&$\bullet$&         &\texttt{int}& 
     \const{IP\_TOS}             &$\bullet$&$\bullet$&         &\texttt{int}& 
-      Imposta il valore del campo TOS.\\
+      imposta il valore del campo TOS.\\
     \const{IP\_TTL}             &$\bullet$&$\bullet$&         &\texttt{int}& 
     \const{IP\_TTL}             &$\bullet$&$\bullet$&         &\texttt{int}& 
-      Imposta il valore del campo TTL.\\
+      imposta il valore del campo TTL.\\
     \const{IP\_HDRINCL}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_HDRINCL}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-      Passa l'intestazione di IP nei dati.\\
+      passa l'intestazione di IP nei dati.\\
     \const{IP\_RECVERR}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_RECVERR}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-      Abilita la gestione degli errori.\\
+      abilita la gestione degli errori.\\
     \const{IP\_MTU\_DISCOVER}   &$\bullet$&$\bullet$&         &\texttt{int}& 
     \const{IP\_MTU\_DISCOVER}   &$\bullet$&$\bullet$&         &\texttt{int}& 
-      Imposta il Path MTU Discovery.\\
+      imposta il Path MTU Discovery.\\
     \const{IP\_MTU}             &$\bullet$&         &         &\texttt{int}& 
     \const{IP\_MTU}             &$\bullet$&         &         &\texttt{int}& 
-      Legge il valore attuale della MTU.\\
+      legge il valore attuale della MTU.\\
     \const{IP\_ROUTER\_ALERT}   &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_ROUTER\_ALERT}   &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-      Imposta l'opzione \textit{IP router alert} sui pacchetti.\\
+      imposta l'opzione \textit{IP router alert} sui pacchetti.\\
     \const{IP\_MULTICAST\_TTL}  &$\bullet$&$\bullet$&         &\texttt{int}& 
     \const{IP\_MULTICAST\_TTL}  &$\bullet$&$\bullet$&         &\texttt{int}& 
-      Imposta il TTL per i pacchetti \itindex{multicast} \textit{multicast}.\\
+      imposta il TTL per i pacchetti \itindex{multicast} \textit{multicast}.\\
     \const{IP\_MULTICAST\_LOOP} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
     \const{IP\_MULTICAST\_LOOP} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
-      Controlla il reinvio a se stessi dei dati di \itindex{multicast} 
+      controlla il reinvio a se stessi dei dati di \itindex{multicast} 
       \textit{multicast}.\\ 
     \const{IP\_ADD\_MEMBERSHIP} &         &$\bullet$&   &\struct{ip\_mreqn}& 
       \textit{multicast}.\\ 
     \const{IP\_ADD\_MEMBERSHIP} &         &$\bullet$&   &\struct{ip\_mreqn}& 
-      Si unisce a un gruppo di \itindex{multicast} \textit{multicast}.\\
+      si unisce a un gruppo di \itindex{multicast} \textit{multicast}.\\
     \const{IP\_DROP\_MEMBERSHIP}&         &$\bullet$&   &\struct{ip\_mreqn}& 
     \const{IP\_DROP\_MEMBERSHIP}&         &$\bullet$&   &\struct{ip\_mreqn}& 
-      Si sgancia da un gruppo di \textit{multicast}.\\
+      si sgancia da un gruppo di \textit{multicast}.\\
     \const{IP\_MULTICAST\_IF}   &         &$\bullet$&   &\struct{ip\_mreqn}& 
     \const{IP\_MULTICAST\_IF}   &         &$\bullet$&   &\struct{ip\_mreqn}& 
-      Imposta l'interfaccia locale di un socket \itindex{multicast} 
+      imposta l'interfaccia locale di un socket \itindex{multicast} 
       \textit{multicast}.\\ 
    \hline
   \end{tabular}
       \textit{multicast}.\\ 
    \hline
   \end{tabular}
@@ -3000,60 +3000,64 @@ UDP e TCP.\footnote{come per le precedenti, una descrizione di queste opzioni
   è disponibile nella settima sezione delle pagine di manuale, che si può
   consultare rispettivamente con \texttt{man 7 tcp} e \texttt{man 7 udp}; le
   pagine di manuale però, alla stesura di questa sezione (Agosto 2006) sono
   è disponibile nella settima sezione delle pagine di manuale, che si può
   consultare rispettivamente con \texttt{man 7 tcp} e \texttt{man 7 udp}; le
   pagine di manuale però, alla stesura di questa sezione (Agosto 2006) sono
-  alquanto incomplete.}  Dato che questi protocolli sono entrambi trasportati
-su IP, oltre alle opzioni generiche di sez.~\ref{sec:sock_generic_options}
-saranno comunque disponibili anche le precedenti opzioni di
-sez.~\ref{sec:sock_ipv4_options}.\footnote{in realtà in
-  sez.~\ref{sec:sock_ipv4_options} si sono riportate le opzioni per IPv4, ma
-  quelle per TCP e UDP sono le stesse anche quando si usa IPv6.}
+  alquanto incomplete.}  Dato che questi due protocolli sono entrambi
+trasportati su IP,\footnote{qui si sottintende IPv4, ma le opzioni per TCP e
+  UDP sono le stesse anche quando si usa IPv6.} oltre alle opzioni generiche
+di sez.~\ref{sec:sock_generic_options} saranno comunque disponibili anche le
+precedenti opzioni di sez.~\ref{sec:sock_ipv4_options}.\footnote{in realtà in
+  sez.~\ref{sec:sock_ipv4_options} si sono riportate le opzioni per IPv4, al
+  solito qualora si stesse utilizzando IPv6 si potrebbero utilizzare le
+  opzioni di quest'ultimo.}
 
 
 Il protocollo che supporta il maggior numero di opzioni è TCP; per poterle
 utilizzare occorre specificare \const{SOL\_TCP} (o l'equivalente
 
 
 Il protocollo che supporta il maggior numero di opzioni è TCP; per poterle
 utilizzare occorre specificare \const{SOL\_TCP} (o l'equivalente
-\const{IPPROTO\_TCP}) come valore per l'argomento \param{level}. Si è
-riportato un elenco di queste opzioni in tab.~\ref{tab:sock_opt_tcp}.  Le
-costanti indicanti le opzioni del protocollo TCP e tutte le altre costanti ad
-esse collegate sono definite in \file{netinet/tcp.h}, ed accessibili
-includendo detto file.\footnote{in realtà questo è il file usato dalle
-  librerie; la definizione delle opzioni effettivamente supportate da Linux si
-  trova nel file \texttt{linux/tcp.h}, dal quale si sono estratte le costanti
-  di tab.~\ref{tab:sock_opt_tcplevel}.}
+\const{IPPROTO\_TCP}) come valore per l'argomento \param{level}. Si sono
+riportate le varie opzioni disponibili in tab.~\ref{tab:sock_opt_tcp} dove
+sono elencate le rispettive costanti da utilizzare come valore per l'argomento
+\param{optname}. Dette costanti e tutte le altre costanti e strutture
+collegate all'uso delle opzioni TCP sono definite in \file{netinet/tcp.h}, ed
+accessibili includendo detto file.\footnote{in realtà questo è il file usato
+  dalle librerie; la definizione delle opzioni effettivamente supportate da
+  Linux si trova nel file \texttt{linux/tcp.h}, dal quale si sono estratte le
+  costanti di tab.~\ref{tab:sock_opt_tcplevel}.}
 
 \begin{table}[!htb]
   \centering
   \footnotesize
 
 \begin{table}[!htb]
   \centering
   \footnotesize
-  \begin{tabular}[c]{|l|c|c|c|l|l|}
+  \begin{tabular}[c]{|l|c|c|c|l|p{7cm}|}
     \hline
     \textbf{Opzione}&\texttt{get}&\texttt{set}&\textbf{flag}&\textbf{Tipo}&
                     \textbf{Descrizione}\\
     \hline
     \hline
     \hline
     \textbf{Opzione}&\texttt{get}&\texttt{set}&\textbf{flag}&\textbf{Tipo}&
                     \textbf{Descrizione}\\
     \hline
     \hline
-    \const{TCP\_NODELAY}      &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_MAXSEG}       &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_CORK}         &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_KEEPIDLE}     &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_KEEPINTVL}    &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_KEEPCNT}      &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_SYNCNT}       &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_LINGER2}      &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_DEFER\_ACCEPT}&$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_WINDOW\_CLAMP}&$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_INFO}         &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_QUICKACK}     &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{TCP\_CONGESTION}   &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
+    \const{TCP\_NODELAY}      &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& 
+      spedisce tutti i pacchetti il prima possibile.\\
+    \const{TCP\_MAXSEG}       &$\bullet$&$\bullet$&         &\texttt{int}&
+      valore della \itindex{Maximum~Segment~Size} MSS per i pacchetti in
+      uscita.\\  
+    \const{TCP\_CORK}         &$\bullet$&$\bullet$&$\bullet$&\texttt{int}&
+      non invia frame parziali.\\
+    \const{TCP\_KEEPIDLE}     &$\bullet$&$\bullet$&         &\texttt{int}& 
+      tempo in secondi prima di inviare un \textit{keepalive}.\\
+    \const{TCP\_KEEPINTVL}    &$\bullet$&$\bullet$&         &\texttt{int}&
+      tempo in secondi prima fra \textit{keepalive} successivi.\\
+    \const{TCP\_KEEPCNT}      &$\bullet$&$\bullet$&         &\texttt{int}& 
+      numero massimo di \textit{keepalive} inviati.\\
+    \const{TCP\_SYNCNT}       &$\bullet$&$\bullet$&         &\texttt{int}& 
+      numero massimo di ritrasmissioni del pacchetto SYN.\\
+    \const{TCP\_LINGER2}      &$\bullet$&$\bullet$&         &\texttt{int}&
+      tempo di vita in stato \texttt{FIN\_WAIT2}.\\
+    \const{TCP\_DEFER\_ACCEPT}&$\bullet$&$\bullet$&$\bullet$&\texttt{int}&
+      ritorna da \func{accept} solo in presenza di dati.\\
+    \const{TCP\_WINDOW\_CLAMP}&$\bullet$&$\bullet$&         &\texttt{int}&
+      valore della \textit{advertised window}.\\
+    \const{TCP\_INFO}         &$\bullet$&?        &       &\struct{tcp\_info}& 
+      raccoglie informazioni sul socket.\\
+    \const{TCP\_QUICKACK}     &$\bullet$&$\bullet$&$\bullet$&\texttt{int}&
+      abilita la modalità \textit{quickack}.\\
+    \const{TCP\_CONGESTION}   &$\bullet$&$\bullet$&?        &\texttt{?}& %??? 
+      non ancora documentata.\\
    \hline
   \end{tabular}
   \caption{Le opzioni per i socket TCP disponibili al livello
    \hline
   \end{tabular}
   \caption{Le opzioni per i socket TCP disponibili al livello
@@ -3061,16 +3065,37 @@ includendo detto file.\footnote{in realt
   \label{tab:sock_opt_tcplevel}
 \end{table}
 
   \label{tab:sock_opt_tcplevel}
 \end{table}
 
-Le descrizioni di tab.~\ref{tab:sock_opt_tcplevel} sono estremamente
-sintetiche, una maggiore quantità di dettagli su queste opzioni è fornita nel
-seguente elenco:
+Le descrizioni riportata in tab.~\ref{tab:sock_opt_tcplevel} sono estremamente
+sintetiche, una maggiore quantità di dettagli e la spiegazione delle singole
+opzioni è fornita nel seguente elenco:
 \begin{basedescript}{\desclabelwidth{3.0cm}\desclabelstyle{\nextlinelabel}}
 
 \begin{basedescript}{\desclabelwidth{3.0cm}\desclabelstyle{\nextlinelabel}}
 
-\item[\const{TCP\_NODELAY}] 
-
-\item[\const{TCP\_MAXSEG}] 
-
-\item[\const{TCP\_CORK}] 
+\item[\const{TCP\_NODELAY}] il protocollo TCP prevede, per evitare la
+  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
+  fintanto che non si raggiunge una quantità di dati considerata adeguata per
+  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}.
+
+\item[\const{TCP\_MAXSEG}] permette di leggere e modificare il valore della
+  \itindex{Maximum~Segment~Size} MSS dei pacchetti uscenti, e se l'opzione è
+  impostata prima di stabilire la connessione, cambia anche il valore della
+  MSS annunciata all'altro capo della connessione. Se si specificano valori
+  maggiori della MTU questi verranno ignorati, inoltre TCP imporrà anche i
+  suoi limiti massimo e minimo per questo valore.
+
+\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. 
 
 \item[\const{TCP\_KEEPINTVL}] 
 
 
 \item[\const{TCP\_KEEPINTVL}] 
 
@@ -3112,10 +3137,10 @@ file.\footnote{come per TCP, la definizione delle opzioni effettivamente
                     \textbf{Descrizione}\\
     \hline
     \hline
                     \textbf{Descrizione}\\
     \hline
     \hline
-    \const{UDP\_CORK}  &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
-    \const{UDP\_ENCAP} &$\bullet$&$\bullet$&&\texttt{}& %??? 
-      .\\
+    \const{UDP\_CORK}  &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& %??? 
+      accumula tutti i dati su un unico pacchetto.\\
+    \const{UDP\_ENCAP} &$\bullet$&$\bullet$&$\bullet$&\texttt{int}& %??? 
+      non documentata.\\
    \hline
   \end{tabular}
   \caption{Le opzioni per i socket UDP disponibili al livello
    \hline
   \end{tabular}
   \caption{Le opzioni per i socket UDP disponibili al livello
index d3d1f559c4ffa3fd66f861fb83d2a993e4bb2ae0..355593755aec47bc9f7e4c3acbcdbe0d72bee29e 100644 (file)
@@ -131,11 +131,12 @@ dati) che servono a comunicare all'altro capo una serie di parametri utili a
 regolare la connessione. Normalmente vengono usate le seguenti opzioni:
 
 \begin{itemize}
 regolare la connessione. Normalmente vengono usate le seguenti opzioni:
 
 \begin{itemize}
-\item \textit{MSS option}, dove MMS sta per \textit{maximum segment size}, con
-  questa opzione ciascun capo della connessione annuncia all'altro il massimo
-  ammontare di dati che vorrebbe accettare per ciascun segmento nella
-  connessione corrente. È possibile leggere e scrivere questo valore
-  attraverso l'opzione del socket \const{TCP\_MAXSEG}.
+\item \textit{MSS option}, dove MMS sta per \itindex{Maximum~Segment~Size}
+  \textit{Maximum Segment Size}, con questa opzione ciascun capo della
+  connessione annuncia all'altro il massimo ammontare di dati che vorrebbe
+  accettare per ciascun segmento nella connessione corrente. È possibile
+  leggere e scrivere questo valore attraverso l'opzione del socket
+  \const{TCP\_MAXSEG}.
   
 \item \textit{window scale
     option}, %come spiegato in sez.~\ref{sec:tcp_protocol}
   
 \item \textit{window scale
     option}, %come spiegato in sez.~\ref{sec:tcp_protocol}
@@ -165,8 +166,8 @@ regolare la connessione. Normalmente vengono usate le seguenti opzioni:
 
 \end{itemize}
 
 
 \end{itemize}
 
-La MSS è generalmente supportata da quasi tutte le implementazioni del
-protocollo, le ultime due opzioni (trattate
+La MSS \itindex{Maximum~Segment~Size} è generalmente supportata da quasi tutte
+le implementazioni del protocollo, le ultime due opzioni (trattate
 nell'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}) sono meno comuni;
 vengono anche dette \textit{long fat pipe options} dato che questo è il nome
 che viene dato alle connessioni caratterizzate da alta velocità o da ritardi
 nell'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}) sono meno comuni;
 vengono anche dette \textit{long fat pipe options} dato che questo è il nome
 che viene dato alle connessioni caratterizzate da alta velocità o da ritardi
@@ -290,9 +291,10 @@ che il protocollo viene ad assumere per i due lati, server e client.
   \label{fig:TCP_conn_example}
 \end{figure}
 
   \label{fig:TCP_conn_example}
 \end{figure}
 
-La connessione viene iniziata dal client che annuncia un MSS di 1460, un
-valore tipico con Linux per IPv4 su Ethernet, il server risponde con lo stesso
-valore (ma potrebbe essere anche un valore diverso).
+La connessione viene iniziata dal client che annuncia una MSS
+\itindex{Maximum~Segment~Size} di 1460, un valore tipico con Linux per IPv4 su
+Ethernet, il server risponde con lo stesso valore (ma potrebbe essere anche un
+valore diverso).
 
 Una volta che la connessione è stabilita il client scrive al server una
 richiesta (che assumiamo stare in un singolo segmento, cioè essere minore dei
 
 Una volta che la connessione è stabilita il client scrive al server una
 richiesta (che assumiamo stare in un singolo segmento, cioè essere minore dei
index 243177fc3f0048c5f6212597f2276e24f3e9f2bf..2bb10eb472829fe991adeb53e3bea6e9994de38e 100644 (file)
@@ -52,6 +52,11 @@ fig.~\ref{fig:TCP_state_diag} sono gli stessi che vengono riportati del
 comando \cmd{netstat} nel campo \textit{State}.
 
 
 comando \cmd{netstat} nel campo \textit{State}.
 
 
+% TODO trattare la MSS
+% TODO trattare la advertised window
+
+
+
 
 \section{Il protocollo UDP}
 \label{sec:udp_protocol}
 
 \section{Il protocollo UDP}
 \label{sec:udp_protocol}