X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=tcpsock.tex;h=84503739f96546938d0a13c45b6cb86313699ea7;hb=b81e6a00eb42328ad0bdece65fe595a42864faa9;hp=6b28862a93d1f5b307d622490535dd22a3a4b3cb;hpb=4aa6c51696d2b11c572eccd37238db1691785573;p=gapil.git diff --git a/tcpsock.tex b/tcpsock.tex index 6b28862..8450373 100644 --- a/tcpsock.tex +++ b/tcpsock.tex @@ -135,12 +135,13 @@ comunicare all'altro capo una serie di parametri utili a regolare la connessione. Normalmente vengono usate le seguenti opzioni: \begin{itemize} -\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} (vedi sez.~\ref{sec:sock_tcp_udp_options}). +\item \textit{MSS option}, dove MMS sta per + \itindex{Maximum~Segment~Size~(MSS)} \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} (vedi + sez.~\ref{sec:sock_tcp_udp_options}). \item \textit{window scale option}, il protocollo TCP implementa il controllo di flusso attraverso una \itindex{advertised~window} \textit{advertised @@ -179,8 +180,8 @@ connessione. Normalmente vengono usate le seguenti opzioni: \end{itemize} -La MSS \itindex{Maximum~Segment~Size} è generalmente supportata da quasi tutte -le implementazioni del protocollo, le ultime due opzioni (trattate +La MSS \itindex{Maximum~Segment~Size~(MSS)} è 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 @@ -304,9 +305,9 @@ che il protocollo viene ad assumere per i due lati, server e client. \end{figure} La connessione viene iniziata dal client che annuncia una -\itindex{Maximum~Segment~Size} 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). +\itindex{Maximum~Segment~Size~(MSS)} 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). Una volta che la connessione è stabilita il client scrive al server una richiesta (che assumiamo stare in un singolo segmento, cioè essere minore dei @@ -518,7 +519,7 @@ un socket solo da un processo con i privilegi di amministratore, per far sì che solo l'amministratore possa allocare queste porte per far partire i relativi servizi. -Le \textsl{glibc} definiscono (in \texttt{netinet/in.h}) +Le \textsl{glibc} definiscono in \headfile{netinet/in.h} \const{IPPORT\_RESERVED} e \const{IPPORT\_USERRESERVED}, in cui la prima (che vale 1024) indica il limite superiore delle porte riservate, e la seconda (che vale 5000) il limite inferiore delle porte a disposizione degli utenti. La @@ -577,7 +578,7 @@ posto in ascolto per connessioni provenienti da uno qualunque degli indirizzi associati alle interfacce locali. La notazione \texttt{0.0.0.0} usata da \cmd{netstat} è equivalente all'asterisco utilizzato per il numero di porta, indica il valore generico, e corrisponde al valore \const{INADDR\_ANY} -definito in \file{arpa/inet.h} (vedi \ref{tab:TCP_ipv4_addr}). +definito in \headfile{arpa/inet.h} (vedi \ref{tab:TCP_ipv4_addr}). Inoltre si noti come la porta e l'indirizzo di ogni eventuale connessione esterna non sono specificati; in questo caso la \textit{socket pair} associata @@ -760,7 +761,7 @@ metodo con IPv6, in cui l'indirizzo deve necessariamente essere specificato con una struttura, perché il linguaggio C non consente l'uso di una struttura costante come operando a destra in una assegnazione. -Per questo motivo nell'header \file{netinet/in.h} è definita una variabile +Per questo motivo nell'header \headfile{netinet/in.h} è definita una variabile \macro{in6addr\_any} (dichiarata come \direct{extern}, ed inizializzata dal sistema al valore \const{IN6ADRR\_ANY\_INIT}) che permette di effettuare una assegnazione del tipo: \includecodesnip{listati/serv_addr_sin6_addr.c} in @@ -3143,7 +3144,7 @@ velocità consentitagli dalla rete, sul socket. Dato che la connessione è con una macchina remota occorre un certo tempo perché i pacchetti vi arrivino, vengano processati, e poi tornino indietro. Considerando trascurabile il tempo di processo, questo tempo è quello impiegato nella trasmissione via rete, che -viene detto RTT (dalla denominazione inglese \itindex{Round~Trip~Time} +viene detto RTT (dalla denominazione inglese \itindex{Round~Trip~Time~(RTT)} \textit{Round Trip Time}) ed è quello che viene stimato con l'uso del comando \cmd{ping}. @@ -3576,7 +3577,7 @@ sez.~\ref{sec:TCP_serv_select}. -\subsection{I/O multiplexing con \func{epoll}} +\subsection{I/O multiplexing con \textit{epoll}} \label{sec:TCP_serv_epoll} Da fare.