DNSを用いたHTTP2.0対応の確認方法、SRVレコードとSVCINFOレコード

20180201追記
asnokaze.hatenablog.com


HTTP2.0では通信を開始する前に、HTTP1.1で通信するかHTTP2.0で通信するかネゴシエーションする必要がある。

DNSレコードを利用してサーバがHTTP2.0に対応しているか確認する方法が提案されている。

SRVレコード

SRVレコードを用いる場合は以下のようになる。

SRVレコードのフォーマットはこのような形

サービス.プロトコル.ドメイン TTL Class レコード名 優先度 重さ ポート ターゲット
_http._tcp.example.com 3600 in srv 20 20 80 www.example.com



SRVレコードでは、サービス名やトランスポートのプロトコルの名前を指定して問い合わせを行うため、それらごとに問い合わせする必要がある。
また、アプリケーションレイヤのプロトコルのバージョンに関する情報も得られない。

SVCINFO

そこで、新たにSVCINFOというレコードが提案されている(仕様URL)。
HTTPbis interim meetingでも議論されたようだ(資料URL)。

SVCINFOレコードのフォーマットはこのような形

ドメイン TTL Class レコード名 インスタンスID 優先度 プロトコル ポート バージョン
www.example.com 3600 in svcinfo 1 10 tcp 80 1.1
www.example.com 3600 in svcinfo 1 5 tcp 49080 2.0
www.example.com 3600 in svcinfo 1 1 sctp 80 2.0

(インスタンスIDは、そられが同一のサービスであることを示す)



仕様の4章にいくつかレコードの例があるので見ると分かりやすいかも。