すでにメンバーの場合は

無料会員登録

GitHubアカウントで登録 Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

登録がまだの方はこちらから

Pikawakaにログイン

GitHubアカウントでログイン Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

IT用語

【IT用語】 クライアント/サーバーシステムとは?Webサービスの基本!

ぴっかちゃん
ぴっかちゃん

クライアント/サーバーシステムとは、「クライアント」(例:私たちが使うPC)が「サーバー」にリクエストを送り、サーバーはそれに応じた処理を返す(例:HTMLファイルの送信)、という分業関係を持つネットワークシステムのことです。

クライアントサーバーシステム

サーバーとは、要求に応えて処理を行い、結果を返すコンピューターを指します。
クライアントとは、サーバーに要求を出すアプリケーション、およびそのコンピューターのことを指します。

ブラウザでwebサイトを開くとき何が起こっているのか

あなたが今何気なく使っているブラウザは、なぜ検索結果をクリックするだけでそのwebサイトが表示できているのでしょう。
そのwebサイトは一体どこから出てきたのでしょう。

実は、ここでクライアント/サーバーシステムが用いられています。
このシステムは、webサービスを作る上での基盤となっている非常に重要な技術です。

具体的には、ブラウザは次のような手順を踏んでwebサイトを表示しています。

  1. 検索結果を表示
  2. サーバーにアクセス
  3. HTML、CSSファイルを取得
  4. 元のコンピューターに戻る
  5. ブラウザ上で表示

これから、ブラウザを例に挙げてこれらの手順を一つずつ説明し、クライアント/サーバーシステムについて理解を深めていこうと思います。

1. 検索結果を表示

私たちが検索を行うと、検索結果としてたくさんのサイトのURLが表示されます。
このURLは、IPアドレスと呼ばれるweb上の住所を置き換えたものであり、webサイトのファイル(HTMLなど)が実際に置かれているサーバーがどこにあるかを示しています。

検索結果

この画面でURLをクリックすると、ブラウザはそのIPアドレスが割り当てられているサーバーに向かいます。
ここでいうブラウザが、クライアントとなります。

2. サーバーにアクセス

ブラウザはサーバーに向かう長い旅路に出ます。

まず今接続しているルーターに向かい、そこから多くのルーターを辿ってその地域を管轄している一番大きなルーターに向かいます。
例えば自分の部屋のルーターからマンションのルーターを通って市のルーター、県のルーターといった風に、木の枝から幹に向かうようにどんどん大きなルーターを目指します。

その後はさらに大きな国全体のネットワークを集約するルーターに行き、それと同等のものを経由し最終的に目的地のサーバーに到達するのです。

サーバーへのアクセス

3. HTML、CSSファイルを取得

目的のサーバーにたどり着いたブラウザは、サーバーに対して必要なファイルを要求します。サーバーはその要求にしたがってHTMLファイルとCSSファイルを受け渡し、ブラウザを元いたコンピューターに送り返します。

要求と応答

4. 元のコンピューターに戻る

ブラウザは、サーバーに来る際に通った道を全て覚えています。
サーバーを出発し帰路についたブラウザは、来た時と全く同じ道を辿って元のコンピューターに戻り、ファイルを届けます。

クライアントに戻る

5. ブラウザ上で表示

要求したファイルを持ち帰ったブラウザは、自分のコンピューター上でHTMLとCSSから実際にwebサイトの見た目を作り上げ、表示します。

webサイトの表示

以上がクライアント(ブラウザ)がサーバーにサービス(ファイルの受け渡し)を要求、サーバーがサービスを提供するという一連の流れとなります。

クライアント/サーバーシステムについて詳しく

上の具体例を見てシステムのイメージを掴むことができたと思います。
これから、そもそもクライアント/サーバーシステムとは何かについて詳しく説明していきます。

システムの概要

クライアント/サーバーシステムは、サービスを要求するクライアントと、要求に応えてサービスを提供するサーバーから成るネットワークシステムです。
一つのサーバーに対して多くのクライアントが存在する一対多の関係を持っているのが特徴です。

私たちが普段何気なく行っているネット検索、ブラウザを使ってwebサイトを開く時にもこのシステムが使われており、非常に身近なシステムであるといえます。

サーバーとは

サーバーは給仕人の名の通り、クライアントからのリクエストを受け取った際にサーバー側でその要求の通りの処理を行い、結果をクライアントに返します。

クライアントに求められる処理によって、サーバーは様々な種類に分類されます。
上で例にあげたような、ブラウザにHTMLファイルやその関連ファイルを提供するwebサーバー
以外にも、データベースを管理するデータベースサーバー、メールを転送するメールサーバーなどが存在します。

3層クライアント/サーバーシステム

最近は、サーバーを「データの処理」を担当するファンクション層と、「データへのアクセス」を担当するデータベース層の二つに分けた構成が主流です。これを、クライアントのプレゼンテーション層と合わせて3層構造としていることから、3層クライアント/サーバーシステムと呼びます。

3層クライアント/サーバーシステム 階層間の依存が少なく、修正が容易といったメリットがあります。

クライアントとは

クライアントはwebブラウザのような、サーバーに対して要求を出しサービスを受け取る、client(依頼人)となるアプリケーションソフトのことです。
また、そのようなソフトを実行するコンピューターのこともクライアントと呼ぶ場合もあります。

対照的なP2Pシステム

サーバー/クライアントシステムの対極にあるとされているのが、P2P(Peer to Peer)システムです。 P2Pはサーバーやクライアントといった役割分担がなく、ネットワークの全てが対等な関係にあります。 一つのコンピューターがサーバーにもクライアントにもなるシステムであるといえます。

本記事では、クライアント/サーバーシステムのイメージがつくように噛み砕いて説明してきました。
技術的な部分についてはあまり触れていませんが、もし今後クライアント/サーバーシステムに携わるのであれば、下記のような書籍で知識をつけておくことをおすすめします。

webを支える技術
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webサービスの実践的な設計について、包括的に解説されています。

この記事のまとめ

  • クライアントとサーバーで役割分担がされているネットワークシステム
  • webサーバー、データベースサーバーなど様々な種類のサーバーが存在する
  • クライアント/サーバーシステムの対極にP2Pシステムがある