[追記] 2021年10月時点の変更点について新しく記事を書きました
asnokaze.hatenablog.com
==
もくじ
HTTP/2の改定作業
HTTP/2の仕様は2015年に「RFC7540 Hypertext Transfer Protocol Version 2 (HTTP/2)」として標準化されています。
RFCは公開されたあとに、エラッタが見つかることがあります。このようなエラッタを修正するために、新しくRFCを出し直すということが行われます。
HTTP/2においてもいくつかのエラッタが公開されています (参考リンク)。そのため、それらを修正するためのたたき台として、MozillaのMartin Thomson氏によって改訂版の草案となる「http2bis」が提出されています。
Martin Thomson氏のたたき台は用語の修正とエラッタの修正のみが含まれていますが、IETF HTTP WGのメーリングリストでこの改定作業に含める修正ポイントについて議論が行われています(参照: Time to refresh HTTP/2?)
その議論になっている修正ポイントについて目を通していきます
(これらは議論中であることに注意してください。改訂版に必ず含まれるわけではありません。)
修正点
優先度制御について
HTTP/3の標準化の中で、HTTPにおける優先度制御について見直しがされています。そのため、HTTP/2におけるweightとdependencyを用いた優先制御をHTTP/2の仕様に残すかという議論が出ています。
もちろん、相互運用上問題にならないようにフレームのフィールド定義などは変更しないでしょうが、仕様としてどのような言及になるかは気になるところです。
新しい優先制御方式については以前書いたとおりです。
asnokaze.hatenablog.com
TLS1.3および0-RTT
HTTP/2の仕様はTLS1.3より以前に標準化されています。そのため、それらについて言及されていません。
同様に0-RTTについても言及がありません。0-RTT時のサーバSETINGSといったトピックや、RFC8470などへの言及が考えられます。
GREASEのコードポイントの予約
GREASEの予約について。GREASEは以前書いたとおり
asnokaze.hatenablog.com
疑似ヘッダの扱い
定義されていない疑似ヘッダの使用は禁止されていましたが、RFC 8441 WebSockets over HTTP2では :protocol という疑似ヘッダを追加しています。
あとから出たRFCで追加定義を行うことは、仕様上問題ではありませんが、新しく :protocolの使用を許可するか、禁止というのを緩和するかの判断余地があります。
RFC 8441は以前書いた通り
asnokaze.hatenablog.com
セマンティクス仕様への参照
HTTP/2の頃は、HTTPのセマンティクスとしてHTTP/1.1の仕様であるRFC 7231を参照していました。
現在、IETF HTTP WGでは、HTTP/1.1の仕様からHTTPのセマンティクスと、HTTP/1.1のフォーマットの仕様を分離し下記のように整理する作業を行っています。
HTTP/3のdraftではすでにHTTPのセマンティクス定義として上記を参照するような形になっていますが、HTTP/2の改訂版ではどうするか議論の余地があります。
security considerations の追記
RFC発行後に見つかった実装上の脆弱性について、追記を行う。
例えば、CVE-2019-9511 ~ CVE-2019-9518 など
参考: https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-002.md