-\chapter{Socket}
-\label{cha:socket}
-
-I \textit{socket} sono usati come meccanismo di comunicazione fra programmi
-utilizzato in ambito unix (e non solo). La creazione di un socket restituisce
-un file descriptor 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 attraverso la rete.
-
-I socket infatti sono la principale API (\textit{Application Program
- Interface}) usata nella programmazione di rete. La loro origine risale al
-1983, quando furono introdotti nel BSD 4.2; l'interfaccia è rimasta
+\chapter{Introduzione ai socket}
+\label{cha:socket_intro}
+
+Il \textit{socket} (traducibile liberamente come \textsl{manicotto}) è uno dei
+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.
+
+La creazione di un socket restituisce un file descriptor con un comportamento
+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 attraverso la rete.
+
+Quella dei socket costituisce infatti la principale API (\textit{Application
+ Program Interface}) usata nella programmazione di rete. La loro origine
+risale al 1983, quando furono introdotti nel BSD 4.2; l'interfaccia è rimasta
sostanzialmente la stessa con piccole modifiche negli anni successivi. Benché
siano state sviluppate interfacce alternative, originate dai sistemi SYSV,
come la XTI (\textit{X/Open Transport Interface}) nessuna ha mai raggiunto la
-diffusione e la popolarità di quella dei socket (e tantomeno usabilità e
+diffusione e la popolarità di quella dei socket (né tantomeno usabilità e
flessibilità).
+La flessibilità e la genericità dell'interfaccia inoltre ha consentito di
+utilizzare i socket con i più disparati meccanismi di comunicazione, e non
+solo con la suite dei protocolli TCP/IP, che sarà comunque quella di cui
+tratteremo in maniera più estesa.
+
\section{Concetti base}
\label{sec:sock_gen}
chiamano \textsl{domini} (\textit{domains}). La scelta di un dominio equivale
in sostanza alla scelta di una famiglia di protocolli. Ciascun dominio ha un
suo nome simbolico che convenzionalmente inizia con \texttt{PF\_} (da
-\textit{protocol family}, altro nome con cui si indicano i domini).
+\textit{Protocol Family}, 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}, nome che useremo anche noi; le man
-pages di linux si riferiscono a questi anche come \textit{name space}, nome
+\texttt{AF\_} da \textit{Address Family}, nome che useremo anche noi; 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.
+
I domini (e i relativi nomi simbolici) sono definiti dall'header
\textit{socket.h}. In linux sono disponibili le famiglie di protocolli
riportate in \ntab.
\label{tab:net_pf_names}
\end{table}
-
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
\end{list}
-
-
-