HTTPプロトコルの詳細
M1 肇史
HTTP
Hyper Text Transfer Protocol
HTTP/1.1 ( RFC 2616 )
プロキシやキャッシュ,仮想ホストを考慮
ハイパーテキストを転送するプロトコル
クライアント・サーバ型
port 番号は80
プロトコルの概要
TCPでコネクションの確立
クライアントがリクエストメッセージを送信
サーバが②に対するレスポンスを返す
Internet
クライアント
Webサーバ
表示
(ブラウザ)
TCPコネクションの確立
HTTP/1.1以前のバージョン
1つの要求ごとにコネクションの確立,切断
画像ファイル所得要求にもコネクションの確立が必要
ネットワークのトラフィックの増加
HTTP/1.1
コネクションをなるべく維持
要求が来なくなったら切断(タイムアウトの設定)
URI
URI ( Uniform Resource Identifier )
必要な情報の場所
URLやパスで表す
http: //host [ :port ] [abs_path [ ?query ]]
port が指定してなければ port 80
abs_path が指定していなければ / を指定
HTTP メッセージ
HTTPメッセージ
リクエストメッセージ
リクエストライン
ヘッダ
メッセージ本体
レスポンスメッセージ
ステータスライン
ヘッダ
メッセージ本体
リクエストライン
ヘッダ
(空行)
メッセージ本体
ステータスライン
ヘッダ
(空行)
メッセージ本体
リクエストメッセージ
リクエストライン
メソッド
どのようなリクエストであるかを指定
リクエストURI
メソッドの操作を行うリソースを指定
メソッ リクエストURI HTTPバージ
メソッド
GET
情報を引き出す
HEAD
ヘッダ情報だけを引き出す
POST
クライアントからサーバに情報を送
OPTIONS
可能な通信オプションの情報を引き出す
レスポンスメッセージ
ステータスライン
ステータスコード
3桁の整数で表された要求結果のコード
リーズンフレーズ
ステータスコードの内容を表した句
OK, Not Found など
HTTPバージョ ステータスコード リーズンコード
ステータスコード,リーズンフレーズ
2xx
要求が成功
200 OK, 202 Accepted
4xx
クライアント側の要求エラー
400 Bad Request, 401 Unauthorized, 404 Not Found
5xx
サーバ側のエラー
500 Internal Server Error, 501 Not Implemented
ヘッダ
Content-Length
データのサイズ
Content-type
データのメディアのタイプ text/htmlなど
Date
このメッセージが生成された時間
Host
HTTPの要求先ホスト(1.1では必須ヘッダ)
HTTPプロトコルの例
mine@eric[tmp]% telnet www.db.is.kyushu-u.ac.jp 80
Trying 133.5.18.167...
Connected to hatsune.db.is.kyushu-u.ac.jp.
Escape character is '^]'.
GET /~mine/index.html HTTP/1.1
Host: www.db.is.kyushu-u.ac.jp
HTTP/1.1 200 OK
Date: Mon, 06 Aug 2001 13:05:46 GMT
Server: Apache/1.3.14 (Unix)
Connection: close
Content-Type: text/html
telnetメッセー
リクエストメッセー
レスポンスメッセージ
のステータスライン
ヘッダ