19. フレームタイプとフォーマット
19. フレームタイプとフォーマット
セクション 12.4 で説明したように、パケットには1つ以上のフレームが含まれます。このセクションでは、コアQUICフレームタイプのフォーマットとセマンティクスについて説明します。
19.1 PADDINGフレーム
PADDINGフレーム (type=0x00) には意味的価値がありません。PADDINGフレームは、パケットのサイズを増やすために使用できます。パディングは、Initialパケットを必要最小サイズに増やすため、または保護されたパケットのトラフィック分析に対する保護を提供するために使用できます。
19.2 PINGフレーム
エンドポイントは、PINGフレーム (type=0x01) を使用して、ピアがまだ生きているかを確認したり、ピアへの到達可能性を確認したりできます。PINGフレームには追加のフィールドは含まれません。
19.3 ACKフレーム
受信者は、ACKフレーム (タイプ 0x02 および 0x03) を送信して、受信して処理したパケットについて送信者に通知します。ACKフレームには、1つ以上のACK範囲が含まれます。ACK範囲は確認応答されたパケットを識別します。
19.3.1 ACK範囲
各ACK範囲は、パケット番号の降順でGapとACK Range Lengthの値が交互に構成されます。
19.3.2 ECNカウント
ACKフレームは、最下位ビット(つまり、タイプ 0x03)を使用してECNフィードバックを示し、パケットのIPヘッダーでECT(0)、ECT(1)、またはCEの関連するECNコードポイントを持つQUICパケットの受信を報告します。
19.4 RESET_STREAMフレーム
エンドポイントは、RESET_STREAMフレーム (type=0x04) を使用して、ストリームの送信部分を突然終了します。
19.5 STOP_SENDINGフレーム
エンドポイントは、STOP_SENDINGフレーム (type=0x05) を使用して、アプリケーション要求に従って受信時に着信データが破棄されていることを伝えます。
19.6 CRYPTOフレーム
CRYPTOフレーム (type=0x06) は、暗号化ハンドシェイクメッセージを送信するために使用されます。0-RTTを除くすべてのパケットタイプで送信できます。
19.7 NEW_TOKENフレーム
サーバーは、NEW_TOKENフレーム (type=0x07) を送信して、将来の接続のためのInitialパケットのヘッダーで送信するトークンをクライアントに提供します。
19.8 STREAMフレーム
STREAMフレームは、ストリームを暗黙的に作成し、ストリームデータを運びます。STREAMフレームは、0b00001XXXの形式(または0x08から0x0fまでの値のセット)を取ります。
19.9 MAX_DATAフレーム
MAX_DATAフレーム (type=0x10) は、フロー制御で使用され、接続全体で送信できるデータの最大量をピアに通知します。
19.10 MAX_STREAM_DATAフレーム
MAX_STREAM_DATAフレーム (type=0x11) は、フロー制御で使用され、ストリーム上で送信できるデータの最大量をピアに通知します。
19.11 MAX_STREAMSフレーム
MAX_STREAMSフレーム (type=0x12 または 0x13) は、特定のタイプのストリームの累積数をピアに通知します。
19.12 DATA_BLOCKEDフレーム
送信者は、データを送信したいが接続レベルのフロー制御により送信できない場合、DATA_BLOCKEDフレーム (type=0x14) を送信すべきです (SHOULD)。
19.13 STREAM_DATA_BLOCKEDフレーム
送信者は、データを送信したいがストリームレベルのフロー制御により送信できない場合、STREAM_DATA_BLOCKEDフレーム (type=0x15) を送信すべきです (SHOULD)。
19.14 STREAMS_BLOCKEDフレーム
送信者は、ストリームを開きたいがピアによって設定された最大ストリーム制限により開けない場合、STREAMS_BLOCKEDフレーム (type=0x16 または 0x17) を送信すべきです (SHOULD)。
19.15 NEW_CONNECTION_IDフレーム
エンドポイントは、NEW_CONNECTION_IDフレーム (type=0x18) を送信して、接続の移行時にリンク性を断つために使用できる代替接続IDをピアに提供します。
19.16 RETIRE_CONNECTION_IDフレーム
エンドポイントは、RETIRE_CONNECTION_IDフレーム (type=0x19) を送信して、ピアによって発行された接続IDを今後使用しないことを示します。
19.17 PATH_CHALLENGEフレーム
エンドポイントは、PATH_CHALLENGEフレーム (type=0x1a) を使用して、ピアへの到達可能性を確認したり、接続移行中のパス検証を行ったりできます。
19.18 PATH_RESPONSEフレーム
PATH_RESPONSEフレーム (type=0x1b) は、PATH_CHALLENGEフレームに応答して送信されます。
19.19 CONNECTION_CLOSEフレーム
エンドポイントは、CONNECTION_CLOSEフレーム (type=0x1c または 0x1d) を送信して、接続がクローズされていることをピアに通知します。タイプ0x1cのCONNECTION_CLOSEフレームは、QUICレイヤーのエラー、またはエラーがないことを通知するために使用されます。タイプ0x1dのCONNECTION_CLOSEフレームは、QUICを使用するアプリケーションのエラーを通知するために使用されます。
19.20 HANDSHAKE_DONEフレーム
サーバーは、HANDSHAKE_DONEフレーム (type=0x1e) を使用して、クライアントへのハンドシェイクの確認を通知します。
19.21 拡張フレーム
QUICフレームは自己記述エンコーディングを使用しません。したがって、エンドポイントは、パケットを正常に処理する前にすべてのフレームの構文を理解する必要があります。これにより、フレームの効率的なエンコーディングが可能になりますが、エンドポイントはピアに未知のタイプのフレームを送信できないことを意味します。
新しいタイプのフレームを使用したいQUICへの拡張は、最初にピアがフレームを理解できることを確認しなければなりません (MUST)。エンドポイントは、トランスポートパラメータを使用して、拡張フレームタイプを受信する意欲を通知できます。