DCN-クライアントサーバーモデル
2つのリモートアプリケーションプロセスは、主に2つの異なる方法で通信できます。
Peer-to-peer: 両方のリモートプロセスは同じレベルで実行されており、共有リソースを使用してデータを交換します。
Client-Server: 1つのリモートプロセスがクライアントとして機能し、サーバーとして機能する別のアプリケーションプロセスにリソースを要求します。
クライアント/サーバーモデルでは、任意のプロセスがサーバーまたはクライアントとして機能できます。サーバーを構成するのは、マシンのタイプ、マシンのサイズ、またはその計算能力ではありません。マシンをサーバーにするのは、要求を処理する機能です。
システムは、サーバーとクライアントとして同時に機能できます。つまり、1つのプロセスがサーバーとして機能し、別のプロセスがクライアントとして機能します。これは、クライアントプロセスとサーバープロセスの両方が同じマシン上にある場合にも発生する可能性があります。
コミュニケーション
クライアント/サーバーモデルの2つのプロセスは、さまざまな方法で相互作用できます。
Sockets
リモートプロシージャコール(RPC)
ソケット
このパラダイムでは、サーバーとして機能するプロセスが、既知の(またはクライアントによって認識されている)ポートを使用してソケットを開き、クライアントの要求が来るまで待機します。クライアントとして機能する2番目のプロセスもソケットを開きますが、着信要求を待つ代わりに、クライアントは「要求を最初に」処理します。
サーバーにリクエストが届くと、リクエストが処理されます。情報共有またはリソース要求のいずれかです。
リモートプロシージャコール
これは、あるプロセスがプロシージャ呼び出しによって別のプロセスと相互作用するメカニズムです。1つのプロセス(クライアント)がリモートホスト上にあるプロシージャを呼び出します。リモートホスト上のプロセスはサーバーと呼ばれます。両方のプロセスにスタブが割り当てられます。この通信は次のように行われます。
クライアントプロセスはクライアントスタブを呼び出します。ローカルのプログラムに関連するすべてのパラメータを渡します。
次に、すべてのパラメーターがパック(マーシャリング)され、システムコールが実行されて、ネットワークの反対側にパラメーターが送信されます。
カーネルはネットワークを介してデータを送信し、もう一方の端はそれを受信します。
リモートホストは、データをマーシャリングされていないサーバースタブに渡します。
パラメータがプロシージャに渡され、プロシージャが実行されます。
結果は同じ方法でクライアントに返送されます。