righe sulle funzioni del resolver.
scp html/*.html piccardi@firenze.linux.it:public_html/gapil/
clean:
rm -f *.dvi *.log *.ps *.html *.aux *.toc *.rel *.ilg *.rip *.ind \
- *.pdf *.out *.idx *~ listati/*.html img/*.ps img/*.pdf
+ *.pdf *.out *.idx *~ listati/*.html img/*.ps img/*.eps img/*.pdf
}
@Booklet{UnixFaq,
title = {Unix Programming Frequently Asked Questions},
- OPTkey = {},
author = {Andrew Gierth},
OPThowpublished = {http://www.erlenstar.demon.co.uk/unix/faq_toc.html},
OPTaddress = {},
OPTnote = {},
OPTannote = {}
}
+@Book{AGL,
+ title = {Amministrare GNU/Linux},
+ author = {Simone Piccardi},
+ editor = {Truelite Srl},
+ publisher = {Truelite Srl},
+ year = {2004},
+ OPThowpublished = {http://sources.truelite.it/sw/documentazione/docs/corso.pdf},
+ OPTkey = {},
+ OPTaddress = {},
+ OPTmonth = {},
+ OPTyear = {},
+ OPTnote = {},
+ OPTannote = {}
+}
+@Book{DNSbind,
+ author = {Cricket Liu and Paul Albitz},
+ editor = {O'Reilly},
+ title = {DNS and BIND},
+ publisher = {O'Reilly},
+ year = {1998},
+ OPTkey = {},
+ OPTvolume = {},
+ OPTnumber = {},
+ OPTseries = {},
+ OPTaddress = {},
+ OPTedition = {3rd},
+ OPTmonth = {},
+ OPTnote = {},
+ OPTannote = {}
+}
%% errors.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% fileadv.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% filedir.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
\textbf{Funzione} & \textbf{Segue il link} & \textbf{Non segue il link} \\
\hline
\hline
- \func{access} & $\bullet$ & \\
- \func{chdir} & $\bullet$ & \\
- \func{chmod} & $\bullet$ & \\
- \func{chown} & & $\bullet$ \\
- \func{creat} & $\bullet$ & \\
- \func{exec} & $\bullet$ & \\
+ \func{access} & $\bullet$ & -- \\
+ \func{chdir} & $\bullet$ & -- \\
+ \func{chmod} & $\bullet$ & -- \\
+ \func{chown} & -- & $\bullet$ \\
+ \func{creat} & $\bullet$ & -- \\
+ \func{exec} & $\bullet$ & -- \\
\func{lchown} & $\bullet$ & $\bullet$ \\
- \func{link} & & \\
- \func{lstat} & & $\bullet$ \\
- \func{mkdir} & $\bullet$ & \\
- \func{mkfifo} & $\bullet$ & \\
- \func{mknod} & $\bullet$ & \\
- \func{open} & $\bullet$ & \\
- \func{opendir} & $\bullet$ & \\
- \func{pathconf} & $\bullet$ & \\
- \func{readlink} & & $\bullet$ \\
- \func{remove} & & $\bullet$ \\
- \func{rename} & & $\bullet$ \\
- \func{stat} & $\bullet$ & \\
- \func{truncate} & $\bullet$ & \\
- \func{unlink} & & $\bullet$ \\
+ \func{link} & -- & -- \\
+ \func{lstat} & -- & $\bullet$ \\
+ \func{mkdir} & $\bullet$ & -- \\
+ \func{mkfifo} & $\bullet$ & -- \\
+ \func{mknod} & $\bullet$ & -- \\
+ \func{open} & $\bullet$ & -- \\
+ \func{opendir} & $\bullet$ & -- \\
+ \func{pathconf} & $\bullet$ & -- \\
+ \func{readlink} & -- & $\bullet$ \\
+ \func{remove} & -- & $\bullet$ \\
+ \func{rename} & -- & $\bullet$ \\
+ \func{stat} & $\bullet$ & -- \\
+ \func{truncate} & $\bullet$ & -- \\
+ \func{unlink} & -- & $\bullet$ \\
\hline
\end{tabular}
\caption{Uso dei link simbolici da parte di alcune funzioni.}
\hline
\hline
\func{chmod}, \func{fchmod}
- & & &$\bullet$& & & & \\
+ & -- & -- &$\bullet$& -- & -- & -- & \\
\func{chown}, \func{fchown}
- & & &$\bullet$& & & & \\
+ & -- & -- &$\bullet$& -- & -- & -- & \\
\func{creat}
- &$\bullet$&$\bullet$&$\bullet$& &$\bullet$&$\bullet$& con
+ &$\bullet$&$\bullet$&$\bullet$& -- &$\bullet$&$\bullet$& con
\const{O\_CREATE} \\ \func{creat}
- & &$\bullet$&$\bullet$& &$\bullet$&$\bullet$&
+ & -- &$\bullet$&$\bullet$& -- &$\bullet$&$\bullet$&
con \const{O\_TRUNC} \\ \func{exec}
- &$\bullet$& & & & & & \\
+ &$\bullet$& -- & -- & -- & -- & -- & \\
\func{lchown}
- & & &$\bullet$& & & & \\
+ & -- & -- &$\bullet$& -- & -- & -- & \\
\func{link}
- & & &$\bullet$& &$\bullet$&$\bullet$& \\
+ & -- & -- &$\bullet$& -- &$\bullet$&$\bullet$& \\
\func{mkdir}
- &$\bullet$&$\bullet$&$\bullet$& &$\bullet$&$\bullet$& \\
+ &$\bullet$&$\bullet$&$\bullet$& -- &$\bullet$&$\bullet$& \\
\func{mkfifo}
- &$\bullet$&$\bullet$&$\bullet$& &$\bullet$&$\bullet$& \\
+ &$\bullet$&$\bullet$&$\bullet$& -- &$\bullet$&$\bullet$& \\
\func{open}
- &$\bullet$&$\bullet$&$\bullet$& &$\bullet$&$\bullet$& con
+ &$\bullet$&$\bullet$&$\bullet$& -- &$\bullet$&$\bullet$& con
\const{O\_CREATE} \\ \func{open}
- & &$\bullet$&$\bullet$& & & & con
+ & -- &$\bullet$&$\bullet$& -- & -- & -- & con
\const{O\_TRUNC} \\ \func{pipe}
- &$\bullet$&$\bullet$&$\bullet$& & & & \\
+ &$\bullet$&$\bullet$&$\bullet$& -- & -- & -- & \\
\func{read}
- &$\bullet$& & & & & & \\
+ &$\bullet$& -- & -- & -- & -- & -- & \\
\func{remove}
- & & &$\bullet$& &$\bullet$&$\bullet$& se esegue
+ & -- & -- &$\bullet$& -- &$\bullet$&$\bullet$& se esegue
\func{unlink}\\ \func{remove}
- & & & & &$\bullet$&$\bullet$& se esegue
+ & -- & -- & -- & -- &$\bullet$&$\bullet$& se esegue
\func{rmdir}\\ \func{rename}
- & & &$\bullet$& &$\bullet$&$\bullet$& per entrambi
+ & -- & -- &$\bullet$& -- &$\bullet$&$\bullet$& per entrambi
gli argomenti\\ \func{rmdir}
- & & & & &$\bullet$&$\bullet$& \\
+ & -- & -- & -- & -- &$\bullet$&$\bullet$& \\
\func{truncate}, \func{ftruncate}
- & &$\bullet$&$\bullet$& & & & \\
+ & -- &$\bullet$&$\bullet$& -- & -- & -- & \\
\func{unlink}
- & & &$\bullet$& &$\bullet$&$\bullet$& \\
+ & -- & -- &$\bullet$& -- &$\bullet$&$\bullet$& \\
\func{utime}
- &$\bullet$&$\bullet$&$\bullet$& & & & \\
+ &$\bullet$&$\bullet$&$\bullet$& -- & -- & -- & \\
\func{write}
- & &$\bullet$&$\bullet$& & & & \\
+ & -- &$\bullet$&$\bullet$& -- & -- & -- & \\
\hline
\end{tabular}
\caption{Prospetto dei cambiamenti effettuati sui tempi di ultimo
-% fileintro.tex
+%% fileintro.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% filestd.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% fileunix.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% gapil.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
\begin{quote}
- Copyright \copyright\ 2000-2003 Simone Piccardi. Permission is granted to
+ Copyright \copyright\ 2000-2004 Simone Piccardi. Permission is granted to
copy, distribute and/or modify this document under the terms of the GNU Free
Documentation License, Version 1.1 or any later version published by the
Free Software Foundation; with the Invariant Sections being ``Prefazione'',
%% intro.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% ipc.tex
%%
-%% Copyright (C) 2000-2002 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% macro.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% ipprot.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
\label{sec:ip_protocol}
L'attuale \textit{Internet Protocol} (IPv4) viene standardizzato nel 1981
-dall'\href{http://www.ietf.org/rfc/rfc0719.txt}{RFC~719}; esso nasce per
+dall'\href{http://www.ietf.org/rfc/rfc719.txt}{RFC~719}; esso nasce per
disaccoppiare le applicazioni della struttura hardware delle reti di
trasmissione, e creare una interfaccia di trasmissione dei dati indipendente
dal sottostante substrato di rete, che può essere realizzato con le tecnologie
Per questo motivo si iniziò a progettare una nuova versione del protocollo
L'attuale Internet Protocol (IPv4) viene standardizzato nel 1981
-dall'\href{http://www.ietf.org/rfc/rfc0719.txt}{RFC~719}; esso nasce per
+dall'\href{http://www.ietf.org/rfc/rfc719.txt}{RFC~719}; esso nasce per
disaccoppiare le applicazioni della struttura hardware delle reti di
trasmissione, e creare una interfaccia di trasmissione dei dati indipendente
dal sottostante substrato di rete, che può essere realizzato con le tecnologie
%% network.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% process.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
\textbf{SVr4} & \textbf{BSD} & \textbf{Linux} \\
\hline
\hline
- \func{getenv} & $\bullet$ & $\bullet$ & $\bullet$ &
- $\bullet$ & $\bullet$ & $\bullet$ \\
- \func{setenv} & & & &
- & $\bullet$ & $\bullet$ \\
- \func{unsetenv} & & & &
- & $\bullet$ & $\bullet$ \\
- \func{putenv} & & opz. & $\bullet$ &
- & $\bullet$ & $\bullet$ \\
- \func{clearenv} & & opz. & &
- & & $\bullet$ \\
+ \func{getenv} & $\bullet$ & $\bullet$ & $\bullet$
+ & $\bullet$ & $\bullet$ & $\bullet$ \\
+ \func{setenv} & -- & -- & --
+ & -- & $\bullet$ & $\bullet$ \\
+ \func{unsetenv}& -- & -- & --
+ & -- & $\bullet$ & $\bullet$ \\
+ \func{putenv} & -- & opz. & $\bullet$
+ & -- & $\bullet$ & $\bullet$ \\
+ \func{clearenv}& -- & opz. & --
+ & -- & -- & $\bullet$ \\
\hline
\end{tabular}
\caption{Funzioni per la gestione delle variabili di ambiente.}
%% prochand.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% ringraziamenti.tex
%%
-%% Copyright (C) 2000-2002 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% session.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% signal.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
La risoluzione dei nomi è associata tradizionalmente al servizio del
\textit{Domain Name Service} che permette di identificare le macchine su
internet invece che per numero IP attraverso il relativo \textsl{nome a
- dominio}. In realtà per DNS si intendono spesso i server che forniscono su
-internet questo servizio, mentre nel nostro caso affronteremo la problematica
-dal lato client, di un qualunque programma che necessita di compiere questa
-operazione.
+ dominio}.\footnote{non staremo ad entrare nei dettagli della definizione di
+ cosa è un nome a dominio, dandolo per noto, una introduzione alla
+ problematica si trova in \cite{AGL} (cap. 9) mentre per una trattazione
+ approfondita di tutte le problematiche relative al DNS si può fare
+ riferimento a \cite{DNSbind}.} In realtà per DNS si intendono spesso i
+server che forniscono su internet questo servizio, mentre nel nostro caso
+affronteremo la problematica dal lato client, di un qualunque programma che
+necessita di compiere questa operazione.
\begin{figure}[htb]
\centering
le relative informazioni sono raggiungibili, scritti nell'ordine in cui si
vuole siano interrogati.
-Ogni servizio è specificato a sua volta da un nome, come \texttt{file},
-\texttt{dns}, \texttt{db}, ecc. che identifica la libreria dinamica che
-realizza l'interfaccia con esso. Per ciascun servizio se \texttt{NAME} è il
-nome utilizzato dentro \file{/etc/nsswitch.conf}, dovrà essere presente
-(usualmente in \file{/lib}) una libreria \texttt{libnss\_NAME} che ne
-implementa le funzioni.
+Ogni servizio è specificato a sua volta da un nome, come \texttt{file},
+\texttt{dns}, \texttt{db}, ecc. che identifica la libreria dinamica che
+realizza l'interfaccia con esso. Per ciascun servizio se \texttt{NAME} è il
+nome utilizzato dentro \file{/etc/nsswitch.conf}, dovrà essere presente
+(usualmente in \file{/lib}) una libreria \texttt{libnss\_NAME} che ne
+implementa le funzioni.
In ogni caso, qualunque sia la modalità con cui ricevono i dati o il supporto
su cui vengono mantenuti, e che si usino o meno funzionalità aggiuntive
dominio conviene trattare in maniera più dettagliata il meccanismo principale
da esse utilizzato e cioè quello del servizio DNS. Come accennato questo,
benché in teoria sia solo uno dei possibili supporti su cui mantenere le
-relative informazioni, in pratica costituisce il meccanismo principale
+informazioni, in pratica costituisce il meccanismo principale con cui vengono
+risolti i nomi a dominio. Per questo motivo esistono una serie di funzioni di
+libreria che servono specificamente ad esseguire delle interrogazioni verso un
+server DNS, funzioni che poi vengono utilizzate per realizzare le funzioni
+generiche di libreria usate anche dal sistema del \textit{resolver}.
+Il sistema del DNS è in sostanza di un database distribuito organizzato in
+maniera gerarchica, la manutenzione dei dati è mantenuta in tanti server
+distinti ciascuno dei quali si occupa della risoluzione del proprio
+\textit{dominio}; i nomi a dominio sono poi organizzati in una struttura ad
+albero analoga a quella dell'albero dei file in un sistema unix-like, con
+domini di primo livello (come i \texttt{.org}), secondo livello (come
+\texttt{.truelite.it}), ecc. In questo caso le separazioni sono fra i vari
+livelli sono definite dal carattere ``\texttt{.}'' ed i nomi devono essere
+risolti da destra verso sinistra. Il meccanismo funziona con il criterio della
+\textsl{delegazione}, un server responsabile per un dominio di primo livello
+può delegare la risoluzione degli indirizzi per un suo dominio di secondo
+livello ad un altro server, il quale a sua volta potrà delegare la risoluzione
+di un eventuale sottodominio di terzo livello ad un altro server ancora.
-Per questo motivo il \textit{resolver} prevede delle funzioni che permettono
-sia di eseguire direttamente delle interrogazione ad un server DNS, che di
-controllare le modalità con cui queste vengono eseguite; diventa così
-possibile modificare da programma buona parte dei parametri controllati da
-\file{/etc/resolv.conf}.
+In realtà un server DNS contiene comunque una serie di altre informazioni;
+ciascuna voce nel database viene chiamata \textit{resource record}, e viene
+vi è associato un certo \textsl{tipo}, identificato da una sigla.
-Per capire meglio il contenuto della struttura \struct{hostent} conviene
-spendere alcune parole sul funzionamento del DNS. Questo in sostanza è un
-database distribuito organizzato in maniera gerarchica, interrogando il quale
-si possono avere una serie di informazioni, la principale delle quali è la
-corrispondenza fra un nome (a dominio) ed indirizzo IP. Un server DNS
-contiene comunque una serie di altre informazioni; ciascuna voce nel database
-viene chiamata \textit{resource record} e vi è associato un certo
-\textsl{tipo}, identificato da una sigla. Per quanto ci interessa i tipi di
-\textit{resource record} che vengono utilizzati dal \textit{resolver} sono
-sostanzialmente i seguenti:
+
+interrogando il quale si possono avere una serie di informazioni,
+la principale delle quali è appunto la corrispondenza fra un nome (a dominio)
+ed indirizzo IP.
+
+
+Per quanto ci interessa i tipi di \textit{resource record} che vengono
+utilizzati dal \textit{resolver} sono sostanzialmente i seguenti:
\begin{basedescript}{\desclabelwidth{1.2cm}\desclabelstyle{\nextlinelabel}}
\item[\texttt{A}] indica la corripondenza fra un nome a dominio ed un
indirizzo IPv4, ad esempio la corrispondenza fra \texttt{dodds.truelite.it}
+
+
+
+Per questo motivo il \textit{resolver} prevede delle funzioni che permettono
+sia di eseguire direttamente delle interrogazione ad un server DNS, che di
+controllare le modalità con cui queste vengono eseguite; diventa così
+possibile modificare da programma buona parte dei parametri controllati da
+\file{/etc/resolv.conf}.
+
+
+
\subsection{La risoluzione dei nomi a dominio}
\label{sec:sock_gethostbyname}
%% socket.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% system.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% tcpsock.tex
%%
-%% Copyright (C) 2000-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
Avendo introdotto le funzioni di base per la gestione dei socket, potremo
vedere in questa sezione un primo esempio di applicazione elementare che
implementa il servizio \textit{daytime} su TCP, secondo quanto specificato
-dall'\href{http://www.ietf.org/rfc/rfc0867.txt}{RFC~867}. Prima di passare
+dall'\href{http://www.ietf.org/rfc/rfc867.txt}{RFC~867}. Prima di passare
agli esempi del client e del server, inizieremo riesaminando con maggiori
dettagli una peculiarità delle funzioni di I/O, già accennata in
\secref{sec:file_read} e \secref{sec:file_write}, che nel caso dei socket è
Il primo esempio di applicazione delle funzioni di base illustrate in
\secref{sec:TCP_functions} è relativo alla creazione di un client elementare
per il servizio \textit{daytime}, un servizio elementare, definito
-nell'\href{http://www.ietf.org/rfc/rfc0867.txt}{RFC~867}, che restituisce
+nell'\href{http://www.ietf.org/rfc/rfc867.txt}{RFC~867}, che restituisce
l'ora locale della macchina a cui si effettua la richiesta, e che è assegnato
alla porta 13.
Il servizio \textit{echo} è uno dei servizi standard solitamente provvisti
direttamente dal superserver \cmd{inetd}, ed è definito
-dall'\href{http://www.ietf.org/rfc/rfc0862.txt}{RFC~862}. Come dice il nome il
+dall'\href{http://www.ietf.org/rfc/rfc862.txt}{RFC~862}. Come dice il nome il
servizio deve riscrivere indietro sul socket i dati che gli vengono inviati in
ingresso. L'RFC descrive le specifiche del servizio sia per TCP che UDP, e per
il primo stabilisce che una volta stabilita la connessione ogni dato in
%% tcpprot.tex
%%
-%% Copyright (C) 2002-2003 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2002-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",