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 <boomer [AT] ccidnet.com>
2000/11/01