ポート番号は、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 は、行頭から書かなければならない。 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
ポート番号の割り当てを定めている RFC (最新版は RFC 1700、別名 STD0002)
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]