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 ファイルの場所は、 /usr/include/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). によって無視される。しかし、その場合の挙動は信頼できない)。 古いバージョンとの整合性の問題から、実際には port 番号と protocol の間のスラッシュ (/) は、スラッシュとコンマ (,) のどちらでも構わない。 しかしながら、現在のコンマを使用することは望ましいことではない。 このファイルは、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

バグ
getservent(3) のコードの書き方の問題で、35個までしか別名を付けることができない。 BUFSIZ (現在は1024)文字より長い行は、 getservent(3), getservbyname(3), getservbyport(3). には無視される。さらに、このことは次の行が正しく解釈されない原因となる。

ファイル

/etc/services
    インターネット ネットワークサービスのリスト

/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、別名 STD0002 ) Yellow Pages Service / NIS のドキュメント BIND/Hesiod Service のドキュメント