HTTP / Hyper Text Transfer Protocol
■ HTTP。Hypertext Transfer Protocol。
WWWシステムが用いるクライアントサーバ型のプロトコル。
旧バージョンのHTTP/1.0はRFC1945に、
現バージョンのHTTP/1.1はRFC2616に規定されている。
HTTPは、クライアント(Webブラウザ)のリクエストに対して、
その都度サーバ(Webサーバ)がレスポンスを返す、シンプルな通信形態を採る。
いわゆるステートレスなプロトコルである。
とくに旧バージョンのHTTP/1.0では
クライアント-サーバ間のTCPコネクションは
一回のHTTPリクエスト-レスポンスごとに閉じられる。
このため、個々のやり取りは互いに関連性を持たない。
■ HTTP/1.1。
HTTP/1.0の改良版。
1999年、IETFによりRFC2616として標準化された。
HTTP/1.1は、HTTP/1.0と比較して、2つの点で大きく異なる。
すなわち、HTTPレスポンス完了後もTCPセッションを維持する
キープアライブ機能が標準として追加された。
また、1台のサーバマシンで複数のホストを運用できる
バーチャルホスト機能が追加された。
(1) キープアライブ機能。Keep Alive。
HTTPレスポンス完了後もTCPセッションを維持する仕組み。
これを持続的接続(Persistent Connection)という。
リクエストヘッダの中で"Connection:close"を宣言してはじめて、
TCPセッションを切断する。
この機能により、Webサーバからファイルを受け取るときに、
1回のTCP接続で複数のファイルを一気に受け取れるようになった。
このためTCPの処理が減り、
サーバやブラウザ、ネットワークにかかる処理を軽減できた。
ただし、ショッピングカートなどを利用するには、
やはりHTTP Cookieが必要になるので注意すること。
そこまでの機能はない。
(2) バーチャルホスト機能。Virtual Host。
HTTP/1.1では、物理的に1台のサーバマシンで、
仮想的に複数のホストを運用するための機能。
具体的には、リクエストヘッダを見るだけで、
どの仮想ホストへの要求かが判断できるように仕様を改めた。
これによりサーバマシンは、
複数の仮想ホストにリクエストを振り分けることができるようになった。
■ HTTPヘッダ。
WebサーバとWebブラウザは、HTTPヘッダを使って、
互いのソフトウェア情報や
送受信するコンテンツに関する情報をやり取りする。
HTTP/1.1ヘッダには、
リクエストヘッダとレスポンスヘッダの2種類がある。
■ リクエストヘッダ。
リクエストヘッダには、
リクエストメソッド、要求リソースの特定、HTTPのバージョン、
自身のエージェント名、相手先のホスト名などが順に記述される。
さらに下記のように、WebブラウザやOSの種類、バージョン、
直前に参照したURLなどの情報も格納されており、
これらはWebサーバのログに選択的に記録することができる。
GET /HTTP/1.1
Accept 利用可能なメディアタイプ
Accept-Language 優先言語
User-Agent WebブラウザとOSの種類、バージョン
Host 参照したいURL
Referer 直前の参照URL
Via 経由したプロキシサーバの情報
X-Forwarded-For 経由したプロキシサーバのアドレス
Cookie Cookie情報
■ リクエストメソッド。
WebブラウザがWebサーバに対して命令するコマンド。
HTTP/1.1における主なリクエストメソッドは下記の通りである。
■ レスポンスヘッダ。
レスポンスヘッダには、
HTTPのバージョン、レスポンスコード、HTTPサーバのタイプ、
コンテンツのメディアタイプ等が順に記述される。
HTTP/1.1 200 OK
Date 応答した日時
Content-Type コンテンツのメディアタイプ
Server サーバの種類とバージョン
Content-Length コンテンツのバイト長
■ レスポンスコード。
WebサーバからWebブラウザに送信する応答メッセージを番号で表現したもの。
HTTP/1.1におけるレスポンスコードは下記の通りである。
- 200 OK
正常に送信を終了した。
- 304 Not Modified
指定のファイルが更新されていないため、キャッシへ転送。
- 401 Unauthorized
読み出しにはアクセス許可が必要。無許可では×。
- 403 Forbidden
指定ファイルはサーバ側で、読み出し禁止にしている。
- 404 Not Found
指定されたファイルは存在しない。URLが間違っている。
- 500 Internal Server Error
CGIプログラムソース等のエラーが発生。処理を中断。
■ 参照URL。
Studying HTTP 様。
http://www.studyinghttp.net/
以上。
2004/03/16 pm