まくろぐ
更新: / 作成:

HTTP1.1

Host 指定

HTTP1.1 では、メッセージヘッダーに Host: <ドメイン> の指定が必須です(これが唯一の必須ヘッダーです)。 これは、1 台の Web サーバーで複数のドメインを運用する、バーチャルホストの機能を実現するために必要とされています。 Web サーバーは、Host ヘッダーで示されたドメイン名と、相対 URI (/index.html など)を組み合わせて、実際のどのリソースを返すかを判断します。 HTTP1.0 を使う場合は、Host: の指定は必要ありません。

HTTP キープアライブ

HTTP1.1 では、最初にスリーウェイハンドシェイクしたら、そのコネクションを一定時間使い続けることで、複数のリソースファイルの取得を効率化しています。 これを HTTP キープアライブ (KeepAlive) といい、HTTP1.1 では標準の振る舞いになっています(HTTP ヘッダーに Connection: keep-alive が付いていると考えるが規定の動作)。 例えば、ブラウザで Web ページを開くと、HTML ファイルだけではなく、CSS ファイルや画像ファイルなどのリソースを取得するために複数のリクエストが発行されますが、そこでは同じコネクションが使用されます。

コネクションの切断は、サーバーが設定しているタイムアウト時間を過ぎたときに行われますが、クライアントあるいはサーバーが Connection: close ヘッダーを含めることで、切断する意志を伝えることができます。

プロキシ経由時の「リクエスト行」の URI について

プロキシサーバを介する場合は、リクエスト行に 絶対アドレス指定 で URI を指定する必要があります。 これは、リクエストを受け取ったプロキシサーバが、リクエストの転送先サーバを判断するためです。 逆に、プロキシを使わない場合は、リクエスト URI は相対パスで指定します。

Client
  |
  | GET http://target.example.com/index.html HTTP/1.1
  ▽
Proxy server
  |
  | GET /index.html HTTP/1.1
  ▽
target.example.com

HTTP のメッセージヘッダの種類

HTTP のメッセージヘッダには、大きく分けて、

  • End-to-End
  • Hop-by-Hop

の 2 種類があります。

関連記事

まくろぐ
サイトマップまくへのメッセージ