services - インターネット
ネットワークサービス
リスト
services
は、人が分かりやすい形のインターネットサービスの名前と、
それらのサービスに割り当てられたポート番号や
プロトコル種別の対応関係が書かれているテキストファイルである。
ネットワーク上で動作するプログラムはすべて、
そのサービスに対応するポート番号
(とプロトコル)
を得るために、
このファイルを調べる必要がある。
C
ライブラリ関数である
getservent(3),
getservbyname(3),
getservbyport(3),
setservent(3),
endservent(3)
を利用することで、プログラムはこのファイルを調べることができる。
ポート番号は、IANA (Internet Assigned
Numbers Authority) によって
割り当てられており、現在はポート番号を割り当てる際に
TCP と UDP
の両方のプロトコルを割り当てることになっている。
そのため、ほとんどのサービスに対して、
たとえ TCP
だけのサービスの場合であっても、対応する項目が二つあることになる。
1024
より小さいポート番号
(いわゆる "low numbered"
ポート) は 管理者 (root)
権限によってのみ使用することができる
(
bind(2),
tcp(7),
udp(7) 参照)。
これは、これらのポートに接続するクライアントに対して、
そのポートで動いているサービスが標準的な実装であり、
その計算機のユーザーが動かしている
不正なサービスではないことを保証するためである。
IANA
に明記されているよく使用されるポート番号は、
通常このような管理者だけが使用できる範囲に配置される。
services
ファイルにあるサービスに対する項目があっても、必ずしもそのサービスが現
在その計算機で動いている訳ではない。利用可能なインターネットサービスの設定に
ついては
inetd.conf(5)
に記述されている。ただし、すべてのサービスが
inetd(8)
によって起動されるわけではないので、
inetd.conf(5)
には書かれていないサービスもあることに注意する必要がある。
特に、ネットニュース
(NNTP) や メール (SMTP)
のサーバーは、システム起動時の
スクリプトから起動されることが多い。
services
ファイルの場所は、
<netdb.h> 中の
_PATH_SERVICES
によって定義されている。
この値は通常
/etc/services
に設定されている。
1 行につき 1
サービスが記述されており、以下の形式である。
-
service-name port/protocol [aliases
...]
- 各項目は以下の通り。
- service-name
- サービスを表す分かりやすい名前であり、検索の際にも使用される。
大文字と小文字は区別される。
クライアントプログラムは
service-name
にちなんで名付けられることが多い。
- port
- サービスに対して使用されるポート番号。10
進数で指定する。
- protocol
- 使用されるプロトコルの種類。この欄は、
protocols(5)
ファイルの中の項目と一致している必要がある。
通常使用される値は、
tcp と udp である。
- aliases
- サービスに対する別名のリスト
(区切はスペースまたはタブ)
で、この欄は
必要にならば書くことができる。
また、別名は大文字と小文字は区別される。
それぞれの欄の区切りには、スペースまたはタブが使用される。
コメントはシャープ (#)
で始まり、その行の終わりまでがコメントとみなされる。
空行は飛ばされる。
行の始めのスペースは無視されないので、
service-name
は、行頭から書かなければならない。
service-names
は、スペースとタブ以外の印字可能な文字なら何でもよいが、しかしながら
互換性の問題を少なくするような文字を選択すべきである。
例えば、a-z 、0-9
、ハイフォン (-)
を使用するのが無難と思われる。
指定された形式に合わない行はあってはならない
(現在は、そのような行は
getservent(3),
getservbyname(3),
getservbyport(3)
によって無視される。しかし、その場合の挙動は信頼できない)。
このファイルは 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
- /etc/services
- インターネット
ネットワークサービスのリスト
- <netdb.h>
-
_PATH_SERVICES の定義
listen(2),
endservent(3),
getservbyname(3),
getservbyport(3),
getservent(3),
setservent(3),
inetd.conf(5),
protocols(5),
inetd(8)
ポート番号の割り当てを定めている
RFC (最新版は RFC 1700、別名
STD0002)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。