\index{socket!definizione|(}
-\subsection{Cosa sono \textit{socket}}
+\subsection{Cosa sono i \textit{socket}}
\label{sec:sock_socket_def}
I \textit{socket} (una traduzione letterale potrebbe essere \textsl{presa}, ma
\textbf{Nome}&\textbf{Valore}&\textbf{Utilizzo}&\textbf{Man page} \\
\hline
\hline
- \constd{PF\_UNSPEC} & 0& Non specificato & \\
- \constd{PF\_LOCAL} & 1& Local communication & unix(7) \\
- \constd{PF\_UNIX}, \constd{PF\_FILE}&1&Sinonimi di \const{PF\_LOCAL}& \\
- \constd{PF\_INET} & 2& IPv4 Internet protocols & ip(7) \\
- \constd{PF\_AX25} & 3& Amateur radio AX.25 protocol & \\
- \constd{PF\_IPX} & 4& IPX - Novell protocols & \\
- \constd{PF\_APPLETALK}& 5& Appletalk & ddp(7) \\
- \constd{PF\_NETROM} & 6& Amateur radio NetROM & \\
- \constd{PF\_BRIDGE} & 7& Multiprotocol bridge & \\
- \constd{PF\_ATMPVC} & 8& Access to raw ATM PVCs & \\
- \constd{PF\_X25} & 9& ITU-T X.25 / ISO-8208 protocol& x25(7) \\
- \constd{PF\_INET6} &10& IPv6 Internet protocols & ipv6(7) \\
- \constd{PF\_ROSE} &11& Amateur Radio X.25 PLP & \\
- \constd{PF\_DECnet} &12& Reserved for DECnet project & \\
- \constd{PF\_NETBEUI} &13& Reserved for 802.2LLC project & \\
- \constd{PF\_SECURITY} &14& Security callback pseudo AF & \\
- \constd{PF\_KEY} &15& PF\_KEY key management API & \\
- \constd{PF\_NETLINK} &16& Kernel user interface device & netlink(7) \\
- \constd{PF\_ROUTE} &16& Sinonimo di \const{PF\_NETLINK} emula BSD.&\\
- \constd{PF\_PACKET} &17& Low level packet interface & packet(7) \\
- \constd{PF\_ASH} &18& Ash & \\
- \constd{PF\_ECONET} &19& Acorn Econet & \\
- \constd{PF\_ATMSVC} &20& ATM SVCs & \\
- \constd{PF\_SNA} &22& Linux SNA Project & \\
- \constd{PF\_IRDA} &23& IRDA socket (infrarossi) & \\
- \constd{PF\_PPPOX} &24& PPPoX socket & \\
- \constd{PF\_WANPIPE} &25& Wanpipe API socket & \\
- \constd{PF\_LLC} &26& Linux LLC & \\
- \constd{PF\_CAN} &29& Controller Are Network & \\
- \constd{PF\_BLUETOOTH}&31& Bluetooth socket & \\
+ \constd{AF\_UNSPEC} & 0& Non specificato & \\
+ \constd{AF\_LOCAL} & 1& Local communication & unix(7) \\
+ \constd{AF\_UNIX}, \constd{AF\_FILE}&1&Sinonimi di \const{AF\_LOCAL}& \\
+ \constd{AF\_INET} & 2& IPv4 Internet protocols & ip(7) \\
+ \constd{AF\_AX25} & 3& Amateur radio AX.25 protocol & \\
+ \constd{AF\_IPX} & 4& IPX - Novell protocols & \\
+ \constd{AF\_APPLETALK}& 5& Appletalk & ddp(7) \\
+ \constd{AF\_NETROM} & 6& Amateur radio NetROM & \\
+ \constd{AF\_BRIDGE} & 7& Multiprotocol bridge & \\
+ \constd{AF\_ATMPVC} & 8& Access to raw ATM PVCs & \\
+ \constd{AF\_X25} & 9& ITU-T X.25 / ISO-8208 protocol& x25(7) \\
+ \constd{AF\_INET6} &10& IPv6 Internet protocols & ipv6(7) \\
+ \constd{AF\_ROSE} &11& Amateur Radio X.25 PLP & \\
+ \constd{AF\_DECnet} &12& Reserved for DECnet project & \\
+ \constd{AF\_NETBEUI} &13& Reserved for 802.2LLC project & \\
+ \constd{AF\_SECURITY} &14& Security callback pseudo AF & \\
+ \constd{AF\_KEY} &15& AF\_KEY key management API & \\
+ \constd{AF\_NETLINK} &16& Kernel user interface device & netlink(7) \\
+ \constd{AF\_ROUTE} &16& Sinonimo di \const{AF\_NETLINK} emula BSD.&\\
+ \constd{AF\_PACKET} &17& Low level packet interface & packet(7) \\
+ \constd{AF\_ASH} &18& Ash & \\
+ \constd{AF\_ECONET} &19& Acorn Econet & \\
+ \constd{AF\_ATMSVC} &20& ATM SVCs & \\
+ \constd{AF\_SNA} &22& Linux SNA Project & \\
+ \constd{AF\_IRDA} &23& IRDA socket (infrarossi) & \\
+ \constd{AF\_PPPOX} &24& PPPoX socket & \\
+ \constd{AF\_WANPIPE} &25& Wanpipe API socket & \\
+ \constd{AF\_LLC} &26& Linux LLC & \\
+ \constd{AF\_CAN} &29& Controller Are Network & \\
+ \constd{AF\_BLUETOOTH}&31& Bluetooth socket & \\
\hline
\end{tabular}
\caption{Famiglie di protocolli definiti in Linux.}
\label{tab:net_pf_names}
\end{table}
-% TODO aggiungere PF_CAN, vedi http://lwn.net/Articles/253425, dal 2.6.25
-
L'idea alla base della distinzione fra questi due insiemi di costanti era che
una famiglia di protocolli potesse supportare vari tipi di indirizzi, per cui
il prefisso \texttt{PF\_} si sarebbe dovuto usare nella creazione dei socket e
tab.~\ref{tab:net_pf_names}. L'elenco indica tutti i protocolli definiti; fra
questi però saranno utilizzabili solo quelli per i quali si è compilato il
supporto nel kernel (o si sono caricati gli opportuni moduli), viene definita
-anche una costante \constd{PF\_MAX} che indica il valore massimo associabile
+anche una costante \constd{AF\_MAX} che indica il valore massimo associabile
ad un dominio.
Si tenga presente che non tutte le famiglie di protocolli sono utilizzabili
&\const{SOCK\_STREAM} &\const{SOCK\_DGRAM} &\const{SOCK\_RAW}&
\const{SOCK\_RDM}&\const{SOCK\_SEQPACKET} \\
\hline
- \const{PF\_UNIX} & si & si & -- & -- & si\footnotemark \\
+ \const{AF\_UNIX} & si & si & -- & -- & si\footnotemark \\
\hline
- \const{PF\_LOCAL}&\multicolumn{5}{|c|}{sinonimo di \const{PF\_UNIX}}\\
+ \const{AF\_LOCAL}&\multicolumn{5}{|c|}{sinonimo di \const{AF\_UNIX}}\\
\hline
- \const{PF\_INET} & TCP & UDP & IPv4 & -- & -- \\
+ \const{AF\_INET} & TCP & UDP & IPv4 & -- & -- \\
\hline
- \const{PF\_INET6} & TCP & UDP & IPv6 & -- & -- \\
+ \const{AF\_INET6} & TCP & UDP & IPv6 & -- & -- \\
\hline
- \const{PF\_IPX} & -- & -- & -- & -- & -- \\
+ \const{AF\_IPX} & -- & -- & -- & -- & -- \\
\hline
- \const{PF\_NETLINK} & -- & si & si & -- & -- \\
+ \const{AF\_NETLINK} & -- & si & si & -- & -- \\
\hline
- \const{PF\_X25} & -- & -- & -- & -- & si \\
+ \const{AF\_X25} & -- & -- & -- & -- & si \\
\hline
- \const{PF\_AX25} & -- & -- & -- & -- & -- \\
+ \const{AF\_AX25} & -- & -- & -- & -- & -- \\
\hline
- \const{PF\_ATMPVC} & -- & -- & -- & -- & -- \\
+ \const{AF\_ATMPVC} & -- & -- & -- & -- & -- \\
\hline
- \const{PF\_APPLETALK} & -- & si & si & -- & -- \\
+ \const{AF\_APPLETALK} & -- & si & si & -- & -- \\
\hline
- \const{PF\_PACKET} & -- & si & si & -- & -- \\
+ \const{AF\_PACKET} & -- & si & si & -- & -- \\
\hline
\end{tabular}
\caption{Combinazioni valide di dominio e tipo di protocollo per la
\subsection{La struttura degli indirizzi IPv4}
\label{sec:sock_sa_ipv4}
-I socket di tipo \const{PF\_INET} vengono usati per la comunicazione
+I socket di tipo \const{AF\_INET} vengono usati per la comunicazione
attraverso Internet; la struttura per gli indirizzi per un socket Internet (se
si usa IPv4) è definita come \struct{sockaddr\_in} nell'header file
\headfiled{netinet/in.h} ed ha la forma mostrata in
\subsection{La struttura degli indirizzi IPv6}
\label{sec:sock_sa_ipv6}
-Essendo IPv6 un'estensione di IPv4, i socket di tipo \const{PF\_INET6} sono
+Essendo IPv6 un'estensione di IPv4, i socket di tipo \const{AF\_INET6} sono
sostanzialmente identici ai precedenti; la parte in cui si trovano
praticamente tutte le differenze fra i due socket è quella della struttura
degli indirizzi; la sua definizione, presa da \headfile{netinet/in.h}, è
\subsection{La struttura degli indirizzi locali}
\label{sec:sock_sa_local}
-I socket di tipo \const{PF\_UNIX} o \const{PF\_LOCAL} vengono usati per una
+I socket di tipo \const{AF\_UNIX} o \const{AF\_LOCAL} vengono usati per una
comunicazione fra processi che stanno sulla stessa macchina (per questo
vengono chiamati \textit{local domain} o anche \textit{Unix domain}); essi
hanno la caratteristica ulteriore di poter essere creati anche in maniera
\subsection{La struttura degli indirizzi AppleTalk}
\label{sec:sock_sa_appletalk}
-I socket di tipo \const{PF\_APPLETALK} sono usati dalla libreria
+I socket di tipo \const{AF\_APPLETALK} sono usati dalla libreria
\file{netatalk} per implementare la comunicazione secondo il protocollo
AppleTalk, uno dei primi protocolli di rete usato nel mondo dei personal
computer, usato dalla Apple per connettere fra loro computer e stampanti. Il
\subsection{La struttura degli indirizzi dei \textit{packet socket}}
\label{sec:sock_sa_packet}
-I \textit{packet socket}, identificati dal dominio \const{PF\_PACKET}, sono
+I \textit{packet socket}, identificati dal dominio \const{AF\_PACKET}, sono
un'interfaccia specifica di Linux per inviare e ricevere pacchetti
direttamente su un'interfaccia di rete, senza passare per le funzioni di
gestione dei protocolli di livello superiore. In questo modo è possibile
%% \subsection{La struttura degli indirizzi DECnet}
%% \label{sec:sock_sa_decnet}
-%% I socket di tipo \const{PF\_DECnet} usano il protocollo DECnet, usato dai VAX
+%% I socket di tipo \const{AF\_DECnet} usano il protocollo DECnet, usato dai VAX
%% Digital sotto VMS quando ancora il TCP/IP non era diventato lo standard di
%% fatto. Il protocollo è un protocollo chiuso, ed il suo uso attuale è limitato
%% alla comunicazione con macchine che stanno comunque scomparendo. Lo si riporta
%% solo come esempio
+% TODO aggiungere AF_CAN, vedi http://lwn.net/Articles/253425, dal 2.6.25 ?
+
% TODO: trattare i socket RDS, vedi documentazione del kernel, file
% Documentation/networking/rds.txt