多種多様なWebコンテンツをやりとりするためのプロトコルがHTTPである。やりとりはシンプルながらも、豊富なメッセージヘッダを用いて、さまざまな通信制御が実現されている。また、SSLやCookieを使うと、より高度な個人情報管理もできるのだ
今も変わらず使われるHTTP
Webでは、WebブラウザがWebサーバにリクエストを出して、Webサーバがそのリクエストに応じたコンテンツを返すというやりとりで成立している。これを実現しているプロトコルが、HTTPである。
ここまで見てきた通り、WebではWebブラウザやWebサーバも着実に進化している。また、やりとりするコンテンツに至っては静的なHTMLから、拡張性の高いXMLやスクリプト、さらに動的なアプレットやRIAといったコンテンツへ大きく移り変わった。しかし、プロトコルに関してはずっとHTTP 1.1を使い続けている。もちろん、HTTPに弱点がないわけではないが、シンプルであること、そして拡張性が高いことから、昔も今もプロトコルはHTTPのままなのだ。
以下、ファイルを取得するまでの流れを見てみよう(図1)。
- Webブラウザで「アドレス」欄にURLを指定したり、リンクをクリックする
- 「http://ascii.jp/nmag/」など指定されたURLの名前解決をDNSによって行ない、宛先のIPアドレスを得る
- TCPで宛先のWebサーバに対して、コネクションを確立する。次にHTTPを用いて、Webサーバに対してHTMLファイルを要求する。通常は、HTTPのウェルノウンポートである80番を指定し、接続を要求する
- HTTPで接続が可能になったら、サーバ側はURLで指定されたHTMLファイルなどのリソースを取得し、クライアントに返信する。実際はアプリケーションにデータを引き渡したり、データベースに検索をかけるといった処理を行なう場合もある
ここまでがおおまかにWebページを表示するリクエストである。具体的なリクエストのメッセージは、図2のようなものである。
まずリクエストメッセージは大きく、Webサーバに対する要求を伝える「リクエスト行」と、リクエスト内容の補足となる制御情報を記述した「メッセージヘッダ」に分けられる。
リクエスト行はサーバに対するコマンドとなる「メソッド」、引数となる「リクエストURI」、そして使用するHTTPのバージョンの大きく3つで構成される。
メソッドには、GET、HEAD、POSTなどいくつかの種類があるが、URLで示されたファイルの取得という通常の用途ではGETメソッドが用いられる。
次のリクエストURIには、取得したいURLからプロトコルとホスト名を取り去ったファイルのパスを表記する。たとえば、「http://ascii.jp/index.html/」であれば、「/index.html」になる。
本来、HTTPのメッセージとしてはここまでのリクエスト行のみでよいのだが、昨今は後述するようなさまざまなコンテンツや通信制御のため、メッセージヘッダの情報が重要である。このメッセージヘッダの制御情報の種類は、リクエストとレスポンスで共通のものとしてWebページのキャッシュ制御(Cache-Control)やメッセージ送信の符号化方式(Transfer-Encoding)などがある。また、Webブラウザ側からサーバに送られるリクエスト用のヘッダフィールドとして、送信元(From)や宛先(Host)、Webブラウザ側で受け入れ可能なデータ形式や言語(Accept-*)などがある。さらに、特定の条件を満たした際に利用する条件付きGETメソッドといったフィールドもあり、かなり細かい通信制御が可能になっている。
こうしたメッセージヘッダはWebアクセス解析でも重要な役割を果たしている。たとえば、メッセージヘッダのWebブラウザの種類(User-Agent)や直前に居たWebサイトのURL(Referrer)といったフィールドは、ユーザー層やインターネットの広告の効果を知るためには不可欠な情報である。
ヘッダのあとは当然メッセージボディが来ることになるが、リクエストなので、GETメソッドを利用する場合は空になる。一方、PUTメソッドを利用する場合は、ユーザーが入力した内容などをメッセージボディとして載せることが可能だ。そのため、PUTはWebのアンケートなどで回答を送信するといった用途で利用される。
(次ページ、「リソースを送り届けるサーバからのレスポンス」に続く)

この連載の記事
-
第8回
ネットワーク
どうして携帯電話でインターネットできるの? -
第7回
ネットワーク
Webにまつわる危険をきちんと知っていますか? -
第5回
ネットワーク
高度なWebアプリケーションを実現するRIAの仕組み -
第4回
ネットワーク
HTMLからXMLへ!Webを彩るコンテンツを知ろう -
第3回
ネットワーク
今さら聞けないWebサーバの役割と機能 -
第2回
ネットワーク
サーバを指定するURLの仕組み -
第1回
ネットワーク
Webブラウザから拡がる楽しい世界 -
ネットワーク
WWW完全制覇 - この連載の一覧へ