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 サーバー側のエラー
上記のレスポンスメッセージの例では「HTTP/1.1 200 OK」がレスポンス・ラインで、200が応答ステータスコードです。

よくあるエラーコードは、404です。これにより(Not Found)の表示を出すブラウザがあります。 これはURLが誤って指定されている、ページが削除されている、URLが変更されているなどの理由によって、リクエスト内のURLが見つからないときに返されるステータスコードです。
ブラウザにはDNSエラーと表示される場合、Webサーバのホスト名をDNSで検索したが見つからなかった場合は、 HTTPリクエストが行われません。

401(Unauthorized)の応答ステータスコードは、Webサーバへのログイン時に指定した利用者IDが見つからず,ログインが拒否された場合です。

WebサーバへのIPパケットの経路が見つからず,HTTPリクエストがタイムアウトになった場合は、408(Request Timeout)の応答ステータスコードです。

色の部分は、クライアント(ブラウザ)に送る付加的な情報を配置します。 付加する情報の種類や数は、リクエストによってさまざまですが、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」を東京のローカル時の文字列で表すと、 です。