ポートマップ
ポートマップまたはポートマッパー(portmap、rpc.portmap、portmapper、rpcbindなどと実装によって名前は異なる)とは、ONC RPC プログラム番号をポート番号に対応付けるサービスを行うデーモン。
標準実装
[編集]ポートマップは、Unix系システムで動作するデーモンであり、RPCプログラム番号をDARPAプロトコルのポート番号に変換する。使用するポート数をなるべく最小化することを意図しているが、実際にはそれほどよく使われるものではないため、多数のポートを使うことはない。RPC を行う際には必ずなければならない。
RPCサーバが起動すると、ポートマップに対して、待ち受けるべきポート番号と対応すべきRPCプログラム番号が通知される。クライアントがあるプログラム番号に対してRPCを行う場合、最初にサーバ上のポートマップに対してプログラム番号を送信し、RPCを行うべきポート番号を得る。従って、ポートマップはRPCサーバプログラムが起動される前に動作していなければならない。
ポートマップは BSD 4.3 で最初に実装された。NIS、NFS、FAM 以外ではほとんど使われない。
具体例
[編集]以下の例は、個々のプログラム(およびそのバージョン)ごとにどのポートを使うかを示している。例えば、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のようなスーパーサーバが要求を待ちうけ、必要に応じて各種サービスを起動させるのが一般的である。
関連項目
[編集]参考文献
[編集]- Ethan McCallum The Watchful Eye of FAM Linuxdevcenterの2004年12月16日の記事
外部リンク
[編集]- portmap(8) FreeBSD一般コマンドマニュアル
- RFC 1833 - ONC RPC ポートマッピング・プロトコルの仕様