文中の説明画像をクリックすると拡大します。
サーバーとクライアントって一体何なの?
「サーバー」と「クライアント」という2つの言葉を聞いたことがある人は、いることでしょう。しかし、正しい意味を理解している人は少ないかもしれません。
サーバーとは「サービスを提供するもの」であり、クライアントとは「サービスを受けるもの」です。
お店に例えると、わかりやすいかもしれません。例えばレストランに行って、好きなメニューを注文するとしましょう。この時、メニューを注文するお客さんが「クライアント」であり、料理を出す側が「サーバー」と言うことができます。
サーバーが提供するサービスには様々なものがあり、一般的に私たちは、クライアントとしてサーバーが提供するサービスを受けています。
サーバーとクライアントの処理の流れ
先ほどの例でいうと、クライアントは、サーバーに対して「メニューを注文」することでサービスの提供を受けることができます。
この「メニューを注文」することは、ITの世界では「リクエストする」と言います。
リクエストを受け取ったサーバーは、リクエストを分析・処理します。この「分析・処理」の工程は、注文があった「料理を作る」工程です。
そして、サーバーはクライアントに対して「料理を出します」。
この「料理を出す」ことを、ITの世界では「レスポンス」と言います。
ここまでの工程をまとめると、以下のようになります。
- 【クライアント】リクエストを送る(料理を注文する)
- 【サーバー】リクエストの分析と処理をする(料理を作る)
- 【サーバー】レスポンスを送信する(料理をお客さんに提供する)
- 【クライアント】レスポンスを受信する(出来上がった料理を受け取る)
この流れが、サーバーとクライアントの処理の流れです。
クライアントって具体的には何?
クライアントにはどのようなものが該当するのか、具体的に見ていきます。
Windowsはクライアントか?
Windowsは、通常クライアントとして動作します。
皆さんがインターネットを見るときに使う「ブラウザ」や、電子メールをやり取りする「メールソフト」はクライアントの代表例です。「サービスを受けるもの」です。
それぞれのクライアントに対するサーバーは、例えば以下のようなものです。
- クライアントであるWindowsのサーバー→DNSサーバー(後述)
- クライアントであるブラウザのサーバー→WWWサーバー
- クライアントであるメールソフトのサーバー→POPサーバーやSMTPサーバー(後述)
しかし、Windowsをサーバーとして動作させることも可能です。
サーバーとは「サービスを提供するもの」の事でした。つまりWindows上でもサービスを提供する専門のソフトウェアが動作している場合は、Windowsをサーバーとして使うことができます。
例えば、Windowsで動作する「xampp」というソフトウェアがあります。これはインストールしたパソコンにWebサイトを公開するためのサーバーのソフトウェアや、データベースとして動作するサーバーのソフトウェアなどを導入するものです。
Windowsにこのようなサーバーのソフトウェアをインストールすることで、Webサービスやアプリケーションの開発に必要な環境を導入できるのです。
Macはクライアントか?
Macも、Windowsと同様に、一般的にはクライアントとして動作しますが、専用のソフトウェアを導入することで、サーバーとしても動作します。
Macには、Windowsで動作する「xampp」と似たソフトである「mamp」というサーバーソフトウェアがあります。
mampはxamppと同じく、Webサイトを公開するためのサーバーのソフトウェアや、データベースとして動作するサーバーのソフトウェアを導入できるソフトウェアです。
Macは、Webサービスやアプリケーション開発と相性が良く、多くの開発者がMacを好んで使っています。
スマートフォンはクライアントか?
iPhoneやAndroidのようなスマートフォンは、Webサイトの閲覧やメールの送受信、そしてSNSアプリの動作環境など、クライアントとして使うことがほとんどです。
一部のスマートフォンアプリには、スマートフォンをサーバーと動作させるものもあるようですが、このようなアプリケーションを使う場面は、ほとんどありません。
タブレットはクライアントか?
iPadのようなタブレットも、スマートフォンと同じく、クライアントとしてのみ動作させることが一般的です。
サーバーって具体的には何?
次は、サーバーについて見ていきましょう。
インターネットで利用できるサービスとして、Webサイトの公開や、メールの送受信などがあります。
サーバーはこれらのサービスごとに、専用のソフトウェアを動作させて、サービスを提供しています。
役割別に、どのようなサーバーがあるのか紹介します。
Webサーバー
Webサーバーは、Webサイトをインターネット上に公開するために動いているサーバーです。
代表的なものは、Apache(アパッチ)というソフトウェアです。
そして、最近注目を集めているのが、Nginx(エンジンエックス)です。どちらもオープソースで公開されており、無料で使えます。
メールサーバー
パソコンやスマートフォンで使っている電子メールについても、専用のサーバーソフトウェアがあります。
代表的なものは、sendmailやqmailです。
電子メールは、「送信」と「受信」で異なるサーバーを使うことが一般的です。「送信」に使われるサーバーはSMTPサーバー、「受信」に使われるサーバーはPOPサーバー、あるいはIMAPサーバーが使われます。
データベースサーバー
データベースサーバーは、WordPressのようなCMS(コンテンツマネジメントシステム)などで使われることで有名になりました。
代表的なものは、MySQLやPostgreSQLなどです。
商用のデータベースサーバーとしては、Oracle Database(オラクルデータベース)もあります。
DNSサーバー
DNSとは、聞きなれない言葉かもしれません。
Domain Name Systemの略語であり、インターネットを利用する時にはなくてはならないサーバーの一つです。代表的なものはBINDです。
DNSの役割を詳しく説明すると、膨大な量のコンテンツになってしまうので、ここでは簡単に1つの主要な機能について説明します。
それは「IPアドレスとホスト名の相互変換(名前解決)」です。
例えば、Yahoo! JapanのWebサイトのURLは「https://www.yahoo.co.jp/」ですが、この「www.yahoo.co.jp」の部分が広い意味でドメインとよばれています。
しかし本来、インターネット上のコンピュターは、ドメインではなくIPアドレスで管理されています。ドメインとIPアドレスの対応関係を管理するのが、DNSサーバーの主要な機能です。
ドメインからIPアドレスを求めることを「正引き」、IPアドレスからドメインを求めることを「逆引き」と言います。
「正引き」や「逆引き」は、以下で紹介するサイトで簡単にできます。
そもそもドメインって何だっけ?という方はこちらをご覧ください。
サーバーとドメインの関係って、どうなっているんだっけ?という方はこちらをご覧ください。
まとめ
- サーバーはサービスを提供するものであり、クライアントをサービスの提供を受けるもの。
- クライアントとサーバーは、「リクエスト」と「レスポンス」をやり取りしている。
- WindowsやMacは、クライアントとしてもサーバーとしても動作できる。
- サーバーは、提供するサービスの種類によって様々なものがある。