メインコンテンツまでスキップ

Appendix A. HTTP Version History (HTTPバージョン履歴)

HTTPのバージョン管理ポリシーは、1990年にWorld-Wide Webグローバル情報イニシアチブとして初めて導入されて以来変更されていません。このバージョンポリシーは、送信者がメッセージのフォーマットと、さらなる通信を理解し、参加する能力を示すことを目的としています。

HTTP/1.1の開発には10年以上かかりました。これには、2つの異なる標準化トラック仕様 ([RFC2068] および [RFC2616])、および数十の実装と展開の経験が含まれていました。

A.1. HTTP/0.9

HTTP/0.9は、World-Wide Webでの最初のHTTPプロトコルの実装でした。これは単純なプロトコルであり、要求は単一の行で構成され、メソッドとターゲットURIのみが含まれていました。

GET /hello.txt

A.1.1. HTTP/1.0

HTTP/1.0は、一般的なHTTPメッセージフォーマットを文書化しました。これは、プロトコルバージョン番号、ステータスコード、要求と応答の両方のヘッダーセクションを追加しました。

HTTP/1.0の仕様は [RFC1945] で定義されています。

A.1.2. HTTP/1.1

HTTP/1.1は、要求方法、応答ステータスコード、およびヘッダーフィールドの詳細な説明を含む、HTTP/1.0を改良したものです。

主な改善点には以下が含まれます:

  • 持続的接続: デフォルトで接続が持続的になる
  • チャンク転送エンコーディング: メッセージ本文を動的に送信できる
  • Host ヘッダー: 仮想ホスティングのサポート
  • パイプライン化: 複数のリクエストを並行して送信できる
  • キャッシュ制御: より洗練されたキャッシュメカニズム

HTTP/1.1は最初に [RFC2068] (1997年1月) で定義され、その後 [RFC2616] (1999年6月) で更新されました。

A.2. Changes from RFC 2616 (RFC 2616からの変更)

このドキュメント ([RFC7230]) は、以前の [RFC2616] を廃止し、多くの明確化と改善を導入しています:

A.2.1. Architecture (アーキテクチャ)

  • 仲介者 (プロキシ、ゲートウェイ、トンネル) の役割の明確化
  • ユーザーエージェントとオリジンサーバーの定義の改善

A.2.2. Message Syntax and Routing (メッセージ構文とルーティング)

  • メッセージフレーミングの明確化
  • Transfer-Encoding と Content-Length の相互作用の明確化
  • チャンク転送エンコーディングの詳細な説明

A.2.3. Connection Management (接続管理)

  • 持続的接続の動作の明確化
  • パイプライン化の制限の文書化
  • 接続再利用とクローズの詳細な説明

A.2.4. Security Considerations (セキュリティに関する考慮事項)

  • リクエストスマグリング攻撃の文書化
  • レスポンス分割攻撃の文書化
  • プロトコル要素長に関するセキュリティガイダンスの追加