ポートマップ

ポートマップまたはポートマッパー（"portmap"、"rpc.portmap"、"portmapper"、"rpcbind"などと実装によって名前は異なる）とは、ONC RPC プログラム番号をポート番号に対応付けるサービスを行うデーモン。
標準実装.
ポートマップは、Unix系システムで動作するデーモンであり、RPCプログラム番号をDARPAプロトコルのポート番号に変換する。使用するポート数をなるべく最小化することを意図しているが、実際にはそれほどよく使われるものではないため、多数のポートを使うことはない。RPC を行う際には必ずなければならない。
RPCサーバが起動すると、ポートマップに対して、待ち受けるべきポート番号と対応すべきRPCプログラム番号が通知される。クライアントがあるプログラム番号に対してRPCを行う場合、最初にサーバ上のポートマップに対してプログラム番号を送信し、RPCを行うべきポート番号を得る。従って、ポートマップはRPCサーバプログラムが起動される前に動作していなければならない。
ポートマップは BSD 4.3 で最初に実装された。NIS、NFS、 以外ではほとんど使われない。
具体例.
以下の例は、個々のプログラム（およびそのバージョン）ごとにどのポートを使うかを示している。例えば、NFSとしてバージョン 2 と 3 と 4 が動作しており、TCPのポート 2049 とUDPのポート 2049 を通してアクセス可能である。クライアントはTCPとUDPのどちらかを選んで通信する。
 $ rpcinfo -p 
 program vers proto port
 100000 2 tcp 111 portmapper
 100000 2 udp 111 portmapper
 100003 2 udp 2049 nfs
 100003 3 udp 2049 nfs
 100003 4 udp 2049 nfs
 100003 2 tcp 2049 nfs
 100003 3 tcp 2049 nfs
 100003 4 tcp 2049 nfs
 100024 1 udp 32770 status
 100021 1 udp 32770 nlockmgr
 100021 3 udp 32770 nlockmgr
 100021 4 udp 32770 nlockmgr
 100024 1 tcp 32769 status
 100021 1 tcp 32769 nlockmgr
 100021 3 tcp 32769 nlockmgr
 100021 4 tcp 32769 nlockmgr
 100005 1 udp 644 mountd
 100005 1 tcp 645 mountd
 100005 2 udp 644 mountd
 100005 2 tcp 645 mountd
 100005 3 udp 644 mountd
 100005 3 tcp 645 mountd
代替手法.
UNIXおよびLinux系システムでは、/etc/services というファイルにサービス/プロトコル名称とポート番号の対応表がある。これを使った静的なポートマッピングでは、inetdのようなスーパーサーバが要求を待ちうけ、必要に応じて各種サービスを起動させるのが一般的である。