Cambiamenti e aggiunte minori.
[gapil.git] / socket.tex
index 786ed5538de8addad5d3a9057a96ae17a20c83d0..de622fcc5794dae29c0a5746e42105c70aefeb9e 100644 (file)
@@ -1,22 +1,31 @@
-\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 ( 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}
@@ -61,14 +70,15 @@ tipi di socket, che vengono classificati raggruppandoli in quelli che si
 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.
@@ -92,7 +102,6 @@ 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
@@ -122,6 +131,3 @@ glibc chiama \textit{styles}) definiti come \texttt{int} in \texttt{socket.h}:
 \end{list}
 
 
-
-
-