Ancora revisione degli indici, aggiunto CLONE_VM e paragrafo su
[gapil.git] / socket.tex
index d3bbecc6a4f764f3da529aa3595c1517a3eb0501..7e79d39439dc2ce7ed6f15f002b05ab72484e2cb 100644 (file)
@@ -9,7 +9,7 @@
 %% License".
 %%
 
 %% License".
 %%
 
-\chapter{Introduzione ai socket}
+\chapter{I socket}
 \label{cha:socket_intro}
 
 In questo capitolo inizieremo a spiegare le caratteristiche salienti della
 \label{cha:socket_intro}
 
 In questo capitolo inizieremo a spiegare le caratteristiche salienti della
@@ -22,16 +22,18 @@ come creare un socket e come collegarlo allo specifico protocollo di rete che
 si utilizzerà per la comunicazione. Per evitare un'introduzione puramente
 teorica concluderemo il capitolo con un primo esempio di applicazione.
 
 si utilizzerà per la comunicazione. Per evitare un'introduzione puramente
 teorica concluderemo il capitolo con un primo esempio di applicazione.
 
-\section{Una panoramica}
+\section{Introduzione ai socket}
 \label{sec:sock_overview}
 
 \label{sec:sock_overview}
 
-Iniziamo con una descrizione essenziale di cosa sono i \textit{socket} e di
-quali sono i concetti fondamentali da tenere presente quando si ha a che fare
-con essi.
+In questa sezione daremo descrizione essenziale di cosa sono i \textit{socket}
+e di quali sono i concetti fondamentali da tenere presente quando si ha a che
+fare con essi; ne illustreremo poi le caratteristiche e le differenti
+tipologie presenti ed infine tratteremo le modalità con cui possono essere
+creati.
 
 \index{socket!definizione|(}
 
 
 \index{socket!definizione|(}
 
-\subsection{I \textit{socket}}
+\subsection{Cosa sono \textit{socket}}
 \label{sec:sock_socket_def}
 
 I \textit{socket} (una traduzione letterale potrebbe essere \textsl{presa}, ma
 \label{sec:sock_socket_def}
 
 I \textit{socket} (una traduzione letterale potrebbe essere \textsl{presa}, ma
@@ -62,24 +64,20 @@ utilizzare i socket con i più disparati meccanismi di comunicazione, e non
 solo con l'insieme dei protocolli TCP/IP, anche se questa sarà comunque quella
 di cui tratteremo in maniera più estesa.
 
 solo con l'insieme dei protocolli TCP/IP, anche se questa sarà comunque quella
 di cui tratteremo in maniera più estesa.
 
-
-\subsection{Concetti base}
-\label{sec:sock_gen}
-
 Per capire il funzionamento dei socket occorre avere presente il funzionamento
 Per capire il funzionamento dei socket occorre avere presente il funzionamento
-dei protocolli di rete che su utilizzeranno (vedi cap.~\ref{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 nella gestione dei
-socket restano le stesse.
+dei protocolli di rete che su utilizzeranno (ed in particolare quelli del
+TCP/IP già illustrati in sez.~\ref{sec:net_tpcip}), 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 nella gestione dei socket restano le stesse.
 
 Per questo motivo una semplice descrizione dell'interfaccia è assolutamente
 inutile, in quanto il comportamento di quest'ultima e le problematiche da
 affrontare cambiano radicalmente a seconda del tipo di comunicazione usato.
 
 Per questo motivo una semplice descrizione dell'interfaccia è assolutamente
 inutile, in quanto il comportamento di quest'ultima e le problematiche da
 affrontare cambiano radicalmente a seconda del tipo di comunicazione usato.
-La scelta di questo tipo (sovente anche detto \textsl{stile}) va infatti ad
-incidere sulla semantica che verrà utilizzata a livello utente per gestire la
-comunicazione cioè su come inviare e ricevere i dati e sul comportamento
-effettivo delle funzioni utilizzate.
+La scelta di questo tipo di comunicazione (sovente anche detto \textsl{stile})
+va infatti ad incidere sulla semantica che verrà utilizzata a livello utente
+per gestire la comunicazione cioè su come inviare e ricevere i dati e sul
+comportamento effettivo delle funzioni utilizzate.
 
 La scelta di uno \textsl{stile} dipende sia dai meccanismi disponibili, sia
 dal tipo di comunicazione che si vuole effettuare. Ad esempio alcuni tipi di
 
 La scelta di uno \textsl{stile} dipende sia dai meccanismi disponibili, sia
 dal tipo di comunicazione che si vuole effettuare. Ad esempio alcuni tipi di
@@ -100,18 +98,21 @@ cui essa avviene nei confronti dei corrispondenti, in certi casi essa può
 essere condotta con una connessione diretta con un solo corrispondente, come
 per una telefonata; altri casi possono prevedere una comunicazione come per
 lettera, in cui si scrive l'indirizzo su ogni pacchetto, altri ancora una
 essere condotta con una connessione diretta con un solo corrispondente, come
 per una telefonata; altri casi possono prevedere una comunicazione come per
 lettera, in cui si scrive l'indirizzo su ogni pacchetto, altri ancora una
-comunicazione \itindex{broadcast} \textit{broadcast} come per la radio, in cui
-i pacchetti vengono emessi su appositi ``\textsl{canali}'' dove chiunque si
-collega possa riceverli.
+comunicazione uno a molti come il \textit{broadcast} ed il \textit{multicast},
+in cui i pacchetti possono venire emessi su appositi ``\textsl{canali}'' dove
+chiunque si collega possa riceverli.
 
 
-É chiaro che ciascuno di questi diversi aspetti associato ad un tipo di
-comunicazione comporta una modalità diversa di gestire la stessa, ad esempio
-se è inaffidabile occorrerà essere in grado di gestire la perdita o il
-rimescolamento dei dati, se è a pacchetti questi dovranno essere
-opportunamente trattati, ecc.
+É chiaro che ciascuno di questi diversi aspetti è associato ad un tipo di
+comunicazione che comporta una modalità diversa di gestire la stessa, ad
+esempio se la comunicazione è inaffidabile occorrerà essere in grado di
+gestire la perdita o il rimescolamento dei dati, se è a pacchetti questi
+dovranno essere opportunamente trattati, se è uno a molti occorrerà tener
+conto della eventuale unidirezionalità della stessa, ecc.
+
+\index{socket!definizione|)}
 
 
 
 
-\section{La creazione di un socket}
+\subsection{La creazione di un socket}
 \label{sec:sock_creation}
 
 Come accennato l'interfaccia dei socket è estremamente flessibile e permette
 \label{sec:sock_creation}
 
 Come accennato l'interfaccia dei socket è estremamente flessibile e permette
@@ -119,9 +120,6 @@ di interagire con protocolli di comunicazione anche molto diversi fra di loro;
 in questa sezione vedremo come è possibile creare un socket e come specificare
 il tipo di comunicazione che esso deve utilizzare.
 
 in questa sezione vedremo come è possibile creare un socket e come specificare
 il tipo di comunicazione che esso deve utilizzare.
 
-\subsection{La funzione \func{socket}}
-\label{sec:sock_socket}
-
 La creazione di un socket avviene attraverso l'uso della funzione di sistema 
 \funcd{socket}; essa restituisce un \textit{file descriptor} (del tutto
 analogo a quelli che si ottengono per i file di dati e le \textit{pipe},
 La creazione di un socket avviene attraverso l'uso della funzione di sistema 
 \funcd{socket}; essa restituisce un \textit{file descriptor} (del tutto
 analogo a quelli che si ottengono per i file di dati e le \textit{pipe},
@@ -560,7 +558,7 @@ il loro uso è sperimentale.
 Il campo \var{sin6\_addr} contiene l'indirizzo a 128 bit usato da IPv6,
 espresso da un vettore di 16 byte. Infine il campo \var{sin6\_scope\_id} è un
 campo introdotto in Linux con il kernel 2.4, per gestire alcune operazioni
 Il campo \var{sin6\_addr} contiene l'indirizzo a 128 bit usato da IPv6,
 espresso da un vettore di 16 byte. Infine il campo \var{sin6\_scope\_id} è un
 campo introdotto in Linux con il kernel 2.4, per gestire alcune operazioni
-riguardanti il \itindex{multicast} \textit{multicasting}.  Si noti infine che
+riguardanti il \textit{multicasting}.  Si noti infine che
 \struct{sockaddr\_in6} ha una dimensione maggiore della struttura
 \struct{sockaddr} generica di fig.~\ref{fig:sock_sa_gen_struct}, quindi
 occorre stare attenti a non avere fatto assunzioni riguardo alla possibilità
 \struct{sockaddr\_in6} ha una dimensione maggiore della struttura
 \struct{sockaddr} generica di fig.~\ref{fig:sock_sa_gen_struct}, quindi
 occorre stare attenti a non avere fatto assunzioni riguardo alla possibilità
@@ -744,12 +742,11 @@ pacchetto; entrambi vengono impostati alla ricezione di un pacchetto ed han
 senso solo in questo caso. In particolare \var{sll\_pkttype} può assumere i
 seguenti valori: \const{PACKET\_HOST} per un pacchetto indirizzato alla
 macchina ricevente, \const{PACKET\_BROADCAST} per un pacchetto di
 senso solo in questo caso. In particolare \var{sll\_pkttype} può assumere i
 seguenti valori: \const{PACKET\_HOST} per un pacchetto indirizzato alla
 macchina ricevente, \const{PACKET\_BROADCAST} per un pacchetto di
-\itindex{broadcast} \textit{broadcast}, \const{PACKET\_MULTICAST} per un
-pacchetto inviato ad un indirizzo fisico di \itindex{multicast}
-\textit{multicast}, \const{PACKET\_OTHERHOST} per un pacchetto inviato ad
-un'altra stazione (e ricevuto su un'interfaccia in \index{modo~promiscuo} modo
-promiscuo), \const{PACKET\_OUTGOING} per un pacchetto originato dalla propria
-macchina che torna indietro sul socket.
+\textit{broadcast}, \const{PACKET\_MULTICAST} per un pacchetto inviato ad un
+indirizzo fisico di \textit{multicast}, \const{PACKET\_OTHERHOST} per un
+pacchetto inviato ad un'altra stazione (e ricevuto su un'interfaccia in
+\index{modo~promiscuo} modo promiscuo), \const{PACKET\_OUTGOING} per un
+pacchetto originato dalla propria macchina che torna indietro sul socket.
 
 
 Si tenga presente infine che in fase di ricezione, anche se si richiede il
 
 
 Si tenga presente infine che in fase di ricezione, anche se si richiede il
@@ -953,8 +950,6 @@ Il formato usato per gli indirizzi in formato di presentazione è la notazione
 \textit{dotted decimal} per IPv4 e quello descritto in
 sez.~\ref{sec:IP_ipv6_notation} per IPv6.
 
 \textit{dotted decimal} per IPv4 e quello descritto in
 sez.~\ref{sec:IP_ipv6_notation} per IPv6.
 
-\index{socket!definizione|)}
-