X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=socket.tex;h=86c0b71d95cbb360108393c0b5eac248a6069264;hp=4d19955bb8e73676d7ad7d6ddb3db02106145f04;hb=4826742c87d76af810c8a30e5495135fb43b8091;hpb=caa4d2b308da07b9522599555d07db6f67351601 diff --git a/socket.tex b/socket.tex index 4d19955..86c0b71 100644 --- a/socket.tex +++ b/socket.tex @@ -6,8 +6,8 @@ principali meccanismi di comunicazione fra programmi utilizzato in ambito unix (e non solo). Il socket costituisce in sostanza un canale di comunicazione fra due processi su cui si possono leggere e scrivere dati analogo a quello di una pipe ma a differenza di questa e degli altri meccanismi esaminati nel capitolo -\ref{cha:IPC} i socket non sono limitati alla comunicazione fra processi che -girano sulla stessa macchina ma possono effettuare la comunicazione anche +\capref{cha:IPC} i socket non sono limitati alla comunicazione fra processi +che girano sulla stessa macchina ma possono effettuare la comunicazione anche attraverso la rete. Quella dei socket costituisce infatti la principale API (\textit{Application @@ -29,8 +29,8 @@ tratteremo in maniera pi \label{sec:sock_gen} Per capire il funzionamento dei socket occorre avere presente il funzionamento -dei protocolli di rete (vedi \ref{cha:network}), ma l'interfaccia è del tutto -generale e benché le problematiche (e quindi le modalità di risolvere i +dei protocolli di rete (vedi \capref{cha:network}), ma l'interfaccia è del +tutto generale e benché le problematiche (e quindi le modalità di risolvere i problemi) siano diverse a seconda del tipo di protocollo di comunicazione usato, le funzioni da usare restano le stesse. @@ -77,10 +77,10 @@ verificare!]). Il prototipo della funzione è definito nell'header \texttt{sys/socket.h}, la funzione prende tre parametri, il dominio del socket (che definisce la -famiglia di protocolli, vedi \ref{sec:sock_domain}), il tipo di socket (che -definisce lo stile di comunicazione vedi \ref{sec:sock_type}) e il protocollo; -in genere quest'ultimo è indicato implicitamente dal tipo di socket, per cui -viene messo a zero (con l'eccezione dei \textit{raw socket}). +famiglia di protocolli, vedi \secref{sec:sock_domain}), il tipo di socket (che +definisce lo stile di comunicazione vedi \secref{sec:sock_type}) e il +protocollo; in genere quest'ultimo è indicato implicitamente dal tipo di +socket, per cui viene messo a zero (con l'eccezione dei \textit{raw socket}). \begin{itemize} \item \texttt{int socket(int domain, int type, int protocol)} @@ -371,11 +371,11 @@ RAW che accedono direttamente al livello di IP, nel qual caso il numero della porta viene settato al numero di protocollo. Il membro \texttt{sin\_family} deve essere sempre settato; \texttt{sin\_port} -specifica il numero di porta (vedi \ref{sec:TCPel_port_num}; i numeri di porta -sotto il 1024 sono chiamati \textsl{riservati} in quanto utilizzati da servizi -standard. Soltanto processi con i privilegi di root (effective uid uguale a -zero) o con la capability \texttt{CAP\_NET\_BIND\_SERVICE} possono usare la -funzione \texttt{bind} su queste porte. +specifica il numero di porta (vedi \secref{sec:TCPel_port_num}; i numeri di +porta sotto il 1024 sono chiamati \textsl{riservati} in quanto utilizzati da +servizi standard. Soltanto processi con i privilegi di root (effective uid +uguale a zero) o con la capability \texttt{CAP\_NET\_BIND\_SERVICE} possono +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 @@ -386,7 +386,7 @@ Infine essere specificati in quello che viene chiamato \textit{network order}, cioè con i bit ordinati in formato \textit{big endian}, questo comporta la necessità di usare apposite funzioni di conversione per mantenere la -portabilità del codice (vedi \ref{sec:sock_addr_func} per i dettagli del +portabilità del codice (vedi \secref{sec:sock_addr_func} per i dettagli del problema e le relative soluzioni). \subsection{La struttura degli indirizzi IPv6} @@ -423,7 +423,7 @@ segue le stesse regole; il campo \texttt{sin6\_flowinfo} 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 -(vedi \ref{sec:appA_ipv6}) ed il loro uso è sperimentale. +(vedi \secref{sec:appA_ipv6}) ed il loro uso è sperimentale. Il campo \texttt{sin6\_addr} contiene l'indirizzo a 128 bit usato da IPv6, infine il campo \texttt{sin6\_scope\_id} è un campo introdotto con il kernel