[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]