18. 传输参数编码
18. 传输参数编码 (Transport Parameter Encoding)
[QUIC-TLS] 中定义的 quic_transport_parameters extension 的 extension_data field 包含 QUIC transport parameters. 它们被编码为一组 transport parameter 序列, 如图 20 所示:
Transport Parameters {
Transport Parameter (..),
...
}
图 20: Transport Parameters 序列
每个 transport parameter 被编码为一个 (identifier, length, value) 元组, 如图 21 所示:
Transport Parameter {
Transport Parameter ID (i),
Transport Parameter Length (i),
Transport Parameter Value (..),
}
图 21: Transport Parameter 编码
Transport Parameter Length field 包含 Transport Parameter Value field 的长度, 以字节为单位.
QUIC 将 transport parameters 编码为一个字节序列, 随后将其包含在加密握手中.
18.1 保留的 Transport Parameters
identifier 形式为 31 * N + 27 的 transport parameters (其中 N 为整数值) 被保留, 用于检验未知 transport parameters 必须被忽略这一要求. 这些 transport parameters 没有语义, 可以携带任意值.
18.2 Transport Parameter 定义
本节详细说明本文档中定义的 transport parameters.
original_destination_connection_id (0x00): 此参数是客户端发送的第一个 Initial packet 中 Destination Connection ID field 的值.
max_idle_timeout (0x01): 最大 idle timeout 是一个以毫秒为单位的值, 编码为整数. 如果该值不存在或为零, 则禁用 idle timeout.
stateless_reset_token (0x02): stateless reset token 用于验证 stateless reset; 参见第 10.3 节.
max_udp_payload_size (0x03): maximum UDP payload size 参数是一个整数值, 用于限制端点愿意接收的 UDP payload 大小.
initial_max_data (0x04): initial maximum data 参数是一个整数值, 包含可在该连接上发送的数据总量上限的初始值.
initial_max_stream_data_bidi_local (0x05): 此参数是一个整数值, 指定本地发起的双向流的初始流量控制限制.
initial_max_stream_data_bidi_remote (0x06): 此参数是一个整数值, 指定对端发起的双向流的初始流量控制限制.
initial_max_stream_data_uni (0x07): 此参数是一个整数值, 指定单向流的初始流量控制限制.
initial_max_streams_bidi (0x08): initial maximum bidirectional streams 参数是一个整数值, 包含接收此 transport parameter 的端点被允许发起的双向流初始最大数量.
initial_max_streams_uni (0x09): initial maximum unidirectional streams 参数是一个整数值, 包含接收此 transport parameter 的端点被允许发起的单向流初始最大数量.
ack_delay_exponent (0x0a): acknowledgment delay exponent 是一个整数值, 表示用于解码 ACK frame (第 19.3 节) 中 ACK Delay field 的指数. 如果该值不存在, 则假定默认值为 3.
max_ack_delay (0x0b): maximum acknowledgment delay 是一个整数值, 表示端点延迟发送确认的最大时间量, 以毫秒为单位. 如果该值不存在, 则假定默认值为 25 毫秒.
disable_active_migration (0x0c): 如果端点在握手期间使用的地址上不支持 active connection migration (第 9 节), 则包含 disable active migration transport parameter.
preferred_address (0x0d): server's preferred address 用于在握手结束时实现服务器地址变更, 如第 9.6 节所述.
active_connection_id_limit (0x0e): active connection ID limit 是一个整数值, 指定端点愿意存储的来自对端的 connection IDs 最大数量.
initial_source_connection_id (0x0f): 这是端点在其为该连接发送的第一个 Initial packet 的 Source Connection ID field 中包含的值.
retry_source_connection_id (0x10): 这是服务器在 Retry packet 的 Source Connection ID field 中包含的值.