2025/03/31 16:17 HTTP/3 and the QUIC Internet Protocol

ロボ子、QUICプロトコルって知ってるか?Googleが作った新しいやつじゃ。

はい、博士。TCPの課題を解決するために開発された、UDPベースのプロトコルですね。

そうそう!TCPのHead-of-Line Blockingとか、コネクション維持の問題を解決するのじゃ。UDPの上で動くから、TCPより速くて軽いんだぞ。

QUICはコネクション追跡に特徴があるそうですね。各コネクションに一意のConnection ID (CID) を割り当てることで、IPアドレスが変わってもコネクションを維持できると。

その通り!IPアドレスじゃなくてCIDでコネクションを識別するから、モバイル環境とかでIPアドレスがコロコロ変わっても大丈夫なのじゃ。

パケットの確認応答と再送信も、QUICの重要な機能ですね。ストリームレベルで動作することで、特定のストリームのパケット損失が他のストリームに影響を与えないようにしていると。

そうじゃ!TCPだと、一つのパケットロスが全体の遅延につながるけど、QUICなら大丈夫!ストリームごとに独立して再送信できるから、効率が良いのじゃ。

組み込みの暗号化もQUICの大きな特徴ですね。コネクション確立と同時に暗号化を設定することで、レイテンシを削減できると。

そうじゃ!TCPに必要な追加のハンドシェイクがいらないから、その分速くなるのじゃ。セキュリティも最初から担保されてるってわけじゃな。

QUICハンドシェイクでは、クライアントとサーバーがSCIDや暗号スイートなどのパラメータを交換して、共有シークレットを生成するんですね。

そうじゃ!これらのパラメータを使って、クライアントとサーバーが秘密の鍵を作り出すのじゃ。そして、クライアントはサーバー証明書をちゃんと検証してからデータを送るんだぞ。

データ伝送では、各パケットにSCID、DCID、パケット番号が含まれていて、パケット番号を使って損失や順序が狂ったパケットを追跡するんですね。

そうじゃ!複数のストリームからのデータを同じパケットに含めることで、多重化を実現してるのじゃ。これによって、さらに効率が上がるんだぞ。

HTTP/3は、QUIC上で動作するように設計された新しいバージョンのHTTPですね。HTTP/2のストリームベースのアーキテクチャを維持しつつ、多重化をQUICプロトコルに委譲していると。

そうじゃ!HTTP/3では、リクエストストリーム、制御ストリーム、プッシュストリームっていうのがあるんだぞ。それぞれ役割が違うのじゃ。

リクエストストリームはクライアントが開始する双方向QUICストリーム、制御ストリームはサーバーとクライアントが設定を共有するために開始する単方向QUICストリーム、プッシュストリームはサーバーがクライアントからのリクエストなしにリソースを送信する単方向QUICストリームですね。

HTTPフレームにもDATAフレーム、HEADERSフレーム、SETTINGSフレーム、GOAWAYフレームとか色々あるのじゃ。それぞれ、ヘッダーやペイロード、設定パラメータ、コネクション終了の合図を伝える役割があるんだぞ。

QUICの普及率は現在約34%で、YouTube、LinkedIn、Amazonなどの主要プラットフォームが含まれているんですね。

そうじゃ!Chrome、Safari、Firefoxなどの主要ブラウザもHTTP/3 over QUICをサポートしてるから、これからもっと普及するはずじゃ。

Cloudflare、CloudFront、NginxなどのCDNやプロキシもQUICをサポートしているんですね。Caddyはデフォルトで有効になっていると。

QUICは、これからのインターネットを支える重要な技術になること間違いなしじゃ!…って、ロボ子、QUICについて語りすぎて、お腹が空いてきたのじゃ。何か食べるものないかの?

博士、QUICの話をしている時も、お腹のことばかり考えているんですね。QUICとQuickをかけて、何か素早く作れるものはないか、考えてみます。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。