Data-communication-computer-network-client-server-model

提供:Dev Guides
移動先:案内検索

DCN-クライアントサーバーモデル

2つのリモートアプリケーションプロセスは、主に2つの異なる方法で通信できます。

  • *ピアツーピア:*両方のリモートプロセスは同じレベルで実行されており、何らかの共有リソースを使用してデータを交換します。
  • クライアントサーバー: 1つのリモートプロセスがクライアントとして機能し、サーバーとして機能する別のアプリケーションプロセスからリソースを要求します。

クライアント/サーバーモデルでは、どのプロセスもサーバーまたはクライアントとして機能できます。 サーバーにするのは、マシンの種類、マシンのサイズ、または計算能力ではありません。マシンをサーバーにするのはリクエストを処理する能力です。

image

システムは、サーバーとクライアントとして同時に機能できます。 つまり、1つのプロセスがサーバーとして機能し、別のプロセスがクライアントとして機能します。 これは、クライアントプロセスとサーバープロセスの両方が同じマシンに存在する場合にも発生する可能性があります。

コミュニケーション

クライアント/サーバーモデルの2つのプロセスは、さまざまな方法で対話できます。

  • ソケット
  • リモートプロシージャコール(RPC)

ソケット

このパラダイムでは、サーバーとして機能するプロセスは、既知の(またはクライアントが知っている)ポートを使用してソケットを開き、クライアント要求が来るまで待機します。 クライアントとして機能する2番目のプロセスもソケットを開きますが、クライアントは着信リクエストを待つ代わりに「リクエストを最初に」処理します。

image

サーバーにリクエストが届くと、リクエストが処理されます。 情報共有またはリソース要求のいずれかです。

リモートプロシージャコール

これは、1つのプロセスがプロシージャ呼び出しによって別のプロセスと対話するメカニズムです。 1つのプロセス(クライアント)がリモートホストにあるプロシージャを呼び出します。 リモートホスト上のプロセスは、サーバーと呼ばれます。 両方のプロセスにスタブが割り当てられます。 この通信は次の方法で行われます。

  • クライアントプロセスは、クライアントスタブを呼び出します。 ローカルプログラムに関連するすべてのパラメーターを渡します。
  • 次に、すべてのパラメーターがパック(マーシャリング)され、ネットワークの反対側に送信するシステムコールが行われます。
  • カーネルはネットワークを介してデータを送信し、もう一方の端はそれを受信します。
  • リモートホストは、データを非整列化されたサーバースタブに渡します。
  • パラメータがプロシージャに渡され、プロシージャが実行されます。
  • 結果は同じ方法でクライアントに送り返されます。