table of contents
SERVICES(5) | Linux Programmer's Manual | SERVICES(5) |
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
11 gennaio 1996 | Linux |