NOME¶
services - Elenco dei servizi di rete internet
DESCRIZIONE¶
services è un normale file ASCII che fornisce una mappa tra i nomi
testuali dei servizi internet, e i nomi delle porte e i tipi di protocolli
loro assegnati. Ogni programma di rete dovrebbe guardare in questo file per
sapere il numero della porta (e il protocollo) del suo servizio. Le routine
della libreria C
getservent(3),
getservbyname(3),
getservbyport(3),
setservent(3), e
endservent(3)
supportano l'interrogazione di questo file da parte dei programmi.
I numeri di porta sono assegnati dallo IANA (Internet Assigned Numbers
Authority), e la loro politica attuale assegna entrambi i protocolli TCP e UDP
quando si assegna un numero di porta. Perciò, molte voci avranno due
voci, anche per i servizi solo TCP.
I numeri di porta inferiori a 1024 (le cosiddette porte 'low numbered') possono
essere usate solo da root (si veda
bind(2),
tcp(7), e
udp(7)). Questo accade perché i clienti che si connettono a una
porta low numbered possono fare affidamento sul fatto che il servizio in
esecuzione sulla porta è l'implementazione standard e non un servizio
avviato da un utente della macchina. I numeri di porta noti specificati
dall'IANA sono normalmente localizzati in questo spazio esclusivo per root.
La presenza di una voce per un servizio nel file
services non significa
necessariamente che il servizio è attualmente in esecuzione sulla
macchina. Si veda
inetd.conf(5) per la configurazione dei servizi
Internet offerti. Si noti che non tutti i servizi di rete sono avviati da
inetd(8), e così non appariranno in
inetd.conf(5). In
particolare, i server per news (NNTP) e mail (SMTP) spesso sono inizializzati
dagli script di boot del sistema.
La posizione del file
services è definita da
_PATH_SERVICES
in
/usr/include/netdb.h. Questa è usualmente impostata a
/etc/services.
Ogni riga descrive un servizio, ed ha il seguente formato:
- nome-servizio porta/protocollo [alias
...]
- dove:
- nome-servizio
- è il nome amichevole con il quale è conosciuto il servizio e
con il quale viene cercato dai programmi. È case sensitive. Spesso,
i programmi client sono nominati in base al nome-servizio.
- porta
- è il numero della porta (in decimale) da usare per questo
servizio.
- protocollo
- è il tipo di protocollo da usare. Questo campo deve corrispondere
ad una voce nel file protocols(5). Valori tipici sono tcp e
udp.
- alias
- è una lista opzionale separata da spazi o tab di altri nomi per
questo servizio (ma si veda la sezione BACHI sotto). Ancora, i nomi sono
case sensitive.
Sia spazi che tab possono essere usati per separare i campi.
I commenti sono iniziati con il carattere `#' e continuano fino alla fine della
riga. Le righe vuote non vengono considerate.
Il
nome-servizio dovrebbe cominciare nella prima colonna del file, in
quanto gli spazi iniziali non sono scartati.
nome-servizio può
essere composto da caratteri stampabili qualsiasi ad esclusione di spazi e
tab, comunque dovrebbe essere usata una scelta conservativa di caratteri per
minimizzare i problemi di inter-operabilità. Es.: a-z, 0-9 e trattino
(-) è una scelta sensata.
Nel file non dovrebbero essere presenti righe che non corrispondono a questo
formato. (Attualmente, esse sono scartate silenziosamente da
getservent(3),
getservbyname(3), e
getservbyport(3). In
ogni caso, non si dovrebbe far affidamento su questo comportamento).
Per compatibilità all'indietro, lo slash (/) tra il numero di
porta e il nome del
protocollo può di fatto essere sia
uno slash che una virgola(,). L'uso della virgola nelle installazioni moderne
è deprecato.
Questo file potrebbe essere distribuito su una rete che usa un servizio di
network-wide naming come Yellow Pages/NIS o BIND/Hesiod.
Un semplice file
services potrebbe essere così:
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # message send protocol
msp 18/udp # message send protocol
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp 21/tcp
# 22 - non assegnato
telnet 23/tcp
BACHI¶
Gli alias per un servizio possono essere al massimo 35, a causa del modo in cui
è scritta
getservent(3).
Le righe più lunghe di
BUFSIZ caratteri (attualmente 1024) saranno
ignorate da
getservent(3),
getservbyname(3), e
getservbyport(3). Tuttavia, ciò causa anche un'analisi sbagliata
della riga successiva.
FILE¶
- /etc/services
- L'elenco dei servizi di rete internet
- /usr/include/netdb.h
- Definizione di _PATH_SERVICES
VEDERE ANCHE¶
listen(2),
endservent(3),
getservbyname(3),
getservbyport(3),
getservent(3),
setservent(3),
inetd.conf(5),
protocols(5),
inetd(8)
Assigned Numbers RFC, il più recente è il documento RFC 1700,
anche noto come STD0002.
Guida ai servizi Yellow Pages
Guida ai servizi BIND/Hesiod