WWW は World Wide Web の略で、世界的な規模で張り巡らされたクモの巣のようなネットワーク上に存在するテキスト、画像、音声、動画といったさまざまな形式の情報を参照することができるシステムのことです。
このシステムは HTML(HyperText Markup Language) と呼ばれる情報表示用のフォーマットと、その情報の置き場所を示す URL(Uniform Resource Locator)、そして、その情報をやり取りするための手段である HTTP(HyperText Transfer Protocol) などの仕組みにより実現されています。
パソコン上のホームページ閲覧用ソフト=ブラウザで、URLを指定することで目的のサーバにたどり着き、HTTPプロトコルを使ってパソコンに表示させるためのデータをやり取りします。
パソコン上で動くブラウザにはInternet ExplorerやSafariなどのいくつかの種類がありますが、HTTPプロトコルを使いHTMLデータをやりとりすることは同じです。
また、HTMLデータを蓄積し、ブラウザからのリクエストでHTMLデータを送り出すサーバにはApacheやIISなどのいくつかの種類がありますが、プロトコルはいずれもHTTPです。
パソコン上のブラウザでURLを指定し、ホームページへアクセスした時の基本的な流れを見てみましょう。
例えば、「http://www.juen.ac.jp/index.html」へアクセスする場合を考えます。
パソコン上のブラウザでアドレス欄にURLを入力、またはブックマークに登録されたショートカットをクリックすると、サーバに 「GET /index.html HTTP/1.1」 というデータが送信されます。
一般的に、この要求メッセージには、
●リクエスト行
●ヘッダ
●空白行
●ボディ(リクエストが「GET」の時は省略)
が含まれます。
これが、index.htmlのデータを送ってくださいという「要求」になります。
この要求を受け取ったサーバは、要求のされたファイルが存在する場合、「HTTP/1.1 200 OK」 という応答とともに、index.htmlの内容をブラウザへ送信します。
一般的に、この応答メッセージには、
●ステータス行
●ヘッダ
●空白行
●ボディ(コンテンツデータ)
が含まれます。
HTTPの要求や応答に含まれるヘッダフィールドについて詳しく見てみましょう。
ヘッダは、リクエスト行やステータス行の次に位置し、ヘッダフィールド名とフィールド値から構成され、HTMLファイルの内容などの実際のデータ以外の情報、例えばクライアントやサーバの情報や、実際のデータのサイズといった補助情報をやりとるするために開発されたものです。
ヘッダフィールドには、
ACCEPT | ・・・ | 受入可能なメディアタイプ |
HOST | ・・・ | リクエスト先ホスト名とポート番号 |
REFERER | ・・・ | リンク元のURL |
USER-AGENT | ・・・ | リクエスト元クライアントの情報 |
などがあります。
HTTP は1回の要求に対して1回の応答を返し完結します。このため、HTTPだけでは、例えば、ショッピングサイトのように、カートに入れた商品情報や購入手続きまでの各状態を維持することができず、ショッピングが実現できません。
そこで、1994年に Netscape Communications Corporation によって クッキー(Cookie) という仕組みが提案・実装され、1997年にRFC2109で標準化され、現在はほとんどのWebサーバやブラウザで利用可能になっています。
クッキーは、
(1) Webサーバがブラウザにその状態を区別する識別子をHTTPヘッダに含める形で応答を返す。
(2) ブラウザは次にWebサーバと通信する際に、その識別子をHTTPヘッダに含めて要求を送信する。
(3) Webサーバはその識別子を元に、状態に合わせた処理を行い、ブラウザに応答を返す。
という手順を繰り返しながらさまざまなサービスを実現しています。