Arch manual pages

SERVICES(5) File Formats Manual SERVICES(5)

services - Internet 網絡服務列表

services 是一個普通的 ASCII 碼文件, 它在 internet 服務的友好原文名以及這些服務預先分配的 端口和協議類型之間提供了映射. 每個聯網程序必須查找該文件以獲取 其服務的端口號(和協議). C 庫例程 getservent(3), getservbyname(3), getservbyport(3), setservent(3), 和 endservent(3) 支持由程序查詢該文件.

端口號由 IANA(Internet Assigned Numbers Authority) 分配, 他們當前的工作是分配端口號時, 指定 TCP 和 UDP 協議. 這樣, 大多數記錄會包括兩條子記錄, 即使只是 TCP 的服務也是如此

端口號在 1024 之下的(也稱作'低編碼'端口)只能由 root (參見 bind(2),tcp(7),udp(7).) 綁定. 這樣連接到低編碼端口的客戶可信任運行在該端口上的服務是標準的實現, 而不是由某臺機器的用戶運行的無聊的服務.由 IANA 確定的衆所周知的端口號通常只在 root 的控制範圍之內

services 文件中出現的一條服務記錄並不表示該服務當前在機器上運行.參見 inetd.conf(5) 以獲知提供的Internet服務的配置.注意不是所有聯網服務都由 inetd(8) 啓動,因而也不會出現在 inetd.conf(5) 之中. 特別地,news (NNTP)和mail (SMTP)服務程序通常由系統引導腳本初始化.

services 文件所存放的位置由 /usr/include/netdb.h 中的 _PATH_SERVICES 定義. 它通常設爲 /etc/services.

每行描述了一個服務,其格式如下:

服務名   端口/協議   [別名 ...] 這裏的
服務名
是給服務所起的可供查找的友好的名字.它是區分大小寫的.通常,客戶端程序都以 服務名 命名.
端口
爲該服務所用的端口號(十進制格式).
協議
爲所使用的協議類型.該字段應與 protocols(5) 文件中的一條記錄相匹配.典型的值包括 tcpudp.
別名
可以空缺,或者是以tab分隔的該服務的其他名字的列表(不過請查看下面的BUGS章節).同樣, 這些名字也是區分大小寫的.

可以使用空格或者tab分隔這些字段.

註釋以hash標識(#)開頭,一直到該行末結束.空行可跳過.

服務名 必須是該文件的第一列,因爲其前面的空格不會刪去. 服務名 可以爲任何可打印的字符,包括空格和tab,但是,應該使用字符的保守選擇來最低限度地減少 操作中的問題.例如:a-z,0-9,和連字符(-)看上去就是一個合理的選擇.

不匹配該格式的行不應該在該文件中出現.(當前情況下, getservent(3),getservbyname(3),getservbyport(3) 可以忽略它們.不過,不應該依靠這種方法.)

爲了向後兼容,在 端口 號和 協議 名之間的斜槓(/)實際可以爲斜槓或者是逗號(,).在現代的安裝中使用逗號是落後的.

該文件也可以通過使用網絡級命名服務如黃頁/NIS(Yellow Pages/NIS)或BIND/Hesiod來在一 個網絡中發佈.

一個 services 的樣本文件看上去如下:


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

最大隻能有35個別名,這是由 getservent(3) 代碼的寫入方式決定的.

BUFSIZ (當前爲1024)個字符更長的行, getservent(3),getservbyname(3),andgetservbyport(3) 會忽略掉. 不過,這也會導致錯過下一行.

/etc/services
Internet網絡服務列表
/usr/include/netdb.h
_PATH_SERVICES 的定義

getservent(3), getservbyname(3), getservbyport(3), setservent(3), endservent(3), protocols(5), listen(2), inetd.conf(5), inetd(8).

分配號碼RFC,最新的RFC 1700,(AKA STD0002)

黃頁服務的指南

BIND/Hesiod服務的指南

riser <boomer@ccidnet.com>

2000/11/01

http://cmpp.linuxforum.net

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
1996年1月11日 Linux 程序員手冊