Questo è il file che contiene le corrispondenze fra nomi simbolici e numeri delle porte assegnate ai vari servizi (si ricordi quanto spiegato in sez. 1.5). Di norma non è un file che sia necessario modificare, ma è utile per avere un riferimento che permette di associare un numero di porta ad un determinato servizio.
Bussando a quella porta (o sintonizzandosi su quella frequenza a seconda dell'analogia che si preferisce) si potranno scambiare, attraverso l'opportuno protocollo, i dati relativi al servizio associato. In realtà dal punto di vista del TCP/IP si potrebbe usare un numero di porta qualsiasi, ma la standardizzazione ha portato ad associare alcuni numeri a dei servizi specifici (la porta 25 alla posta elettronica, la porta 80 al web, ecc.).
In genere in Unix le prime 1024 porte sono dette riservate in quanto solo l'amministratore può installarci sopra dei servizi; la corrispondenza fra queste porte ed i servizi che ci devono essere installati è regolata a livello internazionale: nessuno vi obbliga a rispettare la convenzione, ma se mettete la posta elettronica sulla porta 80 e il web sulla 25 avrete certamente delle grosse difficoltà a comunicare con gli altri, dato che in genere i browser cercano i siti sulla porta 80, ed i programmi di posta la mandano sulla 25.
Al di sopra della porta 1024 qualunque utente può mettere un suo servizio, alcuni però sono stati usati tradizionalmente da alcuni servizi, ed il file /etc/services tiene conto anche di questi. Esso contiene un elenco di numeri a ciascuno dei quali è associato un nome simbolico che individua il servizio ad esso associato dalle convenzioni internazionali. Un estratto del file è:
... ftp-data 20/tcp ftp 21/tcp fsp 21/udp fspd ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol telnet 23/tcp # 24 - private smtp 25/tcp mail # 26 - unassigned time 37/tcp timserver time 37/udp timserver whois 43/tcp nicname re-mail-ck 50/tcp # Remote Mail Checking Protocol re-mail-ck 50/udp # Remote Mail Checking Protocol domain 53/tcp nameserver # name-domain server domain 53/udp nameserver mtp 57/tcp # deprecated bootps 67/tcp # BOOTP server bootps 67/udp bootpc 68/tcp # BOOTP client bootpc 68/udp tftp 69/udp gopher 70/tcp # Internet Gopher gopher 70/udp rje 77/tcp netrjs finger 79/tcp www 80/tcp http # WorldWideWeb HTTP www 80/udp # HyperText Transfer Protocol ...
Al solito, righe vuote e tutto quello che segue un # viene ignorato; ogni riga ha il formato:
nome numero/protocollo aliasdove nome é l'identificativo simbolico del servizio, numero è il numero di porta ad esso assegnato, protocollo indica se si tratta di UDP o TCP, e alias è la lista di eventuali altri nomi associati allo stesso servizio.
È guardando in questo file che vari programmi attinenti alla rete (ad esempio netstat) che riportano o richiedono un numero di porta per un servizio possono utilizzare il nome simbolico di quest'ultimo (www, ftp, telnet), qui specificato, invece che il numero.