传输控制
http是基于tcp的服务,tcp已经有了很有名的流量控制、拥塞控制等传输控制,因此基本上http是不需要关注传输控制的。但有一种情况比较例外,该例外是分块传输。分块传输只在HTTP/1.1中提供。
有的时候服务器生成HTTP回应是无法确定信息大小的,这时用Content-Length就无法事先写入长度,而需要实时生成消息长度,这时服务器一般采用Chunked编码。在进行Chunked编码传输时,回复消息的头部有transfer-coding并定义为Chunked,表示将用Chunked编码传输内容。
Chunked编码使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。每个Chunk分为头部和正文两部分,头部内容指定下一段正文的字符总数(十六进制的数字)和数量单位(一般不写),正文部分就是指定长度的实际内容,两部分之间用回车换行(CRLF)隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,是一些附加的Header信息(通常可以直接忽略)。
HTTP HEADERS
<CRLF>
1E<CRLF>
DATA1
<CRLF>
ED<CRLF>
DATA2
<CRLF>
0<CRLF>
<CRLF>
参考内容:
1. 《HTTP权威指南》
2. http://blog.csdn.net/zztfj/article/details/5906168