HTTP chunked传输如何表示结束

一般服务器响应消息都会在HTTP响应头部加上Content-Length,这样客户端就知道要接收多少数据。这也要求一定要先发送响应头部,再发送响应内容。

但并不是所有场景都能事先知道响应包长度,比如动态页面,事先并不知晓响应包大小,这样也无法在响应头部设置Content-Length,这时可通过chunked来进行传输。

那么通过chunked方式传输时,客户端如何感知包传输完了呢?

一个chunk包有两部分组成:前部分为包大小,后部分为包内容。当包的大小为0时,当客户端收到一个包大小为0的chunk包时,表示包传输完了。

chunk包格式:

[chunk size][\r\n][chunk data][\r\n]

猜你喜欢

转载自blog.csdn.net/fengshenyun/article/details/107465823