クライアント-サーバー モデル (クライアント-サーバー アーキテクチャ)
クライアント-サーバーとは、あるプログラム(クライアント)が他のプログラム(サーバー)にサービスやリソースを要求する関係のことです。 前世紀初頭、パーソナルコンピュータ(PC)による分散型コンピューティングと、メインフレームによるモノリシックな集中型コンピューティングを区別するために、クライアント-サーバーという名称が使われていました。
現在では、クライアントからの要求をサーバーが満たすというコンピュータ・トランザクションは非常に一般的であり、クライアント・サーバー・モデルはネットワーク・コンピューティングの中心的な考え方の一つとなっています。 この場合、クライアントはインターネットなどのローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)を介してサーバーとの接続を確立します。 サーバーがクライアントの要求を満たすと、接続は終了する。
インターネットの黎明期には、ネットワークトラフィックの大半は、ウェブコンテンツを要求するリモートクライアントと、コンテンツを提供するデータセンターのサーバーとの間のものでした。 このようなトラフィックパターンは、南北方向のトラフィックと呼ばれています。 しかし、仮想化やクラウドコンピューティングが発達した今日では、ネットワークトラフィックはサーバー間のものが多くなり、このパターンは東西方向のトラフィックと呼ばれています。
クライアント サーバー モデルの長所と短所
クライアント-サーバーモデルの重要な長所は、その集中型アーキテクチャにより、セキュリティポリシーによって強制されるアクセス制御でデータを保護することが容易になることです。
クライアント-サーバーモデルの重要な欠点は、あまりにも多くのクライアントが同時にサーバーにデータを要求すると、サーバーが過負荷になる可能性があることです。
クライアント サーバー プロトコル
クライアントは通常、TCP/IPプロトコルスイートを使用してサーバーと通信します。 TCPは接続指向のプロトコルで、接続が確立され、両端のアプリケーションプログラムがメッセージの交換を終えるまで維持されることを意味しています。 TCP/IPは、アプリケーションデータをネットワークが配信可能なパケットに分割する方法を決定し、ネットワーク層へのパケットの送信とネットワーク層からのパケットの受信を行い、フロー制御を管理し、ドロップしたパケットや文字化けしたパケットの再送や、到着したすべてのパケットの確認を行います。
これに対し、IPはコネクションレス型のプロトコルで、通信しているエンドポイントの間に継続的な接続がないことを意味します。
これに対して、IPはコネクションレス・プロトコルであり、通信している端末間の継続的な接続はありません。
その他のプログラム関係モデル
その他のプログラム関係モデルには、マスター/スレーブモデルとピア・ツー・ピア(P2P)モデルがあります。 P2Pモデルでは、ネットワーク内の各ノードがサーバーとクライアントの両方の役割を果たすことができます。 マスター/スレーブモデルでは、マスターと呼ばれるデバイスやプロセスが、スレーブと呼ばれる1つまたは複数のデバイスやプロセスを制御します。 マスター/スレーブの関係が確立されると、制御の方向は常にマスターからスレーブへの一方通行となります
。