連載
» 2008年04月14日 00時00分 UPDATE

いまさら聞けないリッチクライアント技術(11):いまさら聞けない「Webブラウザ」超入門 (2/3)

[江原顕雄,@IT]

Webブラウザって何をしているの?

クライアントからのリクエスト通信

 Webサーバからデータを得るには「情報をください」という「リクエストメッセージ」を、Webサーバに送らなければなりません。Firefoxを使って@ITにアクセスをする際に、Webブラウザ側からサーバに以下のデータを送ります。

GET / HTTP/1.1
Host: www.atmarkit.co.jp
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.13)
Gecko/20080311 Firefox/2.0.0.13
Accept: text/xml,application/xml,application/xhtml+xml,text/html;
q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

 このデータは「HTTPヘッダ情報」といわれるものです。Webサーバとクライアントが通信をするには、効率よくデータを交換するためにルールが決められています(そのルールはRFC2616という規格基準に書かれています)。この「HTTPヘッダ情報」は、「私(クライアントPC)はきちんとルールにのっとって通信をしますよ。だからデータをください」という意味です。では、実際に見てみましょう。

GET / HTTP/1.1

 「GET」の意味は「情報をくれ!」とそのものずばりの命令です。コンピュータ用語解説の表現にいい換えると「リソースを取得」するための「GET」です。「HTTP/1.1」は、クライアントが利用する「HTTPバージョン」を指定します。

 HTTPとは、Hypertext Transfer Protocol(ハイパーテキスト・トランスファー・プロトコル)の略で、Webサーバとクライアント間でHTML通信をする際のお約束(ルール)です。ルールにもいろいろなバージョンがあるので、こうやって「この版を使うよ」と指定しなければなりません。

 2行目以降が「ヘッダ」になり、「プロパティ名:値」という形式で記述されます。

Host: www.atmarkit.co.jp

 「Host」の部分はデータを求めているHTTP URLが書かれています。

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13

 クライアントが利用しているブラウザの情報をサーバに伝えます。このデータからは、利用者はFirefoxのバージョン2.0.0.13を利用し、OSはWindows XPの日本語版だと判明します。

Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text
/plain;q=0.8,image/png,*/*;q=0.5

 クライアントが受け取り(アクセプト)可能なデータ形式を書いています。

Accept-Language: ja,en-us;q=0.7,en;q=0.3

 この部分では、クライアントが求めている言語を指定しています。海外のWebサービスを利用しているときに、自動的に英語でなく日本語のメッセージが表示される場合があります。それはこの部分を見てWebサーバが判断をして、日本語のコンテンツに切り替えてくれるのです。

Accept-Encoding: gzip,deflate

 通信をするときに利用できる圧縮形式です。

Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7

 受信できる文字コードです。

サーバからクライアントへの通信

 この情報を受けたWebサーバは以下のようなデータをクライアントに返してきます。

HTTP/1.1 200 OK
Date: Wed, 09 Apr 2008 22:33:25 GMT
Server: Apache/1.3.37 (Unix) PHP/4.4.4 mod_ssl/2.8.28 OpenSSL/0.9.8e
ServerID: 02
P3P: CP="CAO DSP COR CURa ADMa DEVa OUR IND NAV "
Keep-Alive: timeout=10, max=500
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

 こちらも簡単に見てみましょう。

HTTP/1.1 200 OK

 HTTPのバージョンは1.1、「200」はきちんと通信ができたことを示します。この番号は「HTTPのステータスコード」と呼ばれています。

 Webページが存在しない場所にアクセスすると、「HTTP 404 - ファイル未検出」と表示されますが、この404や「404 Not Found」もステータスコードで、ページが存在しないことを意味します(参考「RFC2616 Status Code and Reason Phrase」)。

画面4 「HTTP 404 - ファイル未検出」エラー 画面4 「HTTP 404 - ファイル未検出」エラー
Date: Wed, 09 Apr 2008 22:33:25 GMT

 サーバがデータを送信した日時です。JST(日本標準時)でなく、GMT(グリニッジ標準時)で書かれているので、日本の時間とずれていても問題ありません。

Server: Apache/1.3.37 (Unix) PHP/4.4.4 mod_ssl/2.8.28 OpenSSL/0.9.8e

 サーバの情報です。サーバソフトはApacheを利用し、OSはUNIXを使っているのが分かります。

Content-Type: text/html

 HTMLファイルを送信するということを意味し、この後にHTMLデータが送られてきます。

 これらのデータは通常、Webブラウザからは見ることができません。しかし、これらのデータを手軽に閲覧できるソフトやプラグインがリリースされているので、興味がある人はチェックしてみると勉強になるかもしれません。またWebサーバからの応答だけを見てみたい人は、「View HTTP Request and Response Header」というサービスを利用すれば、手軽に確認できます。

Webブラウザの役割は3つ

 次にWebブラウザが、どんな働きをしているのか、チェックしてみましょう。Webブラウザは「Webページを見る」ためのソフトです。このWebページを見るために以下の3つの機能を搭載しています。

(1)Webページの場所を指定する機能

 インターネット上には数百億ものWebページが存在します。そのため、自分が知りたいデータはピンポイントでページを指定しなければなりません。Webブラウザに付いている「アドレス欄」がこの場所を指定する空白です。

画面5 WebブラウザのURLアドレス欄 画面5 WebブラウザのURLアドレス欄

 URL表示は地味な機能ですが、とても重要な機能です。

(2)Webページを表示する機能

 Webブラウザの2つめの核となる機能は、WebサイトにあるHTMLファイルを解析して、人間に見やすい表示に変換してくれる機能です。デザインデータやプログラムの実行、画像・動画や音楽の再生といったいろいろなデータを人間に分かりやすい形に変えてくれます。

図6 Webページ表示の例 図6 Webページ表示の例

(3)Webページの閲覧をサポート

 Webブラウザの3つめの機能は、Webページを便利に閲覧することができる機能です。お気に入りのWebページを「ブックマーク」したり、「戻る」矢印で直前見たWebページに戻ったり、Webページを最新の情報に更新するのを助けてくれたりします。これらのブラウジングをアシストする機能も地味な機能の1つですが、ないとブラウジングが快適にできません。

 以上の3つがWebページの基本的な役割です。1も3もとても重要な機能なのですが、ココでは(2)のWebページを表示する機能についてより詳しく見ていきたいと思います。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。