ApacheとWebブラウザ間でデータをやり取りするために利用するプロトコル「HTTP」について説明します。

 前回までは主に,Apacheの各種機能を使うための設定方法を紹介してきました。さらに深くWebサーバーをカスタマイズするとなると,WebサーバーとWebブラウザの間でデータをやり取りする仕組みについても理解しておく必要があります。

 そこで第8回は,Webで利用されているプロトコル「HTTP」そのものと,HTTPを利用した通信の仕組みを説明します。

 第1回では,WebブラウザとWebサーバーは「HTTP(Hyper Text Transfer Protocol)」と呼ばれるプロトコルを利用して通信することを説明しました。プロトコルはいわば言葉のようなものです。文法に沿って言葉がやり取りされるように,HTTPにおいても特定のルールに則ってサーバーとクライアントが通信します。例えば,「index.htmlのファイルを欲しい」,「送るファイルは画像形式です」などといったやり取りを行います(図1)。

図1●WebブラウザとWebサーバー間でやり取りのルールとなる「HTTP」
図1●WebブラウザとWebサーバー間でやり取りのルールとなる「HTTP」
WebブラウザとWebサーバー間のメッセージのやり取りは,HTTPと呼ぶプロトコルで決めたルールに則る。

 HTTPは数少ない命令で構成されており,非常にシンプルです。複雑な処理が必要ないため,通信効率が上がるなどの利点があります。

 1990年にCERN(欧州合同素粒子原子核研究機構)が世界初となるWebサーバーおよびWebブラウザを公開しました。このWebサーバーとWebブラウザでのやり取りに使われたプロトコルがHTTPの基礎となっています。しかし,当時はHTTPの仕様が厳密には決まっていませんでした。HTTPの仕様が厳密に決まったのは1996年のバージョン1.0からです。その後1999年に,HTTP1.0の機能を拡張したHTTP1.1(RFC2616)が公開されました。

Webブラウザからのリクエスト

図2●リクエスト・メッセージの構造
図2●リクエスト・メッセージの構造
リクエストを行う際は,図のような構造に則ってメッセージを作成する。

 最初に,Webブラウザからサーバーに,コンテンツをリクエスト(要求)する場合を見ていきましょう。コンテンツをリクエストするときは,図2のような構造のメッセージを送信します。

 メッセージの最初の行に記述する「リクエスト・ライン」は次のような形式です。

メソッド URI プロトコル

 「メソッド」には,Webサーバーに対してどのような処理を要求するかを指定します。表1のようなメソッドが利用できます。例えば,HTMLファイルなどを取得したい場合は「GET」,データを送信する場合は「POST」を指定します。

表1●HTTPで利用できる主なメソッド
HTTP/1.0およびHTTP/1.1に利用できるメソッドは異なる。
表1●HTTPで利用できる主なメソッド