◆ CGIの仕組み

フォームで作成したデータを、CGIプログラムによって内容を表示させたり、買い物カゴシステムに見られる計算などインタラクティブに動くCGIの仕組みは、サーバとブラウザのコミニュケーションを理解する必要があります。

データの流れ(やり取り)

入力の流れ
ブラウザ → プログラムのURL+データ → WEBサーバ → 標準入力+環境変数 → CGIプログラム

出力の流れ
CGIプログラム → 標準出力 → WEBサーバ → CGI出力 → ブラウザ

通常、Webサーバに置かれたHTML文書はブラウザで実行されます。しかし、上記のデータの流れを見てお分かりの通り、CGIプログラムはサーバ上で実行され、その結果をブラウザに返します。そのためアクセスが集中するとサーバの負荷が高まり、極端に速度が落ちる危険性もあります。最悪の場合、接続できなかったりサーバがパンクします。

URL(URI)の3つの構成

URLは基本的に3つの部分で構成されます。少なくとも最初の2つの部分は皆さんよくご存知でしょう。

プロトコル部://ホスト部/要求ファイル

プロトコル部
URLの一番先頭の部分は、プロトコル部です。プロトコル部では、クライアントとサーバの間でデータを転送するのに使うインターネットプロトコルを指定します。具体的なプロトコルとしては、FTP、WAlS、GOPHER、Telnet、HTTP等があります。ここでは、HTTP(Hyper Text Transport ProtocoI)だけを取り扱います。クライアントとサーバの間で受け渡しされるメッセージのことを「HTTPへッダ」と呼ぶ理由はそういうわけなのです。

リモートサーバでもローカルサーバでも、その上にあるファイル、プログラム、ディレクトリをアクセスするのにHTTPを用いることができます。プロトコル部の最後は必ず「:」で終わります。

ホスト部
プロトコル部の直後に「//」と記述し、その次にホスト部を指定します。ホスト部とは、インターネットでのサーバマシンのフルドメイン名(www.scollabo.comのようなもの)または、IPアドレス(192.168.1.1のようなもの)です。ホスト部の最後は必ず「/」で終わります。

ホスト部の末尾(終わりの「/」の直前)に、「:ボート番号」という指定を書くこともできます。ポート番号が指定されていなければ、デフォルトとして 80 という番号が使われます。簡潔に述べると、インターネット上のサーバはサービスの種類ごとに決められたポート番号で待機していて、クライアントはそのポートにメッセージを送ることでそれぞれのサービスを利用できるのです。そしてHTTPサーバのデフォルトのボートは80番だということです。

FTPやTelnetなどその他のサービスは、またそれぞれ違ったデフォルトのポートアドレスを待ちます。UNlXの場合、デフォルトのポートアドレスはシステムごとに /etc/service という名前のファイルに格納されています。

ディレクトリ、ファイル、CGIプログラム
サーバがあなたのプログラムを見つけるために使うパスは、ホスト部の最後の「/」に続けて指定します。サーバはそのパスの要素を1つずつ調べながらドキユメントディレクトリをたどっていき、最終的にファイル、プログラム、ディレクトリのうちのいずれが要求されているのか(要求ファイル)を知ります。

HTMLの役目

HTML(Hyper Text Markup Language) は、主にテキスト整形のために設計されたマークアップ言語で、基本的な組版用の言語として世界上で普及しています。

それでは、HTMLと CGIプログラムはどのように関係しているのでしょうか?

それは、CGIを起動する主要な方法が、HTMLの form 要素を通じて呼び出す方法だということです。ただし、CGIプログラムは必ずしも HTMLのフォームを通じて呼び出す必要はありません。

CGIプログラムは、アンカー要素でも置換え要素でも、任意に呼び出すことができるからです。つまり、各要素の属性値で示される URLによって CGIプログラムを起動させることができ、それではじめてインタラクティブな環境を提供します。

その意味で、Webブラウザ上で展開される CGIプログラムの結果は、HTMLと密接に関係しているといえます。



This Page is HTML4.01 Valid! 初版更新日 2002/7/21   最新更新日 2003/10/26
Copyright(C) 2002-2003 banban@scollabo.com