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」)。
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ブラウザに付いている「アドレス欄」がこの場所を指定する空白です。
URL表示は地味な機能ですが、とても重要な機能です。
■(2)Webページを表示する機能
Webブラウザの2つめの核となる機能は、WebサイトにあるHTMLファイルを解析して、人間に見やすい表示に変換してくれる機能です。デザインデータやプログラムの実行、画像・動画や音楽の再生といったいろいろなデータを人間に分かりやすい形に変えてくれます。
■(3)Webページの閲覧をサポート
Webブラウザの3つめの機能は、Webページを便利に閲覧することができる機能です。お気に入りのWebページを「ブックマーク」したり、「戻る」矢印で直前見たWebページに戻ったり、Webページを最新の情報に更新するのを助けてくれたりします。これらのブラウジングをアシストする機能も地味な機能の1つですが、ないとブラウジングが快適にできません。
以上の3つがWebページの基本的な役割です。1も3もとても重要な機能なのですが、ココでは(2)のWebページを表示する機能についてより詳しく見ていきたいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.