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:
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
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.
Assigned Numbers RFC, il più recente è il documento RFC 1700, anche noto come STD0002.
Guida ai servizi Yellow Pages
Guida ai servizi BIND/Hesiod