Alt-svc を使ったブートストラップ

Alternate service (Alt-svc:) ヘッダとそれに対応する ALT-SVC HTTP/2 フレームは、QUIC や HTTP/3 用に設計されたわけではありません。

これらはサーバーがクライアントに対して「ちなみに私は同じサービスをこのホスト、プロトコル、ポートでも実行していますよ」と伝えるための、既に設計・作成されているメカニズムの一部です。

詳細は RFC 7838 を参照してください。

このような Alt-svc 応答を受け取ったクライアントは、クライアントが代替プロトコルをサポートしておりかつそれを希望する場合に、指定されたプロトコルで当該ホストへバックグラウンドで並行接続をし、その接続が成功した場合には最初のコネクションの代わりにそのプロトコルへと切り替えを行います。

最初のコネクションが HTTP/2、または HTTP/1 を使用している場合、サーバーはクライアントに対してHTTP/3 で再接続可能であると伝えることができます。それは同じホストに対してかもしれませんし、そのオリジンを提供することが可能な別のホストかもしれません。

こうした Alt-svc 応答で与えられる情報には、ある特定の期間だけクライアントが提案された代替プロトコルを使用して後続のコネクションおよび要求を代替ホストに直接指示できるよう、有効期限が設けられます。

Example

HTTP サーバーはレスポンスヘッダに Alt-Svc: を含みます:

Alt-Svc: h3=":50781"

これは HTTP/3 がこのレスポンスを得るために使われた同じホスト名の UDP ポート 50781 番で利用可能であることを示します。

クライアントはその宛先ホストに対して QUIC コネクションの確立を試みることが可能で、成功した場合は最初の HTTP バージョンではなく、確立されたその代替接続でオリジンと通信を続けることができます。

Last updated