HTTP(HyperText Transfer Protocol)プロトコル

主に、WebブラウザとWebサーバとの間で使われる通信プロトコルです。ページを要求する文字列をサーバに送ると、サーバの応答でHTMLが得られます。

前述した通り、ブラウザから接続して、サーバーに1つファイルを要求(リクエストメッセージと呼ぶ。)すると、 それに対する応答(レスポンスメッセージと呼ぶ)が返るというシンプルなプロトコルです。 以下にクライアント(ブラウザ)で閲覧する時、サーバに送信するリクエストメッセージ例を示します。

GET / HTTP/1.1
HOST: 192.168.10.101

上記を受信したサーバ側が応答するレスポンスメッセージの例を示します。

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location: http://192.168.10.101/Default.htm
Date: Tue, 04 Jul 2006 08:10:01 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Tue, 24 Jan 2006 02:03:27 GMT
ETag: "a4fe915d8a20c61:a57"
Content-Length: 1915

<html>

<head>
<title>学生連絡ホームページ</title>
以下省略

以下で各メッセージの内容を説明します。

WebブラウザからWebサーバーに送るリクエストメッセージの表現

ヘッダー部メソッド名 URI HTTPバージョン表記CR LF
フィールド名フィールドの値CR LF
CR LF (空の改行)
ボディ部(Webサーバーに送るデータ)CR LF

色は、リクエスト・ラインと呼ばれる部分で、サーバーにある 『何を(URI)をどのように欲しいか?』を表現している部分です。
代表的メソッド名は、GET と PUT があります。PUTの場合は、 FORMタグの内容をWebサーバーに送るデータのところのタイミングで送信します。 URI(Uniform Resource Identifier)は、サーバーにある指定のファイルを表現する方法で、 例えば、http://www001.upp.so-net.ne.jp/yuu/dic.htmlのような表現です。

色は、メッセージヘッダーと呼ばれる部分で、 サーバーに送る付加的な情報を配置します。付加する情報の種類や数はブラウザによってさまざまですが、 HOSTのフィールド名は必項で、サーバーのアドレスまたはサーバー名を指定します。 以下によく使われるヘッダーのフィールド名を示します。

Accept 受信可能なデータタイプ
Accept-Charset 受信可能なキャラクタセット
Accept-Enccding 受信可能なエンコーディング
Accept-Language 受信可能な言語
Host リクエストの最終的な送り先となるサーバのアドレスまたはドメイン名とポート番号(HTTP/1.1では必項)
User-Agent Webブラウザの種類
Referer 参照元のリンクページのURI
If-Modified-Since ローカルにキャッシュに記録した更新日時を値で設定して、それより新しい場合だけ要求する
レスポンスが「304 Not Modified」であれば、ブラウザはキャッシュ情報で表示する。

WebサーバーからWebブラウザに送る応答(レスポンス)メッセージの表現

ヘッダー部HTTPバージョン表記 応答ステータスコード 応答の文字列表現CR LF
フィールド名フィールドの値CR LF
CR LF (空の改行)
ボディ部(ブラウザに送るHTMLなどのデータ)CR LF

色は、レスポンス・ラインと呼ばれる部分で、サーバーの実行結果を知らせる働きです。 応答ステータスコードは次のように決められています。

1xx 処理経過情報の通知
2xx 正常終了
3xx 別のアクションが必要なことを通知
4xx クライアント側のエラー
5xx サーバー側のエラー

色の部分は、クライアント(ブラウザ)に送る付加的な情報を配置します。 付加する情報の種類や数は、リクエストによってさまざまですが、Content-Type: の指定がないと、 ブラウザに送るデータを どう扱うが不明となるので必項と言えるでしょう。また、Content-Length: で ブラウザに送るデータのバイト数を指定します。 以下によく使われるヘッダーのフィールド名を示します。

Serverサーバー種類
Date送日時
Set-cookie書き込みクッキー情報 Set-Cookie: ABC=123ab; Expires=Sun, 03-Jul-2016 02:26:19 GMT
Content-Typeボディ部のデータの種類Content-Type: text/html; charset=Shift_JIS
Content-Lengthボディ部のデータの長さ
Cache-Control「no-cache」の設定であれば、ブラウザはキャッシュしないように働く 

以上のヘッダーは空の改行(CR LF)で区切られ、 この直後からがボディ部(ブラウザに送るデータ)で、 ここにリクエストされたHTMLなどのイメージが入ります。



Set-cookieの有効期限ではGTMで指定します。GMT(Greenwich Mean Time:世界標準時)は グリニッジ天文台の時刻を標準とする事から由来しています。
「Sun, 03-Jul-2016 02:26:19 GMT」を東京のローカル時の文字列で表すと、 です。