[2004-02-09-1] の HTTP 版です。
Web ブラウザは HTTP リクエストを送信し、返ってきたステータスコード
や、生の HTML 等を解析するのが仕事です。
HTTP リクエストは簡単なので、人間が telnet で接続しサーバとお話しす
ることもできます。
存在するページを指定すると、200 ステータスコードとともに、生の HTML コードが出力されます。
% telnet www.example.com 80
Trying 208.77.188.166...
Connected to example.com.
Escape character is '^]'.
GET /index.html HTTP/1.0 #<= 入力後、Enter×2回
HTTP/1.1 200 OK #<= ステータスコード 200 が返ってきた。
(以下省略)
存在しないページを指定すると、404 ステータスコードが出力されます。
% telnet www.example.com 80
Trying 208.77.188.166...
Connected to www.example.com.
Escape character is '^]'.
GET /hoge.html HTTP/1.0 #<= 存在しないページを入力後、Enter×2回
HTTP/1.1 404 Not Found #<= ステータスコード 404 が返ってきた。
(以下省略)
オプション(HTTP ヘッダ)を指定すると、環境変数として CGI に渡ります。
この例だと分かりませんが、簡単な CGI のプログラムで確認出来ます。
% telnet www.example.com 80
Trying 208.77.188.166...
Connected to example.com.
Escape character is '^]'.
GET /index.html HTTP/1.0 #<= 入力後、Enter×1回
User-Agent: Telnet [ja] (Linux) #<= 適当な User-Agent を入力後、Enter×2回
HTTP/1.1 200 OK #<= ステータスコード 200 が返ってきた。
(以下省略)
まとめ
200: OK -> 正常にアクセスできた。
404: Not Found -> ページが見つからなかった。
参考情報: Http
参考情報: HTTPステータスコード
参考情報: telnetでブラウズ(HTTP)
こうして確認してみると、HTTP のデータ構造は電子メール(RFC2822)とそっ
くりだということが分かります。両方ともヘッダは複数の
フィールド名: 内容
で構成され、最後は空行で終わります。
あと、[2003-06-08-1]
にも書きましたが、例で使っている example.com
は、予約ドメインとして RFC2606 に定義されています。実際にアクセスす
ることも出来ます。