HTTP协议扫盲(九 )HTTP1.1响应的Transfer-Encoding=chunked方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议扫盲(九 )HTTP1.1响应的Transfer-Encoding=chunked方式相关的知识,希望对你有一定的参考价值。

一、背景知识

1、chunked编码

分块传输编码(Chunked transfer encoding)是只在HTTP协议1.1版本(HTTP/1.1)中提供的一种数据传送机制。以往HTTP的应答中数据是整个一起发送的,并在应答头里Content-Length字段标识了数据的长度,以便客户端知道应答消息的结束。

2、好处

对于动态生成的应答内容来说,内容在未生成完成前总长度是不可知的。因此需要先缓存生成的内容,再计算总长度填充到Content-Length,再发送整个数据内容。这样显得不太灵活,而使用分块编码则能得到改观。
分块传输编码允许服务器在最后发送消息头字段。例如在头中添加散列签名。
对于压缩传输传输而言,可以一边压缩一边传输。

3、格式

如果在http的消息头里Transfer-Encoding为chunked,那么就是使用此种编码方式。接下来会发送数量未知的块,每一个块的开头都有一个十六进制的数,表明这个块的大小,然后接CRLF("\r\n")。然后是数据本身,数据结束后,还会有CRLF两个字符。有一些实现中,块大小的十六进制数和CRLF之间可以有空格。
最后一块的块大小为0,表明数据发送结束。最后一块不再包含任何数据,但是可以发送可选的尾部,包括消息头字段。消息最后以CRLF结尾。

4、案例

技术分享

技术分享

二、编码发送

 

三、编码接收

 




以上是关于HTTP协议扫盲(九 )HTTP1.1响应的Transfer-Encoding=chunked方式的主要内容,如果未能解决你的问题,请参考以下文章

前端01.http协议回顾

http协议以及http1.0和http1.1的区别

Http协议与Servlet简介

HTTP协议响应消息的常用状态码转

HTTP 中的多重响应合法吗?

TCP