哪些字段可以作为 /etc/services 表中的键?

哪些字段可以作为 /etc/services 表中的键?

在 中/etc/services,服务名称可以有多个(传输协议、端口号)对。例如,Linux 编程接口说:

/etc/services 文件由包含三列的行组成,如以下示例所示:

# Service name  port/protocol  [aliases]

http            80/tcp                  # Hypertext Transfer Protocol
http            80/udp
ssh             22/tcp                  # Secure Shell
ssh             22/udp
telnet          23/tcp                  # Telnet
telnet          23/udp
smtp            25/tcp                  # Simple Mail Transfer Protocol
smtp            25/udp

哪些字段可以作为表中的键?

该示例显示服务名称可以对应于多个传输协议。

给定一个服务名称和一种传输协议,它们是否可以对应多个端口号?换句话说,一个服务可以在同一传输协议中侦听两个端口吗?

谢谢。

答案1

该文件描述于联机services(5)帮助页,以及它的用法相关函数的联机帮助页。后者表明以下预计是关键:

  • 名称和协议;
  • 端口号和协议。

请注意,服务可以有别名(您的示例未说明)。www例如通常是以下的别名http

http            80/tcp          www             # WorldWideWeb HTTP

关于什么服务do,/etc/services仅提供映射,不限制任何内容。因此,在 TCP 上请求的人http将被告知相应的分配端口是 80,但 HTTP 守护进程可以侦听它想要(并且被允许)的任何端口;同样,有人在 TCP 上请求端口 80 时会被告知相应的名称是http,但这并不意味着侦听端口 80 的服务器必须是 HTTP 服务器。此外,单个进程可以侦听多个端口,并且从内核 3.9 开始,在 BSD 和 Linux 上,多个进程可以侦听同一端口。

相关内容