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)
檔案中的一條記錄相匹配.典型的值包括
tcp 和 udp.
- 別名
- 可以空缺,或者是以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 <[email protected]>
2000/11/01
http://cmpp.linuxforum.net
本頁面中文版由中文 man
手冊頁計劃提供。
中文 man 手冊頁計劃:
https://github.com/man-pages-zh/manpages-zh