インターネットを利用していると「HTTP」という言葉を目にすることがあると思いますが、何のことかご存知でしょうか?
HTTPとは「Hyper Text Transfer Protocol」の略で、その名の通り「ハイパーテキスト(HTMLファイル)を転送するためのプロトコル」のことです。
プロトコルって?
プロトコルとは、コンピュータ同士が通信を行うためにお互いに約束している取り決めのことです。
この説明だとピンと来ないかもしれないので、簡単な例えで説明してみましょう。
大昔には、遠く離れた人に情報を伝えるために「狼煙」という手段が用いられました。狼煙を使って情報を伝えるとはどういうことでしょうか。例えば、狼煙に関して以下のような取り決めがあったと仮定します。
- 狼煙(煙)を使って合図を伝えますよ
- 狼煙は「敵の襲来」を意味しますよ
もし 自分の村と他の村でこの取り決めがしっかり共有されていれば、狼煙によって「敵の襲来」という情報を伝えることが出来ます。
しかし、このような取り決めがなかったとしたら、どうなるでしょう。
- 煙を見ても何かの合図であるとは思わない
- ましてや「敵の襲来」だとは想像もつかない
という事態になりますよね。
このように、相手と情報のやりとりをするためには、お互いに前もって情報の伝え方について取り決めをしておくことが必要なのです。これがプロトコルです。
WebサーバとWebクライアント
HTTPはハイパーテキストを送受信するためのプロトコルだということは分かりました。では、誰と誰がHTTPを使ってハイパーテキストのやり取りをするのでしょうか?
それは、WebサーバとWebクライアントという二つのソフトウェアです。
サーバとクライアントという言葉も、よく聞くわりに意味が分かりにくい言葉なので、ちょっと整理しておきましょう。
まず、WebサーバやWebクライアントというのは、コンピュータ上で動作するソフトウェアの名前です。(Webサーバが動作しているコンピュータのことを指して「Webサーバ」と呼んだりもするので紛らわしいですが、本来はソフトウェアを指す言葉です。)
Webクライアントは、いわゆるWebブラウザのことです。Internet ExplorerやFirefox、Chromeなどが有名です。
Webサーバについてはあまり馴染みは無いかもしれませんが、Apache HTTP Serverという無料のWebサーバソフトが最も有名で広く使われています。
ところで、そもそもの言葉の意味として、「クライアント」とは「依頼人」、「サーバ」とは「給仕人」のことです。WebクライアントとWebサーバの関係も言葉の意味どおりで、
WebサーバがHTMLファイルを保持していて、WebクライアントはHTMLファイルを見たい場合はWebサーバに対してそれを要求する。Webサーバは要求があればWebクライアントに対してそれを提供する。
という関係にあります。このようにWebサーバとWebクライアントがインターネットの通信網を通して相互に繋がり、HTTPの取り決めに従ってハイパーテキスト(HTMLファイル)をやり取りしているというのがWebの正体なのです。
リクエストとレスポンス
WebクライアントはWebサーバに対して欲しい情報を「要求」すると説明しましたが、この要求のことを専門用語で「リクエスト」または「HTTPリクエスト」と呼びます。また、Webクライアントからのリクエストに対してWebサーバが返す応答のことを「レスポンス」または「HTTPレスポンス」と呼びます。
Webクライアントからのリクエストには、欲しいHTMLファイルのURLなどが含まれており、これによりWebサーバに対して特定のHTMLファイルを要求します。
Webサーバからのレスポンスには、要求されたHTMLファイルのソースコードなどが含まれています。(これをWebブラウザが解読して画面にWebページが表示されます。)
HTTPステータス・コード
また、Webサーバからのレスポンスには、「HTTPステータス・コード」という情報も含まれています。これは、レスポンスの種類を表す3桁の数字ですが、皆さんも「404 Not Found」や「500 Internal Server Error」など見覚えがあるのではないでしょうか。
このステータス・コード、100の位の数字がカテゴリを表しており、ここを見れば意味の大枠が分かるようになっています。
ステータス・コード | 意味 | 説明 |
---|---|---|
1xx | Informational(情報) | リクエストの処理が継続していることを表す |
2xx | Success(成功) | リクエストが成功したことを表す |
3xx | Redirection(リダイレクション) | リクエストを完了させるには、さらに動作が必要であることを表す |
4xx | Client Error(クライアント・エラー) | クライアント側に起因するエラーのため、リクエストが失敗したことを表す |
5xx | Server Error(サーバ・エラー) | サーバ側に起因するエラーのため、リクエストが失敗したことを表す |
1xx系、2xx系、3xx系については、普通にWebを利用している分には目にする機会はありませんので、特に覚えておく必要はありません。
4xx系と5xx系はエラー時にブラウザの画面に表示されるので、見覚えのある人も多いと思います。これも細かく覚えておく必要はありませんが、
- 4xxなら自分側が悪い (404→URLの打ち間違い、403→アクセス権限のないページを見ようとしている、など)
- 5xxならWebサーバ側が悪い (500→CGIプログラムなど、Webサーバ内部でのプログラムの実行エラー、503→Webサーバが過負荷やメンテナンスのためにダウンしている、など)
ぐらいは覚えておくと、いざというときに役立つかもしれません。