[1] 接続序文は、 HTTP/2接続の最初に送信するバイト列です。
[4] クライアントとサーバーは、使っているプロトコルの最終確認と HTTP/2接続の初期設定の確立のため、接続序文を送信する必要があります >>2。
[5] クライアント接続序文は、次の24バイトの列です >>2。
[7] クライアントはこの直後に SETTINGS
フレームを送信しなければなりません >>2。
このフレームは空でも構いません >>2。
[3] HTTP/2接続の最初にクライアントとサーバーがそれぞれ送信します >>15。
[16] クライアント接続序文とサーバー接続序文は、互いの到着を待たずに送信できます。
[11] 妥当でない接続序文を受信したら、接続エラー PROTOCOL_ERROR
としなければなりません。 peer が HTTP/2
では無いので、 GOAWAY
フレームは省略しても構いません。 >>2
[9] peer から接続序文の一部として送信された SETTINGS
フレームを受信したら、自身の接続序文を送信した後、 acknowledge
しなければなりません >>2。
[17] Chrome でも Firefox でも、接続序文の SETTINGS
として受信するフレームは ACK
フラグが設定されていてもいなくても良いようです。
[18] 接続序文についてエラーがあった時、接続エラー PROTOCOL_ERROR
とするようです。 GOAWAY
フレームは送られないことが多いようですが、
既知フレームのように見えてエラーの時は送られるようです。しかしその条件は
Firefox と Chrome で一致していないようです。
[19] Chrome も Firefox も接続序文の受信を待たずに最初の要求を送信します。
接続序文の特別なタイムアウトは無いようで、 Firefox は定期的な PING
の送信に返答がなければ接続エラー INTERNAL_ERROR
とします。
[20] Firefox は、 SETTINGS_INITIAL_WINDOW_SIZE
= 131072
と SETTINGS_MAX_FRAME_SIZE
= 16384 = 214 (= 初期値) を送信します。
[21] Chrome は、 SETTINGS_MAX_CONCURRENT_STREAMS
= 1000
と SETTINGS_INITIAL_WINDOW_SIZE
= 6291456 を送信します。
PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n
を表しています >>2。 大部分の HTTP/1.1 や HTTP/1.0 のサーバーや中間器が以後のフレームを処理しようとしなくなるものが選ばれました >>2。PRI
は本目的のためのダミーの要求メソッドです >>13。 HTTP 以外のプロトコルへの cross-protocol attack を防ぐものではありません >>12。