Which file on a Linux system maps service names such as ssh, smtp and http to their port numbers and transport protocols?

LPIC-1 Exam 102-500, objective 109. Networking fundamentals easy

Draft — not checked yet. This question was written from the published exam objectives and cites the clause it comes from, but nobody has yet read it against that clause and signed for it.

It is kept out of search results and out of mock exams until they have. Read the source below before you take the answer as settled.

The options

Not correct /etc/protocols

Wrong. /etc/protocols maps IP protocol names to protocol numbers (icmp 1, tcp 6, udp 17). It has nothing to do with port numbers.

Not correct /etc/nsswitch.conf

Wrong. nsswitch.conf decides which databases are consulted for lookups (including the `services` database) and in what order, but it stores no name-to-port mappings itself.

Correct /etc/services

Correct. /etc/services holds lines such as `ssh 22/tcp` and `domain 53/udp`, which let tools print or accept service names instead of numbers.

Not correct /etc/hosts

Wrong. /etc/hosts is the static mapping of IP addresses to hostnames and aliases, consulted before or after DNS depending on nsswitch.conf.

Why

/etc/services is why `ss -t` prints `ssh` instead of `22` and why `nc host smtp` works. Suppress the lookup with the numeric flag most tools offer (`ss -n`, `netstat -n`). You can query the database portably with `getent services ssh`.

Where this comes from

Cited
LPI exam objective 109.1
What it says
Know the purpose of /etc/services.

Practise this

Reading one question is not practice. The trainer will draw a set from objective 109 and space the ones you get wrong.

Practise LPIC-1 Exam 102-500