[Avanti]  [Indietro]  [Su]  

14.2.2 Il dominio, o protocol family

Dati i tanti e diversi protocolli di comunicazione disponibili, esistono vari tipi di socket, che vengono classificati raggruppandoli in quelli che si chiamano domini. La scelta di un dominio equivale in sostanza alla scelta di una famiglia di protocolli, e viene effettuata attraverso l'argomento domain della funzione socket. Ciascun dominio ha un suo nome simbolico che convenzionalmente inizia con una costante che inizia per PF_, iniziali di protocol family, un altro nome con cui si indicano i domini.

A ciascun tipo di dominio corrisponde un analogo nome simbolico, anch'esso associato ad una costante, che inizia invece per AF_ (da address family) che identifica il formato degli indirizzi usati in quel dominio. Le pagine di manuale di Linux si riferiscono a questi indirizzi anche come name space,3 dato che identificano il formato degli indirizzi usati in quel dominio per identificare i capi della comunicazione.






Nome Valore Utilizzo Man page








PF_UNSPEC 0 Non specificato
PF_LOCAL 1 Local communication unix(7)
PF_UNIX, PF_FILE 1
PF_INET 2 IPv4 Internet protocols ip(7)
PF_AX25 3 Amateur radio AX.25 protocol
PF_IPX 4 IPX - Novell protocols
PF_APPLETALK 5 Appletalk ddp(7)
PF_NETROM 6 Amateur radio NetROM
PF_BRIDGE 7 Multiprotocol bridge
PF_ATMPVC 8 Access to raw ATM PVCs
PF_X25 9 ITU-T X.25 / ISO-8208 protocol x25(7)
PF_INET6 10 IPv6 Internet protocols ipv6(7)
PF_ROSE 11 Amateur Radio X.25 PLP
PF_DECnet 12 Reserved for DECnet project
PF_NETBEUI 13 Reserved for 802.2LLC project
PF_SECURITY 14 Security callback pseudo AF
PF_KEY 15 PF_KEY key management API
PF_NETLINK 16 Kernel user interface device netlink(7)
PF_PACKET 17 Low level packet interface packet(7)
PF_ASH 18 Ash
PF_ECONET 19 Acorn Econet
PF_ATMSVC 20 ATM SVCs
PF_SNA 22 Linux SNA Project
PF_IRDA 23 IRDA sockets
PF_PPPOX 24 PPPoX sockets
PF_WANPIPE 25 Wanpipe API sockets
PF_BLUETOOTH 31 Bluetooth sockets





Tabella 14.1: Famiglie di protocolli definiti in Linux.

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 PF_ si sarebbe dovuto usare nella creazione dei socket e il prefisso AF_ in quello delle strutture degli indirizzi; questo è quanto specificato anche dallo standard POSIX.1g, ma non esistono a tuttora famiglie di protocolli che supportino diverse strutture di indirizzi, per cui nella pratica questi due nomi sono equivalenti e corrispondono agli stessi valori numerici.4

I domini (e i relativi nomi simbolici), così come i nomi delle famiglie di indirizzi, sono definiti dall'header socket.h. Un elenco delle famiglie di protocolli disponibili in Linux è riportato in tab. 14.1.5

Si tenga presente che non tutte le famiglie di protocolli sono utilizzabili dall'utente generico, ad esempio in generale tutti i socket di tipo SOCK_RAW possono essere creati solo da processi che hanno i privilegi di amministratore (cioè con user-ID effettivo uguale a zero) o dotati della capability CAP_NET_RAW.


[Avanti]  [Indietro]  [Su]  
© 2000-2003 Simone Piccardi
Pubblicazione web curata da Mirko Maischberger