* 仕様書

[REFS[
- [13] [CITE@en[RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)]] ([TIME[2015-05-15 10:14:54 +09:00]] 版) <https://tools.ietf.org/html/rfc7540#section-4.1>
- [82] [CITE@en[RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)]] ([TIME[2015-05-15 10:14:54 +09:00]] 版) <https://tools.ietf.org/html/rfc7540#section-4.2>
- [1] '''[CITE@en[RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)]] ([TIME[2015-05-15 10:14:54 +09:00]] 版) <https://tools.ietf.org/html/rfc7540#section-6.10>'''
]REFS]

* 意味

[2] [CODE[[[CONTINUATION]]]] [[フレーム]] ([[フレーム型]] [CODE[[[0x9]]]])
は、続きの [[header block fragment]] を送るために使います [SRC[>>1]]。

* 構文

[10] [[ストリーム]]と関連付けなければ[['''なりません''']] [SRC[>>1]]。
[[ストリーム識別子]]は [CODE[[[0x0]]]] にはできません。

[5] 次の[[フラグ]]があります。
[FIG(list members)[
:[6] [CODE[[[END_HEADERS]]]] ([CODE[[[0x4]]]] = 第2ビット):
設定されていれば、 [[header block]] の終わりであることを表します [SRC[>>1]]。
[7] [CODE[[[END_HEADERS]]]] が設定されていなければ、
[CODE[[[CONTINUATION]]]] [[フレーム]]が次に来なければ[['''なりません''']]
[SRC[>>1]]。
]FIG]

[14] 他の[[フラグ]]は、0 でなければ[['''なりません''']]。
[[受信者]]は、無視しなければ[['''なりません''']]。 [SRC[>>13]]

[FIG(packet)[
:width:8

= 1 0
= 1 0
= 1 [CODE[[[END_HEADERS]]]]
= 1 0
= 1 0
= 1 0
= 1 0
= 1 0
]FIG]

[4] [[payload]] は、[RUBYB[[[ヘッダーブロック素片]]]@en[Header Block Fragment]]です [SRC[>>1]]。
先頭ではない[[ヘッダーブロック素片]]を表します。

[FIG(packet)[
:width:32

= 32... [[ヘッダーブロック素片]]
]FIG]

* 文脈

[3] [CODE[[[CONTINUATION]]]] [[フレーム]]は、
[CODE[[[END_HEADERS]]]] フラグが設定されていない
[CODE[[[HEADERS]]]]、
[CODE[[[PUSH_PROMISE]]]]、
[CODE[[[CONTINUATION]]]]
[[フレーム]]の後に何個でも送信できます。
前にこれらの[[フレーム]]がなければ[['''なりません''']]。 [SRC[>>1]]

* 処理

[81] [[受信者]]は、[[payload]] が短すぎるか、[[設定]] [CODE[[[SETTINGS_MAX_FRAME_SIZE]]]]
より長いなら、[[接続エラー]] [CODE[[[FRAME_SIZE_ERROR]]]] としなければ[['''なりません''']]
[SRC[>>82]]。

[12] [CODE[[[END_HEADERS]]]] フラグが設定されていない
[CODE[[[HEADERS]]]]、
[CODE[[[PUSH_PROMISE]]]]、
[CODE[[[CONTINUATION]]]] [[フレーム]]の後でなければ、
[[接続エラー]] [CODE[[[PROTOCOL_ERROR]]]] としなければ[['''なりません''']] [SRC[>>1]]。

[11] [[受信者]]は、[[ストリーム識別子]]が [CODE[[[0x0]]]] なら、
[[接続エラー]] [CODE[[[PROTOCOL_ERROR]]]] としなければ[['''なりません''']] [SRC[>>1]]。

[9] [[ストリーム]]の状態遷移の項、[[ヘッダーリスト]]の項も参照。

[8] [[受信者]]は、 [CODE[[[END_HEADERS]]]] [[フレーム]]が設定されていない場合、
次が [CODE[[[CONTINUATION]]]] 以外の[[フレーム]]だったり、
違う[[ストリーム]]だったりした場合、[[接続エラー]] [CODE[[[PROTOCOL_ERROR]]]]
としなければ[['''なりません''']] [SRC[>>1]]。

[15] [CITE@en[ContinuationProposals · http2/http2-spec Wiki]]
([TIME[2015-09-24 21:00:06 +09:00]] 版)
<https://github.com/http2/http2-spec/wiki/ContinuationProposals>