X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=socket.tex;h=dc9f501a51abfda4d49dcda5cb0afc9ebbc8a403;hp=2d31d6c73b17d2dc57d880df48a8e7a83fed49b1;hb=7e19b798d0cc09960daad695d8f3b242170bb3b4;hpb=fae1b357c38b50ce788f3f06f7153b1ce4ee57df diff --git a/socket.tex b/socket.tex index 2d31d6c..dc9f501 100644 --- a/socket.tex +++ b/socket.tex @@ -1,6 +1,6 @@ %% socket.tex %% -%% Copyright (C) 2000-2017 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2018 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Un preambolo", @@ -33,7 +33,7 @@ creati. \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 @@ -199,44 +199,42 @@ comunicazione. \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 @@ -256,7 +254,7 @@ elenco delle famiglie di protocolli disponibili in Linux è riportato in 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 @@ -342,27 +340,27 @@ appena elencati. &\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 @@ -520,7 +518,7 @@ maniera generica tipi di indirizzi diversi (ad esempio IPv4 ed IPv6). \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 @@ -573,7 +571,7 @@ soluzioni). \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}, è @@ -623,7 +621,7 @@ dimensioni di quest'ultima (per questo se necessario è opportuno usare \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 @@ -667,7 +665,7 @@ la struttura restituita è di dimensione \code{sizeof(sa\_family\_t)}, quindi \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 @@ -716,7 +714,7 @@ rete. \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 @@ -827,13 +825,15 @@ lunghezza effettiva del pacchetto così come arrivato sulla linea. %% \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