X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=tcpsock.tex;h=c896d448780bd9561439b55abb3e3f4092cd809e;hp=9cd9ab726b0c94f549525ab157f5c4164479230a;hb=4e1da5b259a86278710be32441de7b88b9287ec1;hpb=8a9eb0b97e2e52a5774b5aca4b20bd7cf29759ee diff --git a/tcpsock.tex b/tcpsock.tex index 9cd9ab7..c896d44 100644 --- a/tcpsock.tex +++ b/tcpsock.tex @@ -95,9 +95,8 @@ stabilisce la connessione. % conoscere il numero di chi si vuole chiamare. La funzione \func{accept} è % quando si risponde al telefono. -\begin{figure}[htb] - \centering - \includegraphics[width=10cm]{img/three_way_handshake} +\begin{figure}[!htb] + \centering \includegraphics[width=10cm]{img/three_way_handshake} \caption{Il \textit{three way handshake} del TCP.} \label{fig:TCP_TWH} \end{figure} @@ -225,9 +224,8 @@ effettua la chiusura passiva, siano accorpati in un singolo segmento. In fig.~\ref{fig:TCP_close} si è rappresentato graficamente lo sequenza di scambio dei segmenti che conclude la connessione. -\begin{figure}[htb] - \centering - \includegraphics[width=10cm]{img/tcp_close} +\begin{figure}[!htb] + \centering \includegraphics[width=10cm]{img/tcp_close} \caption{La chiusura di una connessione TCP.} \label{fig:TCP_close} \end{figure} @@ -299,9 +297,8 @@ In fig.~\ref{fig:TCP_conn_example} è riportato lo schema dello scambio dei pacchetti che avviene per una un esempio di connessione, insieme ai vari stati che il protocollo viene ad assumere per i due lati, server e client. -\begin{figure}[htb] - \centering - \includegraphics[width=9cm]{img/tcp_connection} +\begin{figure}[!htb] + \centering \includegraphics[width=9cm]{img/tcp_connection} \caption{Schema dello scambio di pacchetti per un esempio di connessione.} \label{fig:TCP_conn_example} \end{figure} @@ -510,8 +507,7 @@ fatto scelte diverse per le porte effimere, in particolare in fig.~\ref{fig:TCP_port_alloc} sono riportate quelle di BSD e Linux. \begin{figure}[!htb] - \centering - \includegraphics[width=13cm]{img/port_alloc} + \centering \includegraphics[width=13cm]{img/port_alloc} \caption{Allocazione dei numeri di porta.} \label{fig:TCP_port_alloc} \end{figure} @@ -950,9 +946,8 @@ nella coda delle connessioni complete è passata al programma, o, se la coda è vuota, il processo viene posto in attesa e risvegliato all'arrivo della prima connessione completa. -\begin{figure}[htb] - \centering - \includegraphics[width=11cm]{img/tcp_listen_backlog} +\begin{figure}[!htb] + \centering \includegraphics[width=11cm]{img/tcp_listen_backlog} \caption{Schema di funzionamento delle code delle connessioni complete ed incomplete.} \label{fig:TCP_listen_backlog} @@ -1288,9 +1283,9 @@ problema si avverte solo in lettura, quando si incontra la fine del file. In generale non è così, e con i socket questo è particolarmente evidente. -\begin{figure}[htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/FullRead.c} \end{minipage} \normalsize @@ -1315,10 +1310,10 @@ fig.~\ref{fig:sock_FullRead_code} e fig.~\ref{fig:sock_FullWrite_code} ed è disponibile fra i sorgenti allegati alla guida nei file \file{FullRead.c} e \file{FullWrite.c}. -\begin{figure}[htb] +\begin{figure}[!htbp] \centering \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/FullWrite.c} \end{minipage} \normalsize @@ -1359,9 +1354,9 @@ funzione per stampare un messaggio di aiuto) è allegato alla guida nella sezione dei codici sorgente e può essere compilato su una qualunque macchina GNU/Linux. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/TCP_daytime.c} \end{minipage} \normalsize @@ -1459,7 +1454,7 @@ esempi. \begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/TCP_iter_daytimed.c} \end{minipage} \normalsize @@ -1556,9 +1551,9 @@ riguardante l'apertura passiva del socket). Al solito il sorgente completo del server, nel file \texttt{TCP\_cunc\_daytimed.c}, è allegato insieme ai sorgenti degli altri esempi. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/TCP_cunc_daytimed.c} \end{minipage} \normalsize @@ -1696,9 +1691,9 @@ client per il servizio \textit{daytime} (vedi sez.~\ref{sec:TCP_daytime_client}), e la prima parte (\texttt{\small 10--27}) è sostanzialmente identica, a parte l'uso di una porta diversa. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6 cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/TCP_echo_first.c} \end{minipage} \normalsize @@ -1744,9 +1739,9 @@ buffer di ricezione e viene inserita (\texttt{\small 8}) la terminazione della stringa e per poter usare (\texttt{\small 9}) la funzione \func{fputs} per scriverli su \file{stdout}. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/ClientEcho_first.c} \end{minipage} \normalsize @@ -1781,7 +1776,7 @@ sez.~\ref{sec:TCP_daytime_cunc_server}, e da una funzione ausiliaria \begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/TCP_echod_first.c} \end{minipage} \normalsize @@ -1861,9 +1856,9 @@ in modalità interattiva (attivabile con l'opzione \texttt{-i}) si usa (\texttt{\small 5}) semplicemente la funzione \func{perror} per stampare sullo standard error. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/PrintErr.c} \end{minipage} \normalsize @@ -1885,9 +1880,9 @@ si incarica di tenere conto automaticamente della possibilità che non tutti i dati di cui è richiesta la scrittura vengano trasmessi con una singola \func{write}. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/ServEcho_first.c} \end{minipage} \normalsize @@ -2098,9 +2093,9 @@ nuova funzione \func{SignalRestart}\footnote{anche questa è definita, insieme allegati.} come mostrato in fig.~\ref{fig:sig_SignalRestart_code}, ed installeremo il gestore usando quest'ultima. -\begin{figure}[!htb] - \footnotesize \centering - \begin{minipage}[c]{15.6cm} +\begin{figure}[!htbp] + \footnotesize \centering + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/SignalRestart.c} \end{minipage} \normalsize @@ -2156,9 +2151,9 @@ fig.~\ref{fig:TCP_echo_server_code_second} la sezione di codice relativa alla gestione di tutte queste opzioni, che può essere trovata nel sorgente del programma. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/TCP_echod_second.c} \end{minipage} \normalsize @@ -2222,9 +2217,9 @@ sia per tenere conto della nuova funzionalità di debugging, che per effettuare un controllo in caso di errore; il codice della nuova versione è mostrato in fig.~\ref{fig:TCP_ServEcho_second}. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/ServEcho_second.c} \end{minipage} \normalsize @@ -2276,9 +2271,8 @@ connessione viene abortita sul lato client per un qualche errore di rete con l'invio di un segmento RST, prima che nel server sia stata chiamata la funzione \func{accept}. -\begin{figure}[htb] - \centering - \includegraphics[width=10cm]{img/tcp_client_early_abort} +\begin{figure}[!htb] + \centering \includegraphics[width=10cm]{img/tcp_client_early_abort} \caption{Un possibile caso di terminazione precoce della connessione.} \label{fig:TCP_early_abort} \end{figure} @@ -2508,9 +2502,9 @@ di errore, per questo dovremo riscrivere la funzione \func{ClientEcho}, in modo da controllare gli stati di uscita delle varie chiamate. Si è riportata la nuova versione della funzione in fig.~\ref{fig:TCP_ClientEcho_second}. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/ClientEcho_second.c} \end{minipage} \normalsize @@ -2898,9 +2892,9 @@ condizione di errore (con un segmento RST) il socket connesso sarà pronto in lettura (nell'ultimo caso anche in scrittura, ma questo non è necessario ai nostri scopi). -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/ClientEcho_third.c} \end{minipage} \normalsize @@ -3177,9 +3171,9 @@ effettuerà la chiusura dalla sua parte. Solo alla ricezione della chiusura del socket da parte del server il client potrà essere sicuro della ricezione di tutti i dati e della terminazione effettiva della connessione. -\begin{figure}[!htb] +\begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/ClientEcho.c} \end{minipage} \normalsize @@ -3255,9 +3249,8 @@ limiterà a registrare l'entrata in uso di un nuovo file descriptor ed utilizzerà \func{select} per rilevare la presenza di dati in arrivo su tutti i file descriptor attivi, operando direttamente su ciascuno di essi. -\begin{figure}[htb] - \centering - \includegraphics[width=13cm]{img/TCPechoMult} +\begin{figure}[!htb] + \centering \includegraphics[width=13cm]{img/TCPechoMult} \caption{Schema del nuovo server echo basato sull'I/O multiplexing.} \label{fig:TCP_echo_multiplex} \end{figure} @@ -3273,7 +3266,7 @@ disponibile coi sorgenti allegati nel file \texttt{select\_echod.c}. \begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/select_echod.c} \end{minipage} \normalsize @@ -3482,7 +3475,7 @@ ma la struttura del programma resta sostanzialmente la stessa. \begin{figure}[!htbp] \footnotesize \centering - \begin{minipage}[c]{15.6cm} + \begin{minipage}[c]{\codesamplewidth} \includecodesample{listati/poll_echod.c} \end{minipage} \normalsize