【ネットワーク】【プロトコル】HTTP

■ HTTP (Hypertext Transfer Protocol)

 * Web のサーバと、クライアント(ブラウザ)の間で、ウェブページを送受信するためのプロトコル
 * HTTPは、ステートレスなプロトコルである

ステートレスプロトコルとは?

 * 一つひとつの通信において、状態を保持できない通信プロトコル
  => ステートレスな通信では、1回のリクエストレスポンスごとにTCP/IPコネクションが生成される
  => そのため、連続したリクエストを送る場合でも毎回接続と切断が繰り返され、パフォーマンスが低下する

 * HTTP/1.1では、TCP/IPレベルでのコネクションを一度きりで切断せずに、
   一定時間コネクションを維持するための持続的接続(Persistent Connection)が追加

 持続的接続に関連する事項として、「Keep-Alive」があるが、それは、以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/34622835.html

■ HTTPメッセージ

リクエスト・メッセージ

構文
[リクエスト行]
[ヘッダ]
(空行)
[メッセージボディ(POSTメソッドなどで使用)]

GET /yahoo.co.jp/index.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ja-JP; rv:0.9.2) \
    Gecko/20010726 Netscape6/6.1
Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, \
    image/png, image/jpeg, image/gif;q=0.2, text/plain;q=0.8, text/css, \
    */*;q=0.1
Accept-Language: ja
Accept-Encoding: gzip,deflate,compress,identity
Accept-Charset: Shift_JIS, utf-8;q=0.66, *;q=0.66
Keep-Alive: 300
Connection: keep-alive

レスポンス・メッセージ

構文
[レスポンス行]
[ヘッダ]
(空行)
[メッセージボディ]

HTTP/1.1 200 OK
ETag: W/"7487-1032772982000"
Last-Modified: Mon, 23 Sep 2002 09:23:02 GMT
Content-Type: text/html
Content-Length: 7487
Date: Tue, 29 Apr 2003 07:26:13 GMT
Server: Apache Coyote/1.0

<html>
<body>
(中略)
</body>
</html>

■ HTTPステータス・コード

http://e-words.jp/p/r-httpstatus.html
より

1xx : Informational (情報)

 * 100 : Continue(継続)
 => 処理継続中。不足分ヘッダーを追加送信せよ。
 * 101 : Switching Protocols(プロトコル切替)
 => プロトコルを変更し再接続せよ。

2xx : Success (成功)

 * 200 : OK(成功)
 => 成功(正常時)
 * 201 : Created(作成完了)

3xx : Redirection (転送)

 * 301 : Moved Permanently(恒久的に移転)
 => Locationヘッダーに指定された別の場所に移動済
 * 307 : Temporary Redirect
 => 指定されたコンテンツは一時的に移動中

4xx : Client Error (クライアントエラー)

 * 400 : Bad Request(不正なリクエスト)
 => 要求が不正
 * 401 : Unauthorized(未認証)
 => 認証されていない
 * 402 : Payment Required
 => 支払いが必要
 * 403 : Forbidden(アクセス権がない)
 => アクセスが認められていない
 * 404 : Not Found(存在しない)
 => 指定されたコンテンツが見つからない
 * 408 : Request Timeout
 => クライアント側が時間はかかるため、リクエスト・タイムアウトした。
 * 415 : Unsupported Media Type
 => メディアタイプが適合しない

5xx : Server Error (サーバエラー)

 * 500 : Internal Server Error(サーバ内部のエラー)
 => サーバ内部でエラーが発生した
 * 501 : Not Implemented(その機能は実装されていない)
 * 503 : Service Unavailable
 => サービスは利用不可能
 * 505 : HTTP Version Not Supported
 => 指定されたHTTPバージョンはサポートされていない


関連記事

ブラウザにページが表示されるまで

http://blogs.yahoo.co.jp/dk521123/21366320.html

Apache】 Keep-Alive について

http://blogs.yahoo.co.jp/dk521123/34622835.html