\item \texttt{EPROTONOSUPPORT} Il tipo di socket o il protocollo scelto non
sono supportati nel dominio.
\item \texttt{ENFILE} Il kernel non ha memoria sufficiente a creare una
- nuova strutture per il socket.
+ nuova struttura per il socket.
\item \texttt{EMFILE} Si è ecceduta la tabella dei file.
\item \texttt{EACCES} Non si hanno privilegi per creare un socket nel
dominio o con il protocollo specificato.
\item \texttt{SOCK\_PACKET} Obsoleto, non deve essere usato.
\end{list}
-
Si tenga presente che non tutte le combinazioni di famiglia di protocolli e
tipo di socket sono valide, in quanto non è detto che nella famiglia esista un
protocollo per tutti gli stili di comunicazione indicati qui sopra. Una
-tabella che mostra le combianazioni valide è la seguente:
+tabella che mostra le combinazioni valide è la seguente:
\begin{table}[htb]
\footnotesize
\centering
\begin{tabular}{l|c|c|c|c|c|}
- &\multicolumn{1}{c}{\texttt{SOCK\_STREAM}}&
+ \multicolumn{1}{c}{} &\multicolumn{1}{c}{\texttt{SOCK\_STREAM}}&
\multicolumn{1}{c}{\texttt{SOCK\_DGRAM}} &
\multicolumn{1}{c}{\texttt{SOCK\_RAW}} &
\multicolumn{1}{c}{\texttt{SOCK\_PACKET}}&
\multicolumn{1}{c}{\texttt{SOCK\_SEQPACKET}} \\
+ \cline{2-6}
\texttt{PF\_UNIX} & si & si & & & \\
+ \cline{2-6}
\texttt{PF\_INET} & TCP & UDP & IPv4 & & \\
+ \cline{2-6}
\texttt{PF\_INET6} & TCP & UDP & IPv6 & & \\
+ \cline{2-6}
\texttt{PF\_IPX} & ? & & & & \\
+ \cline{2-6}
\texttt{PF\_NETLINK} & & & si & & \\
+ \cline{2-6}
\texttt{PF\_X25} & & & & & \\
+ \cline{2-6}
\texttt{PF\_AX25} & & & & & \\
+ \cline{2-6}
\texttt{PF\_ATMPVC} & ? & & & & \\
+ \cline{2-6}
\texttt{PF\_APPLETALK} & ? & & & & \\
+ \cline{2-6}
\texttt{PF\_PACKET} & & & & & \\
+ \cline{2-6}
\end{tabular}
\caption{Combinazioni valide di dominio e tipo di protocollo per la funzione \texttt{socket}.}
\label{tab:sock_sock_valid_combinations}
\end{table}
+Dove per ogni combinazione valida si è indicato il tipo di protocollo, o la
+parola \textsl{si} qualora non il protocollo non abbia un nome definito,
+mentre si sono lasciate vuote le caselle per le combinazioni non supportate.
-
-\section{Le strutture degli indirizzi}
+\section{Le strutture degli indirizzi dei socket}
\label{sec:sock_sockaddr}
-La gran parte dei
+Benché esse non vengano utilizzate nella creazione di un socket le strutture
+degli indirizzi sono usate da quasi tutte le altre funzioni concernenti
+socket, per cui in questa sezione le tratteremo in dettaglio.
+
+
+I nomi di tutte queste strutture iniziano per \texttt{sockaddr\_} e ciascuna
+famiglia di protocolli ha una sua peculiare, che viene identificata dal
+suffisso finale aggiunto al nome precedente.
+
+
+\subsection{La struttura generica}
+\label{sec:sock_sa_gen}
+
+\subsection{La struttura degli indirizzi IPv4}
+\label{sec:sock_sa_ipv4}
+
+\subsection{La struttura degli indirizzi IPv6}
+\label{sec:sock_sa_ipv6}
+
+\subsection{La struttura degli indirizzi locali}
+\label{sec:sock_sa_local}
+
+
+
\section{Le funzioni di conversione degli indirizzi}
Per capire il funzionamento delle funzioni della interfaccia dei socket che
operano con TCP (le varie \texttt{connect}, \texttt{accept}, \texttt{close}
-che abbiamo visto negli esempi iniziali e su cui torneremo più avatni) è
+che abbiamo visto negli esempi iniziali e su cui torneremo più avanti) è
fodamentale capire come funziona la creazione e la conclusione di una
connessione TCP.