Fatta una bella passata di spell su tutto quanto ...
[gapil.git] / socket.tex
index 9fac73dffedf011d8c07c6d0721b2bcd4aace550..32f1c0f5a6adea4e730445b41ac35aafd0e773f3 100644 (file)
@@ -117,7 +117,7 @@ altro nome con cui si indicano i domini.
 
 A ciascun tipo di dominio corrisponde un analogo nome simbolico che inizia per
 \texttt{AF\_} da \textit{address family}, e che identifica il formato degli
 
 A ciascun tipo di dominio corrisponde un analogo nome simbolico che inizia per
 \texttt{AF\_} da \textit{address family}, e che identifica il formato degli
-indirizzi usati in quel dominio; le man pages di linux si riferiscono a questi
+indirizzi usati in quel dominio; le man pages di Linux si riferiscono a questi
 anche come \textit{name space}, (nome che però il manuale della glibc riserva
 ai domini) e che identifica il formato degli indirizzi usati in quel dominio.
 
 anche come \textit{name space}, (nome che però il manuale della glibc riserva
 ai domini) e che identifica il formato degli indirizzi usati in quel dominio.
 
@@ -130,7 +130,7 @@ supportino diverse strutture di indirizzi, per cui nella pratica questi due
 nomi sono equivalenti e corrispondono agli stessi valori.
 
 I domini (e i relativi nomi simbolici), così come i nomi delle famiglie di
 nomi sono equivalenti e corrispondono agli stessi valori.
 
 I domini (e i relativi nomi simbolici), così come i nomi delle famiglie di
-indirizzi sono definiti dall'header \textit{socket.h}. In linux le famiglie di
+indirizzi sono definiti dall'header \textit{socket.h}. In Linux le famiglie di
 protocolli disponibili sono riportate in \ntab.
 
 \begin{table}[htb]
 protocolli disponibili sono riportate in \ntab.
 
 \begin{table}[htb]
@@ -150,13 +150,13 @@ protocolli disponibili sono riportate in \ntab.
        PF\_APPLETALK      & Appletalk                      & ddp(7)     \\
        PF\_PACKET         & Low level packet interface     & packet(7)  \\    
   \end{tabular}
        PF\_APPLETALK      & Appletalk                      & ddp(7)     \\
        PF\_PACKET         & Low level packet interface     & packet(7)  \\    
   \end{tabular}
-  \caption{Famiglie di protocolli definiti in linux}
+  \caption{Famiglie di protocolli definiti in Linux}
   \label{tab:net_pf_names}
 \end{table}
 
 Non tutte le famiglie di protocolli sono accessibili dall'utente generico, ad
 esempio in generale tutti i socket di tipo \texttt{SOCK\_RAW} possono essere
   \label{tab:net_pf_names}
 \end{table}
 
 Non tutte le famiglie di protocolli sono accessibili dall'utente generico, ad
 esempio in generale tutti i socket di tipo \texttt{SOCK\_RAW} possono essere
-creati solo da processi che hanno i provilegi di root (cioè effective uid
+creati solo da processi che hanno i privilegi di root (cioè effective uid
 uguale a zero) o la capability \texttt{CAP\_NET\_RAW}.
 
 
 uguale a zero) o la capability \texttt{CAP\_NET\_RAW}.
 
 
@@ -166,7 +166,7 @@ uguale a zero) o la capability \texttt{CAP\_NET\_RAW}.
 La scelta di un dominio non comporta però la scelta dello stile di
 comunicazione, questo infatti viene a dipendere dal protocollo che si andrà ad
 utilizzare fra quelli disponibili nella famiglia scelta. Le API permettono di
 La scelta di un dominio non comporta però la scelta dello stile di
 comunicazione, questo infatti viene a dipendere dal protocollo che si andrà ad
 utilizzare fra quelli disponibili nella famiglia scelta. Le API permettono di
-scegliere lo stile di comunicazione indicando il tipo di socket; linux e le
+scegliere lo stile di comunicazione indicando il tipo di socket; Linux e le
 glibc mettono a disposizione i seguenti tipi di socket (che il manuale della
 glibc chiama \textit{styles}) definiti come \texttt{int} in \texttt{socket.h}:
 
 glibc mettono a disposizione i seguenti tipi di socket (che il manuale della
 glibc chiama \textit{styles}) definiti come \texttt{int} in \texttt{socket.h}:
 
@@ -284,7 +284,7 @@ invocano dette funzioni passando l'indirizzo di un protocollo specifico
 occorrerà eseguire un casting del relativo puntatore.
 
 I tipi di dati che compongono la struttura sono stabiliti dallo standard
 occorrerà eseguire un casting del relativo puntatore.
 
 I tipi di dati che compongono la struttura sono stabiliti dallo standard
-Posix.1g, riassunti in \ntab\ con i rispettivi file di include in cui sono
+POSIX.1g, riassunti in \ntab\ con i rispettivi file di include in cui sono
 definiti; la struttura è invece definita nell'include file
 \texttt{sys/socket.h}
 
 definiti; la struttura è invece definita nell'include file
 \texttt{sys/socket.h}
 
@@ -314,14 +314,14 @@ definiti; la struttura 
     \hline
   \end{tabular}
   \caption{Tipi di dati usati nelle strutture degli indirizzi, secondo quanto 
     \hline
   \end{tabular}
   \caption{Tipi di dati usati nelle strutture degli indirizzi, secondo quanto 
-    stabilito dallo standard Posix.1g}
+    stabilito dallo standard POSIX.1g}
   \label{tab:sock_data_types}
 \end{table}
 
 In alcuni sistemi la struttura è leggermente diversa e prevede un primo membro
 aggiuntivo \texttt{uint8\_t sin\_len} (come riportato da R. Stevens nei suoi
 libri). Questo campo non verrebbe usato direttamente dal programmatore e non è
   \label{tab:sock_data_types}
 \end{table}
 
 In alcuni sistemi la struttura è leggermente diversa e prevede un primo membro
 aggiuntivo \texttt{uint8\_t sin\_len} (come riportato da R. Stevens nei suoi
 libri). Questo campo non verrebbe usato direttamente dal programmatore e non è
-richiesto dallo standard Posix.1g, in linux pertanto non sussiste. Il campo
+richiesto dallo standard POSIX.1g, in Linux pertanto non sussiste. Il campo
 \texttt{sa\_family\_t} era storicamente un \texttt{unsigned short}.
 
 Dal punto di vista del programmatore l'unico uso di questa struttura è quello
 \texttt{sa\_family\_t} era storicamente un \texttt{unsigned short}.
 
 Dal punto di vista del programmatore l'unico uso di questa struttura è quello
@@ -340,7 +340,7 @@ I socket di tipo \texttt{PF\_INET} vengono usati per la comunicazione
 attraverso internet; la struttura per gli indirizzi per un socket internet
 (IPv4) è definita come \texttt{sockaddr\_in} nell'header file
 \texttt{netinet/in.h} e secondo le man page ha la forma mostrata in \nfig,
 attraverso internet; la struttura per gli indirizzi per un socket internet
 (IPv4) è definita come \texttt{sockaddr\_in} nell'header file
 \texttt{netinet/in.h} e secondo le man page ha la forma mostrata in \nfig,
-conforme allo standard Posix.1g.
+conforme allo standard POSIX.1g.
 
 
 \begin{figure}[!htbp]
 
 
 \begin{figure}[!htbp]
@@ -377,7 +377,7 @@ usare la funzione \texttt{bind} su queste porte.
 
 Il membro \texttt{sin\_addr} contiene l'indirizzo internet dell'altro capo
 della comunicazione, e viene acceduto sia come struttura (un resto di una
 
 Il membro \texttt{sin\_addr} contiene l'indirizzo internet dell'altro capo
 della comunicazione, e viene acceduto sia come struttura (un resto di una
-implementazione precedente in cui questa era una union usata per accedere alle
+implementazione precedente in cui questa era una \texttt{union} usata per accedere alle
 diverse classi di indirizzi) che come intero. 
 
 Infine è da sottolineare che sia gli indirizzi che i numeri di porta devono
 diverse classi di indirizzi) che come intero. 
 
 Infine è da sottolineare che sia gli indirizzi che i numeri di porta devono
@@ -417,7 +417,7 @@ struct in6_addr {
 
 Il campo \texttt{sin6\_family} deve essere sempre settato ad
 \texttt{AF\_INET6}, il campo \texttt{sin6\_port} è analogo a quello di IPv4 e
 
 Il campo \texttt{sin6\_family} deve essere sempre settato ad
 \texttt{AF\_INET6}, il campo \texttt{sin6\_port} è analogo a quello di IPv4 e
-segue le stesse regole; il campo \texttt{sin6\_flowinfo} è a dua volta diviso
+segue le stesse regole; il campo \texttt{sin6\_flowinfo} è a sua volta diviso
 in tre parti di cui i 24 bit inferiori indicano l'etichetta di flusso, i
 successivi 4 bit la priorità e gli ultimi 4 sono riservati; questi valori
 fanno riferimento ad alcuni campi specifici dell'header dei pacchetti IPv6
 in tre parti di cui i 24 bit inferiori indicano l'etichetta di flusso, i
 successivi 4 bit la priorità e gli ultimi 4 sono riservati; questi valori
 fanno riferimento ad alcuni campi specifici dell'header dei pacchetti IPv6
@@ -498,7 +498,7 @@ utile anche in seguito.
 \subsection{La \textit{endianess}}
 \label{sec:sock_endianess}
 
 \subsection{La \textit{endianess}}
 \label{sec:sock_endianess}
 
-La rappresentazione di un numbero binario in un computer può essere fatta in
+La rappresentazione di un numero binario in un computer può essere fatta in
 due modi, chiamati rispettivamente \textit{big endian} e \textit{little
   endian} a seconda di come i singoli bit vengono aggregati per formare le
 variabili intere (in diretta corrispondenza a come sono poi in realtà cablati
 due modi, chiamati rispettivamente \textit{big endian} e \textit{little
   endian} a seconda di come i singoli bit vengono aggregati per formare le
 variabili intere (in diretta corrispondenza a come sono poi in realtà cablati
@@ -515,14 +515,16 @@ numero. Il caso opposto, in cui si parte dal bit meno significativo 
 per lo stesso motivo \textit{big endian}.
 
 La \textit{endianess} di un computer dipende essenzialmente dalla architettura
 per lo stesso motivo \textit{big endian}.
 
 La \textit{endianess} di un computer dipende essenzialmente dalla architettura
-hardware usata; intel e digital usano il little endian, motorola, ibm, sun
+hardware usata; Intel e Digital usano il little endian, Motorola, IBM, Sun
 (sostanzialmente tutti gli altri) usano il big endian. Il formato della rete è
 (sostanzialmente tutti gli altri) usano il big endian. Il formato della rete è
-anch'esso big endian. Esistono poi anche dei processori che possono scegliere
-il tipo di formato all'avvio e alcuni, come il PowerPC o l'intel i860, possono
-pure passare da un tipo all'altro con una specifica istruzione; in ogni caso
-in linux l'ordinamanento è definito dall'archiettura e anche se questi
-cambiamenti sono possibili anche dopo che il sistema è avviato, non vengono
-mai eseguiti.
+anch'esso big endian, quello del bus PCI è little endian, quello del bus VME è
+big endian. 
+
+Esistono poi anche dei processori che possono scegliere il tipo di formato
+all'avvio e alcuni, come il PowerPC o l'Intel i860, possono pure passare da un
+tipo di ordinamento all'altro con una specifica istruzione; in ogni caso in
+Linux l'ordinamento è definito dall'architettura e anche se questi cambiamenti
+sono possibili anche dopo che il sistema è avviato, non vengono mai eseguiti.
 
 \subsection{Le funzioni per il riordinamento}
 \label{sec:sock_func_ord}
 
 \subsection{Le funzioni per il riordinamento}
 \label{sec:sock_func_ord}
@@ -531,7 +533,7 @@ Il problema connesso all'endianess 
 di architettura all'altra i dati vengono interpretati in maniera diversa, e ad
 esempio nel caso dell'intero a 16 bit ci si ritroverà con i due bytes in cui è
 suddiviso scambiati di posto, e ne sarà quindi invertito l'ordine di lettura
 di architettura all'altra i dati vengono interpretati in maniera diversa, e ad
 esempio nel caso dell'intero a 16 bit ci si ritroverà con i due bytes in cui è
 suddiviso scambiati di posto, e ne sarà quindi invertito l'ordine di lettura
-per cui, per riavere il valore originale dovrenno essere rovesciati.
+per cui, per riavere il valore originale dovranno essere rovesciati.
 
 Per questo motivo si usano le seguenti funzioni di conversione che servono a
 tener conto automaticamente della possibile differenza fra l'ordinamento usato
 
 Per questo motivo si usano le seguenti funzioni di conversione che servono a
 tener conto automaticamente della possibile differenza fra l'ordinamento usato
@@ -543,7 +545,7 @@ funzioni sono:
   quello della rete.
 \end{prototype}
 \begin{prototype}{netinet/in.h}
   quello della rete.
 \end{prototype}
 \begin{prototype}{netinet/in.h}
-{unsigned sort int htons(unsigned short int hostshort)}
+{unsigned short int htons(unsigned short int hostshort)}
   Converte l'intero a 16 bit \texttt{hostshort} dal formato della macchina a
   quello della rete.
 \end{prototype}
   Converte l'intero a 16 bit \texttt{hostshort} dal formato della macchina a
   quello della rete.
 \end{prototype}
@@ -575,7 +577,7 @@ codice su tutte le architetture.
 
 Un secondo insieme di funzioni di manipolazione serve per passare dal formato
 binario usato nelle strutture degli indirizzi alla rappresentazione dei numeri
 
 Un secondo insieme di funzioni di manipolazione serve per passare dal formato
 binario usato nelle strutture degli indirizzi alla rappresentazione dei numeri
-IP che si usa normalente.
+IP che si usa normalmente.
 
 Le prime tre funzioni di manipolazione riguardano la conversione degli
 indirizzi IPv4 da una stringa in cui il numero di IP è espresso secondo la
 
 Le prime tre funzioni di manipolazione riguardano la conversione degli
 indirizzi IPv4 da una stringa in cui il numero di IP è espresso secondo la