2009-05 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
[2004-02-09-1] の HTTP 版です。
Web ブラウザは HTTP リクエストを送信し、返ってきたステータスコード
や、生の HTML 等を解析するのが仕事です。
HTTP リクエストは簡単なので、人間が telnet で接続しサーバとお話しす
ることもできます。
% 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 が返ってきた。 (以下省略)
% 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 が返ってきた。 (以下省略)
この例だと分かりませんが、簡単な 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 -> ページが見つからなかった。
参考情報: Wikipedia - Http
参考情報: Wikipedia - HTTPステータスコード
参考情報: telnetでブラウズ(HTTP)
こうして確認してみると、HTTP のデータ構造は電子メール(RFC2822)とそっ
くりだということが分かります。両方ともヘッダは複数の
フィールド名: 内容
で構成され、最後は空行で終わります。
あと、[2003-06-08-1] にも書きましたが、例で使っている example.com
は、予約ドメインとして RFC2606 に定義されています。実際にアクセスす
ることも出来ます。
2009-05 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31