12.3. 服务和协议文件

某些“标准”服务提供的端口号在 Assigned Numbers RFC 中定义。为了使服务器和客户端程序能够将服务名称转换为这些数字,至少部分列表保存在每台主机上;它存储在一个名为/etc/services的文件中。条目如下所示
service port/protocol   [aliases]

在这里,服务名称 (service)指定服务名称,端口 (port)定义服务提供的端口,以及协议 (protocol)定义使用的传输协议。通常,后一个字段是udptcp。一项服务可以使用多个协议,也可以在同一端口上提供不同的服务,只要协议不同即可。“别名 (aliases)”字段允许您为同一服务指定备用名称。

通常,您无需更改 Linux 系统上网络软件附带的服务文件。不过,我们在示例 12-2 中给出了该文件的一个小节选。

示例 12-2. /etc/services 文件的示例

# The services file:
#
# well-known services
echo           7/tcp                 # Echo
echo           7/udp                 #
discard        9/tcp  sink null      # Discard
discard        9/udp  sink null      #
daytime       13/tcp                 # Daytime
daytime       13/udp                 #
chargen       19/tcp  ttytst source  # Character Generator
chargen       19/udp  ttytst source  #
ftp-data      20/tcp                 # File Transfer Protocol (Data)
ftp           21/tcp                 # File Transfer Protocol (Control)
telnet        23/tcp                 # Virtual Terminal Protocol
smtp          25/tcp                 # Simple Mail Transfer Protocol
nntp         119/tcp  readnews       # Network News Transfer Protocol
#
# UNIX services
exec         512/tcp                 # BSD rexecd
biff         512/udp  comsat         # mail notification
login        513/tcp                 # remote login
who          513/udp  whod           # remote who and uptime
shell        514/tcp  cmd            # remote command, no passwd used
syslog       514/udp                 # remote system logging
printer      515/tcp  spooler        # remote print spooling
route        520/udp  router routed  # routing information protocol

请注意,echo 服务在端口 7 上同时提供 TCP 和 UDP,并且端口 512 用于两个不同的服务:使用 TCP 的远程执行 (rexec) 和 COMSAT 守护进程,它通过 UDP 通知用户新邮件(参见 xbiff(1x) )。

与服务文件类似,网络库需要一种方法将协议名称(例如,服务文件中使用的协议名称)转换为其他主机上的 IP 层可以理解的协议编号。 这是通过在/etc/protocols文件中查找名称来完成的。 它包含每行一个条目,每个条目包含一个协议名称和关联的数字。 需要修改此文件的可能性甚至比需要修改/etc/services的可能性更小。 示例 12-3 中给出了一个示例文件。

示例 12-3. /etc/protocols 文件的示例

#
# Internet (IP) protocols
#
ip      0       IP              # internet protocol, pseudo protocol number
icmp    1       ICMP            # internet control message protocol
igmp    2       IGMP            # internet group multicast protocol
tcp     6       TCP             # transmission control protocol
udp     17      UDP             # user datagram protocol
raw     255     RAW             # RAW IP interface