リクエスト多重化の系譜

11項目を、編集された順序で辿ります。各項目は同じEntity/Event詳細へ接続します。

Stable URL/collections/http-multiplexing/

Reading guide

この順路について

「1本の接続で複数のリクエストを重ねたい」という同じ主題が、HTTPの歴史で形を変えて 3度実装された系譜を辿る順路です。個々の仕様は独立の発明に見えますが、並べると 同じ問題への周回として読めます。

最初の周回はHTTP/1.1のpipeliningです。永続接続を前提に、応答を待たずに複数の リクエストを送ることを認めましたが、サーバーは受け取った順に応答を返す必要が ありました出典。のちのHTTP/2の仕様は、この方式が並行性を部分的にしか 解決せず先頭の詰まり(head-of-line blocking)が残ったこと、実際にはクライアントが 複数の接続を張って並行性を確保していたことを記録しています出典

2度目の周回はSPDYを出発点とするstream多重化です。HTTP/2は1本のTCP接続の上で 複数のstreamを混在させ、アプリケーション層の多重化を実現しました出典。 それでも輸送層がTCPである限り、1つのパケット損失がすべてのやり取りを止める 詰まりは残りました出典

3度目の周回は、輸送層ごと作り直す道です。QUICはstream単位の多重化とflow control を輸送層に組み込み、その上のHTTP/3は、あるstreamの損失が他のstreamを止めない形に 到達しました出典

この順路を3行で言うと——

1. 主題は一貫して「1本の接続で複数のリクエストを重ねる」。HTTP/1.1のpipelining (1997〜1999年)が最初の周回だった。

2. 周回ごとの差分は実装の層。応答順序に縛られたpipeliningから、アプリケーション層の stream多重化(SPDY・HTTP/2、2009〜2015年)へ、そして輸送層の多重化(QUIC・HTTP/3、 2021〜2022年)へと、詰まりの場所が一段ずつ深く特定されていった。

3. 周回はおよそ12年おきに始まっている(1997年・2009年・2021年)。同じ主題が 層を掘り下げながら回る、螺旋の系譜である。

Curated path

順番に読む

Entityは継続する対象、Eventは日付を持つ出来事です。

  1. 01Event仕様HTTP/1.1がRFC 2068として公開されるHTTP/1.1レビュー済み
  2. 02Entity仕様HTTP/1.1HTTP/1.0の相互運用性と性能上の制約に対処したHTTPの改訂仕様。レビュー済み
  3. 約2年後

    03Event仕様HTTP/1.1仕様がRFC 2616で改訂されるHTTP/1.1レビュー済み
  4. 約10年後

    04Event発表ChromiumプロジェクトがSPDYを発表するSPDYレビュー済み
  5. 05Entity技術SPDYWebページ読み込みの遅延削減を目的にGoogleが公開した実験的なアプリケーション層プロトコル。レビュー済み
  6. 約6年後

    06Event仕様HTTP/2がRFC 7540として公開されるHTTP/2レビュー済み
  7. 07Entity仕様HTTP/2多重化とヘッダー圧縮によってHTTPの転送効率と遅延を改善するメジャー改訂。レビュー済み
  8. 約6年後

    08Event仕様QUICトランスポートがRFC 9000として公開されるQUICレビュー済み
  9. 09Entity仕様QUICUDP上で多重化された安全な接続を提供する汎用トランスポートプロトコル。レビュー済み
  10. 約1年後

    10Event仕様HTTP/3がRFC 9114として公開されるHTTP/3レビュー済み
  11. 11Entity仕様HTTP/3HTTPの意味論をQUIC上へ写像し、接続内のストリーム単位で転送する仕様。レビュー済み

他の順路

読み終えたら、同じ詳細ページ群を別の観点で辿り直せます。

順路の一覧へ

書籍からの導線

関連書籍の情報は準備中です。この安定URLは変わらないため、書籍掲載後もそのまま接続できます。