2009-03-23 9 views
2

これは私が理解しているものです:rpcgenを使用している場合、呼び出し元はどのようにして呼び出し先を検索しますか?

.xファイルは、サーバーとクライアントによって共有されるインターフェイスとパラメータを定義します。 rpcgenでコンパイルすると、.h、_xdr.c、_clnt.c、および_svc.cが生成されます。 _clnt.cはスタブで、_svc.cはスケルトンです。

私は彼らが2の間のコミュニケーションを中間にすることを理解しますが、それはどうですか?また、私が見た例では、接続するマシンのIPアドレスを指定しています(例では127.0.0.1と同じものを使用していますが、ポートは指定していません)。それは予約されたポートを持っていますか?

答えて

4

手順には2つのステップがあります。ポートマッパーがポート111上で動作していて、RPCサービスはこのサービスによって登録され、このサービスによって検出されますが、それ自体が任意のポートで実行される可能性があります。

詳細はRFC 1833 - Binding Protocols for ONC RPC Version 2を参照してください。

1

RPCサーバーマシンでは、エンドポイントマッパーと呼ばれるプロセスが実行されています(これは特にONC RPCに適用されますが、他のRPCメカニズムも同様です)。このプロセスはの既知のポートで実行されるので、誰でもそのポートに接続できます(もちろん、セキュリティと存在を許可する)。

RPCサーバが起動して、エンドポイントマッパーに自身を登録し、そのコード(例えば、MULT)とポート番号を与え、およびエンドポイントマッパーは律儀後で使用するためにその情報を格納するだろう:

+---------+        +--------+ 
| Mapper, | <- Register MULT, port Y -- | Server | 
| known |        | for | 
| port X |        | MULT | 
+---------+        +--------+ 

クライアントがIPアドレスを使用してエンドポイントマッパーに接続すると、目的のコード(MULT)が得られ、エンドポイントマッパーが最終的な宛先を提供します。クライアントはMULTサービスのIPアドレスポート:

+--------+      +---------+ 
| Client | -- Request MULT -> | Mapper, | 
|  | <- Return port Y -- | known | 
|  |      | port X | 
+--------+      +---------+ 

この時点で、エンドポイントマッパーは中断して、クライアントがMULTサービス自体と直接セッションを開くことができます。

+--------+      +--------+ 
| Client | -- Connect to MULT -> | Server | 
|  | <-  Do stuff -> | for | 
|  |      | MULT | 
+--------+      +--------+ 
関連する問題