SERVICES(5)

名前
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/ に書かれている。