X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=elemtcp.tex;h=ba1760aea3ca9009c2ed08ff282d43f5c7cee225;hp=fc1d1d754ac362ea8e0caeee8f93579599fce698;hb=877a1d6577ab41ce13b0a2794b73885d98e0d7cc;hpb=06661f47754a536098afe2b30cb04469918f2fa3 diff --git a/elemtcp.tex b/elemtcp.tex index fc1d1d7..ba1760a 100644 --- a/elemtcp.tex +++ b/elemtcp.tex @@ -12,26 +12,27 @@ \label{cha:elem_TCP_sock} In questo capitolo iniziamo ad approfondire la conoscenza dei socket TCP, -tratteremo qui dunque il funzionamento delle varie funzioni che si sono usate -nei due esempi elementari forniti in precedenza (vedi -\secref{sec:net_cli_sample} e \secref{sec:net_serv_sample}), previa una -descrizione delle principali caratteristiche del funzionamento di una -connessione TCP. +tratteremo qui dunque le varie funzioni che si sono usate nei due esempi +elementari forniti nel capitolo precedente (vedi \secref{sec:net_cli_sample} e +\secref{sec:net_serv_sample}), previa una descrizione delle principali +caratteristiche del funzionamento di una connessione TCP. \section{Il funzionamento di una connessione TCP} \label{sec:TCPel_connession} Prima di entrare nei dettagli delle funzioni usate nelle applicazioni che -utilizzano i socket TCP, è fondamentale spiegare alcune basi del funzionamento -del TCP; la conoscenza del funzionamento del protocollo è infatti essenziale -per capire il modello di programmazione ed il funzionamento delle API. - -In particolare ci concentreremo sulle modalità con le quali il protocollo dà -inizio e conclude una connessione; faremo inoltre anche un breve accenno al -significato di alcuni dei vari stati che il protocollo assume durante la vita -di una connessione, che possono essere osservati per ciascun -socket\index{socket} attivo con l'uso del programma \cmd{netstat}. +utilizzano i socket TCP, è fondamentale spiegare alcune delle basi del +funzionamento del protocollo poiché questa conoscenza è essenziale per +comprendere il comportamento di dette funzioni per questi socket, ed il +relativo modello di programmazione. + +Il protocollo TCP serve a creare degli \textit{stream socket}, cioè un canale +di comunicazione che stabilisce una connessione fra due stazioni, in modo che +queste possano scambiarsi i dati. In questo capitolo ci concentreremo sulle +modalità con le quali il protocollo dà inizio e conclude una connessione e +faremo inoltre un breve accenno al significato di alcuni dei vari stati che +questa viene ad assumere durante la sua vita. \subsection{La creazione della connessione: il \textit{three way handshake}} \label{sec:TCPel_conn_cre} @@ -55,7 +56,7 @@ creazione di una connessione \textsl{apertura attiva}, dall'inglese \textit{active open}. La chiamata di \func{connect} blocca il processo e causa l'invio da parte del client di un segmento SYN,\footnote{Si ricordi che il segmento è l'unità elementare di - dati trasmessa dal protocollo TCP al livello superiore; tutti i segmenti + dati trasmessa dal protocollo TCP al livello successivo; tutti i segmenti hanno un header che contiene le informazioni che servono allo \textit{stack TCP} (così viene di solito chiamata la parte del kernel che implementa il protocollo) per realizzare la comunicazione, fra questi dati