HTTPバージョンごとの違い(1.0, 1.1, 2.0)
Kenichi Noshian
Kenichi Noshian
HTTPバージョンごとの違い(1.0, 1.1, 2.0)
HTTP/1.0
HTTP/1.0は、Webが公開された初期の段階で開発されたHTTPプロトコルの初めて公式に文書化されたバージョンです。1996年にRFC1945として標準化されました。HTTP/1.0は、Webの基本的な通信メカニズムを定義し、Webブラウザとサーバー間でのHTMLドキュメントや画像などのリソースのやり取りを可能にしました。以下はHTTP/1.0の主要な特徴と限界です。
主要な特徴
- ステートレスプロトコル: HTTP/1.0はステートレスなプロトコルであり、サーバーはリクエスト間の状態やセッション情報を保持しません。
- 非連続的接続: HTTP/1.0では、リクエストごとに新しいTCP接続が必要で、リクエストが完了するとすぐに接続が閉じられます。
- シンプルなキャッシングメカニズム: HTTP/1.0では、基本的なキャッシングメカニズムが導入されましたが、キャッシュ制御のためのヘッダーは限られていました。
限界
- 接続のオーバーヘッド: 各リクエストに対して新しいTCP接続を確立する必要があります。
- 並列接続の制限: 当時のブラウザやサーバーは、一度に数個の並列接続しか開かなったため、ページ読み込み速度が低下します。
- ヘッダーの最適化不足: HTTP/1.0ではヘッダー情報が最適化されておらず、冗長なヘッダー情報は帯域幅を無駄に消費します。
HTTP/1.1
HTTP/1.1はHTTPプロトコルの重要なバージョンアップであり、多くの機能と改善点が導入されました。1997年にRFC2068として最初に標準化され、その後RFC2616やRFC7230などで更新されています。
永続的的接続(Persistent Connections)
HTTP/1.1ではデフォルトで永続的接続が導入され、複数のリクエストとレスポンスを同一のTCP接続上で行うことができます。
パイプライン化
クライアントが複数のリクエストを連続して送信し、それらのレスポンスを順番に受け取ることが可能になりました。
チャンク転送エンコーディング
レスポンスの全体の長さを事前に知ることなく、データをチャンクとして分割して送信することが可能になりました。
キャッシュ制御の強化
より詳細なキャッシュ制御が可能となり、Cache-Control
ヘッダーを通じてキャッシュの挙動を細かく指定できるようになりました。
HTTP/2
HTTP/2.0は、Webのパフォーマンスを向上させることを目的として設計されたHTTPプロトコルの主要なアップデートです。2015年に公式に標準化されました。
HTTP/2の主要な特徴と改善点
- バイナリフレーミングレイヤー: HTTP/2はバイナリプロトコルを導入し、リクエストとレスポンスをフレームに分割して送信します。
- 多重化とストリーム: HTTP/2は一つのTCP接続上で複数のリクエストとレスポンスを同時に送受信できる多重化をサポートしています。
- サーバープッシュ: サーバーはクライアントの要求を待たずに、クライアントに必要だと予測されるリソースをプッシュすることができます。
- ヘッダー圧縮: HPACK圧縮を使用して、HTTPヘッダーを圧縮します。
- 優先順位付け: クライアントはリクエストに優先順位をつけることができます。
HTTP/2の導入により、Webサイトやアプリケーションのパフォーマンスが大幅に向上しました。