| .\" This manpage is Copyright (C) 1996 Austin Donnelly <and1000@cam.ac.uk>, |
| .\" with additional material Copyright (c) 1995 Martin Schulze |
| .\" <joey@infodrom.north.de> |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .\" This manpage was made by merging two independently written manpages, |
| .\" one written by Martin Schulze (18 Oct 95), the other written by |
| .\" Austin Donnelly, (9 Jan 96). |
| .\" |
| .\" Thu Jan 11 12:14:41 1996 Austin Donnelly <and1000@cam.ac.uk> |
| .\" * Merged two services(5) manpages |
| .\" |
| .TH SERVICES 5 2020-04-11 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| services \- Internet network services list |
| .SH DESCRIPTION |
| .B services |
| is a plain ASCII file providing a mapping between human-friendly textual |
| names for internet services, and their underlying assigned port |
| numbers and protocol types. |
| Every networking program should look into |
| this file to get the port number (and protocol) for its service. |
| The C library routines |
| .BR getservent (3), |
| .BR getservbyname (3), |
| .BR getservbyport (3), |
| .BR setservent (3), |
| and |
| .BR endservent (3) |
| support querying this file from programs. |
| .PP |
| Port numbers are assigned by the IANA (Internet Assigned Numbers |
| Authority), and their current policy is to assign both TCP and UDP |
| protocols when assigning a port number. |
| Therefore, most entries will |
| have two entries, even for TCP-only services. |
| .PP |
| Port numbers below 1024 (so-called "low numbered" ports) can be |
| bound to only by root (see |
| .BR bind (2), |
| .BR tcp (7), |
| and |
| .BR udp (7)). |
| This is so clients connecting to low numbered ports can trust |
| that the service running on the port is the standard implementation, |
| and not a rogue service run by a user of the machine. |
| Well-known port numbers specified by the IANA are normally |
| located in this root-only space. |
| .PP |
| The presence of an entry for a service in the |
| .B services |
| file does not necessarily mean that the service is currently running |
| on the machine. |
| See |
| .BR inetd.conf (5) |
| for the configuration of Internet services offered. |
| Note that not all |
| networking services are started by |
| .BR inetd (8), |
| and so won't appear in |
| .BR inetd.conf (5). |
| In particular, news (NNTP) and mail (SMTP) servers are often |
| initialized from the system boot scripts. |
| .PP |
| The location of the |
| .B services |
| file is defined by |
| .B _PATH_SERVICES |
| in |
| .IR <netdb.h> "." |
| This is usually set to |
| .IR /etc/services "." |
| .PP |
| Each line describes one service, and is of the form: |
| .IP |
| \f2service-name\ \ \ port\f3/\f2protocol\ \ \ \f1[\f2aliases ...\f1] |
| .TP |
| where: |
| .TP |
| .I service-name |
| is the friendly name the service is known by and looked up under. |
| It is case sensitive. |
| Often, the client program is named after the |
| .IR service-name "." |
| .TP |
| .I port |
| is the port number (in decimal) to use for this service. |
| .TP |
| .I protocol |
| is the type of protocol to be used. |
| This field should match an entry |
| in the |
| .BR protocols (5) |
| file. |
| Typical values include |
| .B tcp |
| and |
| .BR udp . |
| .TP |
| .I aliases |
| is an optional space or tab separated list of other names for this |
| service. |
| Again, the names are case |
| sensitive. |
| .PP |
| Either spaces or tabs may be used to separate the fields. |
| .PP |
| Comments are started by the hash sign (#) and continue until the end |
| of the line. |
| Blank lines are skipped. |
| .PP |
| The |
| .I service-name |
| should begin in the first column of the file, since leading spaces are |
| not stripped. |
| .I service-names |
| can be any printable characters excluding space and tab. |
| However, a conservative choice of characters should be used to minimize |
| compatibility problems. |
| For example, a\-z, 0\-9, and hyphen (\-) would seem a |
| sensible choice. |
| .PP |
| Lines not matching this format should not be present in the |
| file. |
| (Currently, they are silently skipped by |
| .BR getservent (3), |
| .BR getservbyname (3), |
| and |
| .BR getservbyport (3). |
| However, this behavior should not be relied on.) |
| .PP |
| .\" The following is not true as at glibc 2.8 (a line with a comma is |
| .\" ignored by getservent()); it's not clear if/when it was ever true. |
| .\" As a backward compatibility feature, the slash (/) between the |
| .\" .I port |
| .\" number and |
| .\" .I protocol |
| .\" name can in fact be either a slash or a comma (,). |
| .\" Use of the comma in |
| .\" modern installations is deprecated. |
| .\" |
| This file might be distributed over a network using a network-wide |
| naming service like Yellow Pages/NIS or BIND/Hesiod. |
| .PP |
| A sample |
| .B services |
| file might look like this: |
| .PP |
| .in +4n |
| .EX |
| 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 \- unassigned |
| telnet 23/tcp |
| .EE |
| .in |
| .SH FILES |
| .TP |
| .I /etc/services |
| The Internet network services list |
| .TP |
| .I <netdb.h> |
| Definition of |
| .B _PATH_SERVICES |
| .\" .SH BUGS |
| .\" It's not clear when/if the following was ever true; |
| .\" it isn't true for glibc 2.8: |
| .\" There is a maximum of 35 aliases, due to the way the |
| .\" .BR getservent (3) |
| .\" code is written. |
| .\" |
| .\" It's not clear when/if the following was ever true; |
| .\" it isn't true for glibc 2.8: |
| .\" Lines longer than |
| .\" .B BUFSIZ |
| .\" (currently 1024) characters will be ignored by |
| .\" .BR getservent (3), |
| .\" .BR getservbyname (3), |
| .\" and |
| .\" .BR getservbyport (3). |
| .\" However, this will also cause the next line to be mis-parsed. |
| .SH SEE ALSO |
| .BR listen (2), |
| .BR endservent (3), |
| .BR getservbyname (3), |
| .BR getservbyport (3), |
| .BR getservent (3), |
| .BR setservent (3), |
| .BR inetd.conf (5), |
| .BR protocols (5), |
| .BR inetd (8) |
| .PP |
| Assigned Numbers RFC, most recently RFC\ 1700, (AKA STD0002). |