【プロトコル】HTTP

■ はじめに

HTTPプロトコルについて、ちょこちょこまとめる。

目次

【1】HTTP (Hypertext Transfer Protocol)
【2】HTTPメッセージ
 1)リクエスト・メッセージ
 2)レスポンス・メッセージ
【3】HTTPステータス・コード
 1)1xx : Informational (情報)
 2)2xx : Success (成功)
 3)3xx : Redirection (転送)
 4)4xx : Client Error (クライアントエラー)
 5)5xx : Server Error (サーバエラー)
【4】HTTP ヘッダー
 1)If-Modified-Since

【1】HTTP (Hypertext Transfer Protocol)

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

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

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

 * HTTP/1.1では、TCP/IPレベルでのコネクションを一度きりで切断せずに、
   一定時間コネクションを維持するための持続的接続(Persistent Connection)が追加
 持続的接続に関連する事項として、「Keep-Alive」がある

【2】HTTPメッセージ

1)リクエスト・メッセージ

構文

[リクエスト行]
[ヘッダ]
(空行)
[メッセージボディ(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

2)レスポンス・メッセージ

構文

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

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>

【3】HTTPステータス・コード

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

より

1)1xx : Informational (情報)

100 : Continue(継続)

* 処理継続中。不足分ヘッダーを追加送信せよ。

101 : Switching Protocols(プロトコル切替)

* プロトコルを変更し再接続せよ。

2)2xx : Success (成功)

200 : OK(成功)

* 成功(正常時)

201 : Created(作成完了)

3)3xx : Redirection (転送)

301 : Moved Permanently(恒久的に移転)

* Locationヘッダーに指定された別の場所に移動済

307 : Temporary Redirect

* 指定されたコンテンツは一時的に移動中

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

400 : Bad Request(不正なリクエスト)

* 要求が不正

401 : Unauthorized(未認証)

* 認証されていない

402 : Payment Required

* 支払いが必要

403 : Forbidden(アクセス権がない)

* アクセスが認められていない

404 : Not Found(存在しない)

* 指定されたコンテンツが見つからない

408 : Request Timeout

* クライアント側が時間はかかるため、
 リクエスト・タイムアウトした。

415 : Unsupported Media Type

* メディアタイプが適合しない

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

500 : Internal Server Error(サーバ内部のエラー)

* サーバ内部でエラーが発生した

501 : Not Implemented(その機能は実装されていない)
503 : Service Unavailable

* サービスは利用不可能

505 : HTTP Version Not Supported

* 指定されたHTTPバージョンはサポートされていない

【4】HTTP ヘッダー

1)If-Modified-Since

* 更新有無を調べる場合に使う
 + 更新あり場合:更新したコンテンツをクライアントに返却
 + 更新なし場合:304 Not modified として、キャッシュを使用

参考文献

http://www.tohoho-web.com/ex/http.htm