【ウェブトランスポート】

WebTransport とは?

最終更新:
💡 ストリームとデータグラムを用途で使い分ける

ブラウザーとサーバーの間で、複数のストリームやデータグラムを使って通信するためのAPI。HTTP/3上の実装では、QUICを利用して順序のある信頼性付き通信と、配送・順序を保証しない通信を使い分ける。

📌 このページのポイント
通信の配送条件を使い分ける ブラウザー APIを利用 対応サーバー WebTransport HTTP/3上の利用例:下でQUICを使う ストリーム1 1 2 3 ストリーム2 1 2 3 ストリーム内でバイト列の順序を保つ データグラム A × C データグラムの配送・順序は保証しない 帯域や輻輳の影響は共有する
図は送信方向の一例。複数ストリームでも速度や無干渉は保証されない。
ひよこ ひよこ
WebTransportはWebSocketの後継なの?
ペンギン先生 ペンギン先生
どちらもブラウザーとサーバーの通信に使えるけれど、単に置き換えるための同じAPIではないよ。WebTransportは複数のストリームや、一方向のストリーム、データグラムも扱えるんだ。
ひよこ ひよこ
必ずHTTP/3だけで動くの?
ペンギン先生 ペンギン先生
ここではブラウザーでのHTTP/3上の利用を中心に説明するね。下ではQUICを使う。一方、W3CのAPI仕様はHTTP/2上のセッションも扱うので、名前だけで下のプロトコルを決め付けないようにしよう。
ひよこ ひよこ
ストリームとデータグラムはどう選ぶの?
ペンギン先生 ペンギン先生
ストリームは信頼性があり、ストリーム内のバイト列の順序を保つよ。データグラムは配送や順序を保証しない。例えば、欠けると困る情報と、古いものより新しい位置情報を優先する設計では、使い分けを考えられるんだ。
ひよこ ひよこ
複数ストリームなら通信は互いに影響しない?
ペンギン先生 ペンギン先生
QUICでは、あるストリームの欠けたデータを待つことが、そのまま別のストリームの順序待ちにはならないよ。ただし回線の帯域や輻輳制御などは共有するので、他の通信が一切影響を受けないという保証ではないんだ。
ひよこ ひよこ
導入すれば必ず速くなる?
ペンギン先生 ペンギン先生
アプリの送る内容やネットワーク、実装によるよ。対応するブラウザーとWebTransport対応サーバーが必要で、ブラウザーのAPIはセキュアなコンテキストで使う。必要な機能や配送条件を決め、実際の環境で確かめよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「WebTransport」って出てきたら「複数のストリームとデータグラムを使い分けるWeb通信API」と思えばだいたいOK!
📖 おまけ:英語の意味
「WebTransport」 = Webのデータ転送のためのAPIの名前
💬 ブラウザーからサーバーへデータを送り、受け取るためのインターフェースを表すよ。APIと、その下で使う通信プロトコルを分けて考えよう。

参考資料

← 用語集にもどる