Webブラウジングの仕組み

「アクセスカウンタ」などを設置しているWebサイトは多い。しかし、その仕組みや中身について理解している人は少ないのではないだろうか。

「Web上で動くプログラム」ということで、ちょっと敷居が高いような感じがするが、何回かに分けてWebの仕組みから解説していきたいと思う。

まず、基本知識としてWebの仕組みについて解説したい。Webブラウザー(以下、ブラウザー)を使ってWebページを見ている。

このときブラウザーとWebページのデータを送ってくれるwwwサーバー(以下、サーバー)はどのようなやり取りをしているのだろうか?

まず、ブラウザーはユーザーから指定されたURL(Webページのアドレス)のデータを渡してくれるようサーバーに要求する。この「ブラウザーでWebページを見るためのデータのやり取り」にはルールがあり、「HTTP」と呼ばれている。

サーバー側の「HTTP」アクセスを処理するプログラムがあり、「HTTPD」(HTTPデーモン)と呼ばれている。このHTTPDが、多数のユーザーーからのアクセスに対して、要求されたデータをブラウザーに返している。ユーザーから要求されるデータには、「HTML」や「JPG」、「GIF」などがある。

余談であるが、「HTML」を要求するとそこに埋め込まれている画像データも一度に送られて来ているような気がする。しかし、これはブラウザーが自動的にそれぞれを送ってくれるように要求を出している。そして、そのなかの一つに「CGI」がある。

CGI(Common Gateway Interface)

CGI(Common Gateway Interface)とは、サーバーから別のプログラムを実行する仕組みのことをいう。

ブラウザーがサーバーに対して、***.cgiというデータへの要求を行った場合、HTTPDはこれを処理することのできるプログラムへ渡す。そのプログラムから返されたデータをHTTPDはブラウザーに送る。

多くの場合、この「***.cgi」の中身はPerlという言語で書かれたプログラムである。

HTTPDは拡張子(ファイル名のピリオドの右側)を見て、そのままユーザーへ送るのか、別のプログラムに渡すのかを判断している。Perl言語で書かれたプログラムは「Perlスクリプト」と呼ばる。

スクリプトとは、プログラムを実行させるときに、実行形式ファイルを作成しないプログラムのことをいう。

Perlを実行させるプログラムがPerlで書かれたプログラムを読み込んで、命令を一つ一つ解釈しながら実行していく。なんかややこしいが、「Perl言語で書かれたプログラム」がPerlスクリプト(プログラム)で、これを実行するのがPerlということだ。PerlはHTTPDから渡されたPerlスクリプトを実行し、その結果をHTTPDに返していく。このようにして、Web上ではプログラムの実行が行われている。

SSI(Server Side Include)

もう一つのプログラムの実行方法にSSI(Server Side Include)がある。CGIではブラウザーから直接プログラムファイルへ要求が出される。それに対して、SSIではプログラムの実行指示をHTMLの中に書くことができる。

HTTPDがブラウザーにHTMLファイルを送るときに、ファイルの文中に

「<!--#exec cmd="***.pl"-->」

という「SSI命令文」があった場合、指定されたプログラムを実行する。プログラムから受け取った実行結果をSSI命令文と入れ替えて、HTMLをブラウザーに返す。(ユーザーにはSSI命令文は見えない)プログラムが実行される部分の仕組みはCGIと変わらない。

SSIを使うことで、アクセスカウンタのようにHTMLの一部にプログラムの実行結果を挿入したい場合など、手軽に実現でる。SSI命令はプログラムの実行以外に、日付の表示や環境変数(サーバーの持っているいろいろな情報)を表示させることもできる。

実行環境について

最後にPerlで書かれたプログラムを実際にサーバー上で動かす場合の注意点である。CGIとSSI、2つの実行方法を説明したが、プロバイダーやレンタルサーバーによってはSSIは使えなかったり、CGIはサーバの特定の場所へ設置しなければいけないなどの制約がることがある。そのほかにも「サーバーでプログラムを動かす」ということで、いろいろな設定が必要となる。CGIを設置したい場合は、現在使っているサーバーでCGIが設置できるか確認する必要がある。

CGIやSSIが使えるかどうかは、レンタルサーバーを選ぶ上で一つの目安になるだろう。やはり、Webサイトの拡張性を考えると、CGIやSSIが使えた方が便利である。

Google