Passa al contenuto principale

4. Transfer Codings (传输编码)

核心概念

传输编码 (Transfer Codings) 是对消息主体应用的编码转换,用于确保安全传输。与内容编码不同,传输编码是消息的属性,而非资源的属性。

4.1. Chunked Transfer Coding (分块传输编码)

ABNF 定义

chunked-body   = *chunk
last-chunk
trailer-part
CRLF

chunk = chunk-size [ chunk-ext ] CRLF
chunk-data CRLF
chunk-size = 1*HEXDIG
last-chunk = 1*("0") [ chunk-ext ] CRLF

chunk-data = 1*OCTET ; chunk-size 字节的数据

中文说明

分块编码将消息主体分为一系列块,每个块都有自己的大小指示符,后跟包含数据的块体。最后一个块是大小为零的特殊块,标志着消息的结束。

示例:

4\r\n
Wiki\r\n
5\r\n
pedia\r\n
0\r\n
\r\n

4.1.1. Chunk Extensions (块扩展)

chunk-ext      = *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
chunk-ext-name = token
chunk-ext-val = token / quoted-string

4.1.2. Chunked Trailer Part (分块尾部)

尾部 (trailer) 允许发送方在消息末尾包含额外的头部字段。

4.1.3. Decoding Chunked (解码分块)

接收方必须 (MUST) 能够解析和解码分块传输编码。

4.2. Compression Codings (压缩编码)

4.2.1. Compress Coding

  • compress: UNIX "compress" 程序使用的自适应 LZW 编码

4.2.2. Deflate Coding

  • deflate: [RFC1951] 定义的 "zlib" 格式

4.2.3. Gzip Coding

  • gzip: [RFC1952] 定义的 GNU zip 格式

4.3. TE Header Field (TE 头部字段)

TE        = #t-codings
t-codings = "trailers" / ( transfer-coding [ t-ranking ] )
t-ranking = OWS ";" OWS "q=" rank
rank = ( "0" [ "." 0*3DIGIT ] ) / ( "1" [ "." 0*3("0") ] )

用途: 客户端使用 TE 头部指示它愿意接受的传输编码(除了 chunked)。

4.4. Trailer Header Field (Trailer 头部字段)

Trailer = 1#field-name

发送方使用 Trailer 头部字段指示给定的头部字段集将出现在尾部中。


✅ Section 4 完成