From: Simone Piccardi Date: Sun, 26 Mar 2006 18:07:37 +0000 (+0000) Subject: Altre correzioni ortografiche. X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=ff05163a86ad2a9810c030dcd0434190d9fe16eb Altre correzioni ortografiche. --- diff --git a/sockadv.tex b/sockadv.tex index e4b0e2c..1fc196f 100644 --- a/sockadv.tex +++ b/sockadv.tex @@ -21,7 +21,7 @@ multiplexing (vedi sez.~\ref{sec:file_multiplexing}) con i socket. \section{Le funzioni di I/O avanzate} \label{sec:sock_advanced_IO} -Tratterremo in questa sezione le funzioni di I/O più avanzate che permettono di +Tratteremo in questa sezione le funzioni di I/O più avanzate che permettono di controllare le funzionalità specifiche della comunicazione dei dati che sono disponibili con i vari tipi di socket. @@ -69,7 +69,7 @@ cosiddetti dati \textit{out-of-band} ... \section{L'uso dell'I/O non bloccante} \label{sec:sock_noblok_IO} -Tratterremo in questa sezione le modalità avanzate che permettono di utilizzare +Tratteremo in questa sezione le modalità avanzate che permettono di utilizzare i socket con una comunicazione non bloccante, in modo da diff --git a/sockctrl.tex b/sockctrl.tex index 65c0535..5dc63a4 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -983,7 +983,7 @@ insieme a tutto lo spazio necessario a contenere i dati in essa referenziati; per questo motivo queste funzioni non soffrono dei problemi dovuti all'uso di una sezione statica di memoria presenti con le precedenti \func{gethostbyname} e \func{gethostbyaddr}. L'uso di una allocazione dinamica però comporta anche -la necessità di deallocare esplicitamente la memoria occupata dai risultati +la necessità di disallocare esplicitamente la memoria occupata dai risultati una volta che questi non siano più necessari; a tale scopo viene fornita la funzione \funcd{freehostent}, il cui prototipo è: \begin{functions} @@ -1511,7 +1511,7 @@ errore ed uscire.\footnote{questa eventualit Per ciascuno delle due possibili famiglie di indirizzi si estraggono le informazioni che poi verranno stampate alla fine del ciclo (\texttt{\small 31--34}). Il primo caso esaminato (\texttt{\small 15--21}) è quello degli -indirizzi IPv4, nel qual caso prima se ne stampa l'indentificazione +indirizzi IPv4, nel qual caso prima se ne stampa l'identificazione (\texttt{\small 16}) poi si provvede a ricavare la struttura degli indirizzi (\texttt{\small 17}) indirizzata dal campo \var{ai\_addr}, eseguendo un opportuno casting del puntatore per poter estrarre da questa la porta @@ -1586,10 +1586,10 @@ si copiano anche tutti i dati presenti agli indirizzi contenuti nella struttura \struct{addrinfo}, perché una volta disallocati i dati con \func{freeaddrinfo} questi non sarebbero più disponibili. -Anche la nuova intefaccia definita da POSIX prevede una nuova funzione per +Anche la nuova interfaccia definita da POSIX prevede una nuova funzione per eseguire la risoluzione inversa e determinare nomi di servizi e di dominio dati i rispettivi valori numerici. La funzione che sostituisce le varie -\func{gethostbyname}, \func{geipnodebyname} e \func{getservname} è +\func{gethostbyname}, \func{getipnodebyname} e \func{getservname} è \funcd{getnameinfo}, ed il suo prototipo è: \begin{functions} \headdecl{sys/socket.h} @@ -1673,7 +1673,7 @@ finora, quello in cui si specifica nel client un indirizzo remoto per la connessione al server, e quello in cui si specifica nel server un indirizzo locale su cui porsi in ascolto. -La prima funzione della nostra intefaccia semplificata è \func{sockconn} che +La prima funzione della nostra interfaccia semplificata è \func{sockconn} che permette di ottenere un socket, connesso all'indirizzo ed al servizio specificati. Il corpo della funzione è riportato in fig.~\ref{fig:sockconn_code}, il codice completo è nel file \file{SockUtil.c} @@ -1700,7 +1700,7 @@ associato al socket (un numero positivo) in caso di successo, o -1 in caso di errore; per risolvere il problema di non poter passare indietro i valori di ritorno di \func{getaddrinfo} contenenti i relativi codici di errore\footnote{non si può avere nessuna certezza che detti valori siano - negativi, è questo è invece nessario per evitare ogni possibile ambiguità + negativi, è questo è invece necessario per evitare ogni possibile ambiguità nei confronti del valore di ritorno in caso di successo.} si sono stampati i messaggi d'errore direttamente nella funzione. @@ -1711,7 +1711,7 @@ chiamata (\texttt{\small 10}) a \func{getaddrinfo}. Di quest'ultima si controlla (\texttt{\small 12-16}) il codice di ritorno, in modo da stampare un avviso di errore, azzerare \var{errno} ed uscire in caso di errore. Dato che ad una macchina possono corrispondere più indirizzi IP, e di tipo diverso (sia -IPv4 che IPv6), mantre il servizio può essere in ascolto soltanto su uno solo +IPv4 che IPv6), mentre il servizio può essere in ascolto soltanto su uno solo di questi, si provvede a tentare la connessione per ciascun indirizzo restituito all'interno di un ciclo (\texttt{\small 18-40}) di scansione della lista restituita da \func{getaddrinfo}, ma prima (\texttt{\small 17}) si salva @@ -1906,7 +1906,7 @@ riassunti i valori che possono essere usati per l'argomento \texttt{SOL\_*}, che le analoghe \texttt{IPPROTO\_*} (citate anche da Stevens in \cite{UNP1}); entrambe hanno gli stessi valori che sono equivalenti ai numeri di protocollo di \file{/etc/protocols}, con una - eccesione specifica, che è quella del protocollo ICMP, per la quale non + eccezione specifica, che è quella del protocollo ICMP, per la quale non esista una costante, il che è comprensibile dato che il suo valore, 1, è quello che viene assegnato a \const{SOL\_SOCKET}.} @@ -1943,7 +1943,7 @@ individuare qual variabili. La gran parte delle opzioni utilizzano per \param{optval} un valore intero, se -poi l'opzione esprime una condizione logica, il valore è sempre un intero, am +poi l'opzione esprime una condizione logica, il valore è sempre un intero, ma si dovrà usare un valore non nullo per abilitarla ed un valore nullo per disabilitarla. Se invece l'opzione non prevede di dover ricevere nessun tipo di valore si deve impostare \param{optval} a \const{NULL}. Un piccolo numero @@ -1983,7 +1983,7 @@ che viene usata come \itindex{value~result~argument}\textit{value result argument} per indicare, prima della chiamata della funzione, la lunghezza del buffer allocato per \param{optval} e per ricevere indietro, dopo la chiamata della funzione, la dimensione effettiva dei dati scritti su di esso. -Se la dimenzione del buffer allocato per \param{optval} non è sufficiente si +Se la dimensione del buffer allocato per \param{optval} non è sufficiente si avrà un errore. @@ -2135,7 +2135,7 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni: In genere questa opzione non è molto utilizzata se si ha a che fare con la lettura dei dati, in quanto è sempre possibile usare una \func{select} che consente di specificare un \textit{timeout}; l'uso di \func{select} non - consente però di impostare il timout per l'uso di \func{connect}, per avere + consente però di impostare il timeout per l'uso di \func{connect}, per avere il quale si può ricorrere a questa opzione. % TODO verificare il timeout con un programma di test @@ -2214,7 +2214,7 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni: \item[\const{SO\_TYPE}] questa opzione permette di leggere il tipo di socket su cui si opera; funziona solo con \func{getsockopt}, ed utilizza per - \param{optval} un intero in cui verrà restituto il valore numerico che lo + \param{optval} un intero in cui verrà restituito il valore numerico che lo identifica (ad esempio \const{SOCK\_STREAM}). \item[\const{SO\_ACCEPTCONN}] questa opzione permette di rilevare se il socket @@ -2235,13 +2235,13 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni: intero usato come valore logico. L'opzione non ha effetti su un socket di tipo \const{SOCK\_STREAM}. -\item[\const{SO\_SNDBUF}] questa opzione imposta la dimenzione del buffer di +\item[\const{SO\_SNDBUF}] questa opzione imposta la dimensione del buffer di uscita del socket. Prende per \param{optval} un intero indicante il numero di byte. Il valore di default ed il valore massimo che si può specificare come argomento per questa opzione sono impostabili tramiti gli opportuni valori di \func{sysctl} (vedi sez.~\ref{sec:sock_sysctl}). -\item[\const{SO\_RCVBUF}] questa opzione imposta la dimenzione del buffer di +\item[\const{SO\_RCVBUF}] questa opzione imposta la dimensione del buffer di ingresso del socket. Prende per \param{optval} un intero indicante il numero di byte. Il valore di default ed il valore massimo che si può specificare come argomento per questa opzione sono impostabili tramiti gli opportuni @@ -2281,7 +2281,7 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni: La descrizione sintetica del significato delle opzioni generiche dei socket, riportata nell'elenco in sez.~\ref{sec:sock_generic_options}, è -necessariamente sintentica, alcune di queste però possono essere utilizzate +necessariamente sintetica, alcune di queste però possono essere utilizzate per controllare delle funzionalità che hanno una notevole rilevanza nella programmazione dei socket. Per questo motivo faremo in questa sezione un approfondimento sul significato delle opzioni generiche più importanti. @@ -2308,17 +2308,17 @@ messaggio di \textit{keep-alive}\footnote{in sostanza un segmento ACK vuoto, cui sarà risposto con un altro segmento ACK vuoto.} verso l'altro capo della connessione se questa è rimasta senza traffico per più di due ore. Se è tutto a posto il messaggio viene ricevuto e verrà emesso un segmento ACK di -risposta, alla cui ricezione ripartirà un'altro ciclo di attesa per altre due +risposta, alla cui ricezione ripartirà un altro ciclo di attesa per altre due ore di inattività; il tutto avviene all'interno del kernel e le applicazioni non riceveranno nessun dato. In caso di problemi invece si possono avere i due casi già illustrati in -sez.~\ref{sec:TCP_conn_crash} per il caso di terminazione prococe del server: +sez.~\ref{sec:TCP_conn_crash} per il caso di terminazione precoce del server: il primo è quello in cui la macchina remota è caduta ed è stata riavviata, per cui dopo il riavvio la connessione non viene più riconosciuta,\footnote{si ricordi che un normale riavvio non ha questo effetto, in quanto in tal caso si passa per la chiusura del processo, e questo, come illustrato in - sez.~\ref{sec:file_close}, comporta la chiusura del socket col'invio di un + sez.~\ref{sec:file_close}, comporta la chiusura del socket con l'invio di un segmento FIN all'altro capo della connessione, che verrà regolarmente chiusa.} in questo caso all'invio del messaggio di \textit{keep-alive} si otterrà come risposta un segmento RST che indica che l'altro capo non @@ -2342,7 +2342,7 @@ restituito l'errore corrispondente. In generale questa opzione serve per individuare una caduta della connessione anche quando non si sta facendo traffico su di essa. Viene usata principalmente sui server per evitare di mantenere impegnate le risorse che -verrbbero dedicate a trattare delle connessioni che in realtà sono già +verrebbero dedicate a trattare delle connessioni che in realtà sono già terminate (quelle che vengono anche chiamate connessioni \textsl{semi-aperte}); in tutti quei casi cioè in cui il server si trova in attesa di dati in ingresso su una connessione che non arriveranno mai perché o @@ -2545,7 +2545,7 @@ In questo caso utilizzando \const{SO\_REUSEADDR} si consente ad una applicazione eseguire \func{bind} sulla stessa porta ed indirizzo usata da un'altra, così che anche essa possa ricevere gli stessi pacchetti (chiaramente la cosa non ha alcun senso per i socket TCP, ed infatti in questo tipo di -applicazione è normale l'uso del protovollo UDP). La regola è che quando si +applicazione è normale l'uso del protocollo UDP). La regola è che quando si hanno più applicazioni che hanno eseguito \func{bind} sulla stessa porta, di tutti pacchetti destinati ad un indirizzo di \itindex{broadcast} \textit{broadcast} o di \itindex{multicast} \textit{multicast} viene inviata @@ -2593,7 +2593,7 @@ dal kernel. L'uso di \const{SO\_LINGER} con \func{setsockopt} permette di modificare (ed eventualmente ripristinare) questo comportamento in base ai valori passati nei -campi della stuttura \struct{linger}, illustrata in +campi della struttura \struct{linger}, illustrata in fig.~\ref{fig:sock_linger_struct}. Fintanto che il valore del campo \var{l\_onoff} di \struct{linger} è nullo la modalità che viene impostata (qualunque sia il valore di \var{l\_linger}) è quella standard appena @@ -2630,14 +2630,14 @@ allegati. La sezione indicata viene eseguita dopo aver effettuato la connessione e prima di chiamare la funzione di gestione, cioè fra le righe (\texttt{\small 12}) e (\texttt{\small 13}) del precedente esempio di fig.~\ref{fig:TCP_echo_fifth}. -Il codice si limita semplicememente a controllare (\texttt{\small 3}) il +Il codice si limita semplicemente a controllare (\texttt{\small 3}) il valore della variabile \var{reset} che assegnata nella gestione delle opzioni in corrispondenza all'uso di \texttt{-r} nella chiamata del client. Nel caso questa sia diversa da zero vengono impostati (\texttt{\small 5--6}) i valori della struttura \var{ling} che permettono una terminazione immediata della -connessine. Questa viene poi usata nella successiva (\texttt{\small 7}) +connessione. Questa viene poi usata nella successiva (\texttt{\small 7}) chiamata a \func{setsockopt}. Al solito si controlla (\texttt{\small 7--10}) -il valore di ritorno e si termina il programma in caso di errore, stampadone +il valore di ritorno e si termina il programma in caso di errore, stampandone il valore. Infine l'ultima possibilità, quella in cui si utilizza effettivamente @@ -2842,7 +2842,7 @@ sez.~\ref{sec:net_sendmsg}). socket di tipo \const{SOCK\_RAW}, e quando utilizzata eventuali valori impostati con \const{IP\_OPTIONS}, \const{IP\_TOS} o \const{IP\_TTL} sono ignorati. In ogni caso prima della spedizione alcuni campi - dell'instestazione vengono comunque modificati dal kernel, torneremo + dell'intestazione vengono comunque modificati dal kernel, torneremo sull'argomento in sez.~\ref{sec:socket_raw} \item[\const{IP\_RECVERR}] Questa è una opzione introdotta con i kernel della @@ -2979,7 +2979,7 @@ sez.~\ref{sec:net_sendmsg}). prende per \param{optval} la stessa struttura \struct{ip\_mreqn} (o \struct{ip\_mreq}) usata anche per \const{IP\_ADD\_MEMBERSHIP}. -\item[\const{IP\_MULTICAST\_IF}] Imposta l'interfaccia locale per i'utilizzo +\item[\const{IP\_MULTICAST\_IF}] Imposta l'interfaccia locale per l'utilizzo del \textit{multicast}, ed utilizza come \param{optval} le stesse strutture \struct{ip\_mreqn} o \struct{ip\_mreq} delle due precedenti opzioni. @@ -3024,7 +3024,7 @@ relativa richiesta: arrivano dei dati urgenti. Il terzo argomento deve essere un puntatore ad una variabile di tipo \type{pid\_t}; un valore positivo indica direttamente il \acr{pid} del processo, mentre un valore negativo indica (col valore - assoluto) il \textit{process group}. Senxa privilegi di amministratore o la + assoluto) il \textit{process group}. Senza privilegi di amministratore o la capability \const{CAP\_KILL} si può impostare solo se stessi o il proprio \textit{process group}. @@ -3141,7 +3141,7 @@ sono: valore iniziale maggiore di 1024 (o meglio ancora di 4096) per evitare conflitti con le porte usate dai servizi noti. -\item[\texttt{ip\_no\_pmtu\_disc}] imposta la discliplina di ricerca della +\item[\texttt{ip\_no\_pmtu\_disc}] imposta la disciplina di ricerca della \textit{Path MTU} (vedi sez.~\ref{sec:net_lim_dim} e sez.~\ref{sec:sock_ipv4_options}). @@ -3172,3 +3172,58 @@ sono: %%% mode: latex %%% TeX-master: "gapil" %%% End: + +% LocalWords: socket sez dotted decimal resolver Domain Name Service cap DNS +% LocalWords: client fig LDAP Lightweight Access Protocol NIS Information Sun +% LocalWords: like netgroup Switch Solaris glibc libc uclib NSS tab shadow uid +% LocalWords: username group aliases ethers MAC address hosts networks rpc RPC +% LocalWords: protocols services dns db lib libnss org truelite it root res HS +% LocalWords: resource init netinet resolv int void conf host LOCALDOMAIN TCP +% LocalWords: options DEBUG debug AAONLY USEVC UDP PRIMARY IGNTC RECURSE INET +% LocalWords: DEFNAMES search STAYOPEN DNSRCH INSECURE NOALIASES HOSTALIASES +% LocalWords: IPv gethostbyname NOCHECKNAME KEEPTSIG TSIG BLAST RETRY retry NS +% LocalWords: retrans query FQDN Fully Qualified const char dname class type +% LocalWords: unsigned answer anslen CSNET Hesiod MIT CHAOS Chaosnet ANY BIND +% LocalWords: nameser compat Berkley MF CNAME SOA MB MR NULL WKS PTR HINFO TXT +% LocalWords: MINFO RP responsible person AFSDB AFS RT router NSAP SIG KEY PX +% LocalWords: GPOS AAAA LOC NXT EID NIMLOC nimrod SRV ATMA ATM NAPTR naming AF +% LocalWords: authority IXFR AXFR MAILB MAILA errno NOT FOUND RECOVERY TRY err +% LocalWords: AGAIN herror netdb string perror error hstrerror strerror struct +% LocalWords: hostent name addrtype length addr list sys af mygethost inet ret +% LocalWords: ntop deep copy buf size buflen result errnop value argument len +% LocalWords: ERANGE sethostent stayopen endhostent gethostbyaddr order pton +% LocalWords: getipnodebyname getipnodebyaddr flags num MAPPED ALL ADDRCONFIG +% LocalWords: freehostent ip getXXXbyname getXXXbyaddr servent getservbyname +% LocalWords: getservbyaddr netent getnetbyname getnetbyaddr protoent smtp udp +% LocalWords: getprotobyname getprotobyaddr getservbyport port tcp setservent +% LocalWords: getservent endservent setXXXent getXXXent endXXXent gethostent +% LocalWords: setnetent getnetent endnetent setprotoent getprotoent POSIX RFC +% LocalWords: endprotoent getaddrinfo getnameinfo nell' node service addrinfo +% LocalWords: hints linked addrlen socklen family socktype protocol sockaddr +% LocalWords: canonname next PF UNSPEC SOCK STREAM DGRAM bind INADDR loopback +% LocalWords: connect sendto NUMERICHOST EAI NONAME SYSTEM BADFLAGS ADDRFAMILY +% LocalWords: NODATA MEMORY FAIL errcode echo mygetaddr ptr casting Canonical +% LocalWords: freeaddrinfo getservname salen hostlen serv servlen l'OR NI NUL +% LocalWords: NOFQDN NAMEREQD NUMERICSERV MAXHOST MAXSERV sockconn SockUtil of +% LocalWords: descriptor hint fifth sockbind setsockopt getsockopt sock level +% LocalWords: optname optval optlen EBADF EFAULT EINVAL ENOPROTOOPT ENOTSOCK +% LocalWords: IPPROTO Stevens ICMP ICMPV ICMPv get KEEPALIVE OOBINLINE timeval +% LocalWords: RCVLOWAT SNDLOWAT RCVTIMEO SNDTIMEO BSDCOMPAT BSD PASSCRED ucred +% LocalWords: PEERCRED BINDTODEVICE REUSEADDR ACCEPTCONN DONTROUTE gateway MSG +% LocalWords: BROADCAST broadcast SNDBUF RCVBUF LINGER linger PRIORITY read IF +% LocalWords: OOB recvmsg kernel select write readv recv recvfrom EAGAIN send +% LocalWords: EWOULDBLOCK writev sendmsg raw domain SCM CREDENTIALS eth packet +% LocalWords: IFNAMSIZ capabilities capability ADMIN log trpt EADDRINUSE close +% LocalWords: listen routing sysctl shutdown Quality TOS keep alive ACK RST to +% LocalWords: ECONNRESET ETIMEDOUT keepalive echod fourth newsgroup WAIT reuse +% LocalWords: sockbindopt SockUtils homed completely binding RECVDSTADDR onoff +% LocalWords: PKTINFO getsockname multicast streaming unicast REUSEPORT reset +% LocalWords: stealing ling RECVTOS RECVTTL TTL RECVOPTS RETOPTS HDRINCL MTU +% LocalWords: RECVERR DISCOVER Path Discovery ALERT alert ADD MEMBERSHIP mreqn +% LocalWords: pktinfo ipi ifindex spec dst RECVIF Live IPTOS LOWDELAY Advanced +% LocalWords: Transfer Unit PMTUDISC DONT WANT route dall' pmtu EMSGSIZE imr +% LocalWords: multiaddr mreq fcntl ioctl request SIOCGSTAMP trip SIOCSPGRP pid +% LocalWords: process SIGIO SIGURG KILL FIOASYNC SIOCGPGRP filesystem proc ttl +% LocalWords: rmem wmem message cost burst bucket filter netdev backlog optmem +% LocalWords: forward dynaddr dial autoconfig local masquerading ipfrag high +% LocalWords: thresh low always defrag CONFIG