Rfc7230 Chunk
文章目录
前言
rfc7230是替换rfc2616的文档,主要描述http 1.1相关内容。本文是学习http chunk封装格式笔记。 http 引入chunk,可以流式发送数据包给客户端,如果服务端发一张大的图片给客户端渲染。 使用chunk可以一个包一个小包发给浏览器。浏览器解析到一个小包,就可以渲染出来。
一chunked数据格式
chunk数据格式rfc文档位于 https://tools.ietf.org/html/rfc7230#section-4.1
1. chunked-body
chunked-body
数据由chunk
数据,last-chunk
组成, trailer-part CRLF
组成
|
|
1.0 chunk
是主要数据段,由以下部分组成
chunk-size
必选[chunk-ext]
可选CRLF chunk-data CRLF
必选
|
|
1.1chunk-size
数据格式
由至少一个16进制字符
组成,所以这里遇到不是16进制
的直接报错。
|
|
1.2. chunk-data
这个没啥好聊的,bytes数据。
|
|
2.last-chunk
- 1*(“0”) 由1至多个0组成
[chunk-ext] CRLF
|
|
3. chunk-ext
回到上面可以看到[chunk-ext]是可选的。
chunked trailer part 由; chunk-ext-name
和["=" chunk-ext-val ]
组成
|
|
4. trailer-part
解析到trailer-part,把他当http header处理。但是下面的一些header是要忽略的 Transfer-Encoding, Content-Length, Host, Content-Encoding, Content-Type, Content-Range, and Trailer
|
|
二、解码伪代码
先读取chunk-size。然后读取chunk-size的数据。标准TLV解法。然后需要处理trailer-field数据
|
|
文章作者 guonaihong
上次更新 2021-01-16