クライアントサーバーシステムとは?ブラウザーとサーバーが役割を分けて動く仕組み

ブラウザーと、サーバーの、役割分担。寅次郎先生と記事の内容を表すイラスト。
確認日:2026年10月22日

Webサイトを開くとき、手元のブラウザーとインターネットの向こうにあるサーバーは、役割を分けてやりとりしています。この形の名前が、クライアントサーバーシステムです。

本記事では、頼む側と応える側の役割や、サーバーの中でプログラムが動く仕組みを解説します。サーバーの脆弱性がなぜ多くのサイトに影響するのかも、この仕組みを知れば見えてくるはずです。

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

クライアントサーバーシステムは、処理を頼む「クライアント」と、頼まれた処理を引き受ける「サーバー」に役割を分けて動く仕組みです。

クライアントがサーバーにリクエストを送り、サーバーがレスポンスを返す図。クライアントは画面の表示と操作の受け付け、サーバーはデータと処理を受け持つ

Webでいえば、ブラウザーやスマートフォンのアプリがクライアントです。利用者の操作を受け付けてサーバーに頼みごとを送り、返ってきた結果を画面に表示します。

サーバーの役目は、記事や会員の情報などのデータを持ち、頼まれた処理を引き受けることです。データを1か所にまとめておけるため、誰がどの端末から開いても、同じ記事や自分のアカウントの情報を見られます。

クライアントとサーバーは、機械の種類ではなく、そのやりとりで果たす「役割」の名前です。同じプログラムでも、ある接続ではサーバーとして応え、別の接続ではクライアントとしてほかのサーバーに頼むことがあります。たとえば、ブラウザーから頼まれたWebサーバーが、データベースのサーバーに問い合わせる場合です。

リクエストとレスポンス

クライアントからサーバーへの頼みごとを「リクエスト」、サーバーからの返事を「レスポンス」と呼び、Webではこのやりとりの決まりをHTTPが定めています。

ブラウザーがサーバーにページを求めるリクエストを送り、サーバーがページを用意して、状態コード200とHTMLをレスポンスとして返し、ブラウザーがそれを表示する流れの図

リクエストには、どのページが欲しいかを示すURLと、何をしたいかを示すメソッドが入ります。ページを見るときは GET、フォームの入力を送るときは POST を使うのが一般的です。

レスポンスの先頭には、結果を表す3けたの状態コードが付きます。ページを返せたときは 200、ページが見つからないときは 404、一時的な過負荷や保守で応えられないときは 503 です。サイトのメンテナンス中に表示される画面の多くは、この 503 と一緒に返されています。

やりとりを始めるのは、常にクライアントの側です。サーバーは、届いたリクエストに応えるだけで、自分から話しかけることはしません。

もう1つ大事なのは、HTTPのリクエストが1回ずつ独立していることです。同じサーバーに続けてリクエストを送っても、HTTPの決まりの上では前のリクエストとのつながりはありません。ログインしたままの状態を保つには、Cookieという小さなデータをリクエストのたびに一緒に送る方法が使われます。

クライアントとサーバーで動くプログラム

Webでは、クライアントとサーバーの両方でプログラムが動いています。ブラウザーの中で動くプログラムの言語がクライアントサイド言語、サーバーの中で動くプログラムの言語がサーバーサイド言語です。

書いたプログラムと、それを実行するプログラム

書いたプログラムが、何によって実行されるのかを、両方の側について図に描きました。

利用者のパソコンでは、実行するプログラムであるブラウザーが、サーバーから届いたJavaScriptのファイルを読み込んで実行する。サーバーの機械では、PHP本体などの実行するプログラムが、書いたプログラムを読み込んで実行する

どちらの側でも、書いたプログラムのファイルだけでは動きません。それを読み込んで実行するプログラムと組になって、はじめて動きます。2つの側で違うのは、プログラムがどこで動き、ブラウザーに何が届くかです。

クライアントの中で動くプログラム

クライアントの側では、ブラウザーがプログラムを実行します。Webで使われる言語は、主にJavaScriptです。

ブラウザーのタブの中で、JavaScriptが表示しているページのメニューを開け閉めし、入力欄の形式を確かめる。JavaScriptからパソコンのファイルへは、直接は触れられないことを示す図

ページを開くと、サーバーからHTMLやCSSと一緒にJavaScriptのファイルが届き、ブラウザーがそれを実行します。メニューの開け閉めや、入力した内容の形式をその場で確かめる処理のように、届いたページの見た目と動きをよくするのが主な役目です。

プログラムのファイルが利用者のパソコンに届くので、利用者はその中身を見られます。一方で、ブラウザーの中のプログラムは、パソコンのファイルなどにはほとんど触れられません。

詳しくはクライアントサイド言語とは?で解説しています。

サーバーの中で動くプログラム

サーバーの側では、言語を実行するプログラムをサーバーの機械にインストールしておき、それが書いたプログラムを実行します。使う言語はPHP、Python、Ruby、C#などから選べるのが特徴です。たとえばPHPなら、PHP本体と呼ばれるプログラムが .php のファイルを読み込んで実行します。

サーバーがレスポンスを用意する方法は、置いてあるファイルをそのまま返す方法と、プログラムを動かしてその場で中身を作る方法の2つです。前者で作るページを静的なページ、後者を動的なページと呼びます。どちらの場合も、リクエストを受け付けるのは、サーバーの機械の中で動く「Webサーバー」というソフトです。

静的なページと動的なページを上下に並べた図。静的なページでは、Webサーバーが同じ機械に置いたHTMLファイルを読み出して返す。動的なページでは、Webサーバーに頼まれた実行するプログラムが、書いたプログラムを実行してHTMLを作る

静的なページでは、あらかじめ作ったHTMLファイルをサーバーの機械の中に置いておき、Webサーバーがそれを読み出して返すだけです。誰がいつ開いても、届く中身は変わりません。

動的なページの場合、Webサーバーから処理を任された実行するプログラムが、書かれた手順に沿ってデータベースに問い合わせ、HTMLを組み立てる仕組みです。ブログの新着一覧や、ログインした人ごとに違う画面は、この方法で作られています。

ブラウザーへ届くのは作られたHTMLだけで、元のプログラムは利用者から見えません。どの記事を見せるか、誰に見せてよいかを決めるのも、サーバーの側の役目です。

詳しくはサーバーサイド言語とは?で解説しています。PHPを例にした、言語、プログラムのファイル、PHP本体の関係も、この記事で扱いました。

1つのサーバーが大勢のクライアントを受け持つ

1つのサーバーには、大勢のクライアントから次々にリクエストが届き、サーバーはそれぞれに順に応えてレスポンスを返します。

パソコンのブラウザー、スマートフォンのアプリ、攻撃者のプログラムの3つが、同じ1つのサーバーにそれぞれリクエストを送り、サーバーがそれぞれにレスポンスを返す図

PHPの場合、リクエストのたびに起動し直すのではなく、動き続けている1つのPHP本体が何件ものリクエストを順番に受け持ちます。前のリクエストの処理で使ったメモリを片付けてから、次のリクエストに取りかかる流れです。

「サーバー」という言葉は、機械を指すことも、その中で動くソフトを指すこともあります。サーバーの役割を受け持つのは、1台の機械とは限りません。利用者が多いサービスでは、同じ役割のサーバーを何台も並べてリクエストを振り分けます。反対に、1台の機械の上でWebサーバーとデータベースのサーバーを一緒に動かす例も珍しくありません。

安全面の注意

インターネットに公開したサーバーには、誰でもリクエストを送れます。図のように、普通の利用者のブラウザーと攻撃者のプログラムは、サーバーから見れば同じリクエストの送り手です。

そのため、サーバー側のプログラムは、届いたリクエストの中身を信用せずに扱わなければなりません。ブラウザーの画面で入力の形式を確かめていても、攻撃者は画面を通さずに、好きな中身のリクエストを直接送れるからです。

サーバーで動くソフトウェアに脆弱性が見つかると、そのソフトウェアを使っているサーバーはすべて、外部からのリクエストで攻撃を受けるおそれがあります。データを1か所に集められる点は利点ですが、サーバーを乗っ取られると、多くの利用者のデータが一度に危うくなりかねません。

サーバーのソフトウェアを更新できるのは、サーバーの管理者だけです。利用者がブラウザーやアプリを最新にしても、サーバー側の不具合は直せません。

製品での使われ方

WebサイトやWebメール、スマートフォンのアプリ、オンラインゲームの多くは、クライアントサーバーシステムで動いています。WordPressもPHPのスクリプトの集まりで、WordPressで作ったブログは、サーバーの上のPHP本体がそれを実行してページを組み立てる動的なサイトです。

サーバーの管理を誰が受け持つかは、サーバーの借り方で変わります。レンタルサーバーではサーバー会社がPHP本体などのソフトウェアを更新し、VPSやクラウドの仮想サーバーでは借りた人が自分で更新しなければなりません。2026年10月に公表されたPHP本体の脆弱性では、この違いによって、サイトの運営者がやることが分かれました。詳しくはPHP2Shellとは?PHPの重大な脆弱性とサイト運営者がやることで解説しています。

ブラウザーがサーバーを見つける仕組みはドメイン名とは?、アプリどうしがサーバーの機能を使う窓口はAPIとは?が参考になるでしょう。

参考にした一次情報

本記事は、次の資料をもとに書きました。RFCは、インターネットの技術の決まりを定めた公開文書で、RFC 9110はWebのやりとりの決まり(HTTP)を定めたものです。MDN Web Docsは、ブラウザーのFirefoxを作っているMozillaが公開している、Webの技術の解説資料にあたります。

当サイトが作成した本文はCC BY 4.0です。引用画像は対象外です。Webのしくみの記事の一覧へもどる