文章5:http协议中content-length 以及chunked编码分析
来源:互联网 发布:人不问知与不知 编辑:程序博客网 时间:2024/06/09 23:29
1)Entity Body2)Content-length3)Message Length4)content-length字段的作用
1)定义2)说明:3)格式:4)chunked编码的程序化表示
消息实体长度:即Entity-length,压缩之前的message-body的长度消息实体的传输长度:Content-length,压缩后的message-body的长度。
- 响应为1xx,204,304相应或者head请求,则直接忽视掉消息实体内容。
- 如果有Transfer-Encoding,则优先采用Transfer-Encoding里面的方法来找到对应的长度。比如说Chunked模式。
- “如果head中有Content-Length,那么这个Content-Length既表示实体长度,又表示传输长度。如果实体长度和传输长度不相等(比如说设置了Transfer-Encoding),那么则不能设置Content-Length。如果设置了Transfer-Encoding,那么Content-Length将被忽视”。这句话翻译的优点饶,其实关键就一点:有了Transfer-Encoding,则不能有Content-Length。
- Range传输。不关注,没详细看了:)
- 通过服务器关闭连接能确定消息的传输长度。(请求端不能通过关闭连接来指明请求消息体的结束,因为这样可以让服务器没有机会继续给予响应)。这种情况主要对应为短连接,即非keep-alive模式。
- HTTP1.1必须支持chunk模式。因为当不确定消息长度的时候,可以通过chunk机制来处理这种情况。
- 在包含消息内容的header中,如果有content-length字段,那么该字段对应的值必须完全和消息主题里面的长度匹配。
“The entity-length of a message is the length of the message-body before any transfer-codings have been applied”
也就是有chunk就不能有content-length 。 - 其实后面几条几乎可以忽视,简单总结后如下:
1、Content-Length如果存在并且有效的话,则必须和消息内容的传输长度完全一致。(经过测试,如果过短则会截断,过长则会导致超时。)
2、如果存在Transfer-Encoding(重点是chunked),则在header中不能有Content-Length,有也会被忽视。
3、如果采用短连接,则直接可以通过服务器关闭连接来确定消息的传输长度。(这个很容易懂)
结合HTTP协议其他的特点,比如说Http1.1之前的不支持keep alive。那么可以得出以下结论:
1、在Http 1.0及之前版本中,content-length字段可有可无。
2、在http1.1及之后版本。如果是keep alive,则content-length和chunk必然是二选一。若是非keep alive,则和http1.0一样。content-length可有可无。
4)chunked编码的程序化表示Chunk编码的格式如下:
Chunked-Body = *chunk
“0″ CRLF
footer
CRLF
chunk = chunk-size [ chunk-ext ] CRLF
chunk-data CRLFhex-no-zero = <HEX excluding “0″>
chunk-size = hex-no-zero *HEX
chunk-ext = *( “;” chunk-ext-name [ "=" chunk-ext-value ] )
chunk-ext-name = token
chunk-ext-val = token | quoted-string
chunk-data = chunk-size(OCTET)footer = *entity-header
即Chunk编码由四部分组成: 1、0至多个chunk块 ,2、“0″ CRLF ,3、footer ,4、CRLF . 而每个chunk块由:chunk-size、chunk-ext(可选)、CRLF、chunk-data、CRLF组成。
- 文章5:http协议中content-length 以及chunked编码分析
- 文章5:http协议中content-length 以及chunked编码分析
- 文章5:http协议中content-length 以及chunked编码分析
- http协议中content-length 以及chunked编码分析
- http协议中content-length 以及chunked编码分析
- http协议中content-length 以及chunked编码分析
- http协议中content-length 以及chunked编码分析
- http协议中content-length 以及chunked编码分析
- http协议中content-length 以及chunked编码分析
- http协议以及chunked编码分析
- HTTP协议中关于Chunked编码
- Http协议Content-Length
- HTTP协议之Chunked编码
- HTTP协议的chunked编码
- HTTP协议的chunked编码
- HTTP协议的chunked编码
- http返回头中content-length与Transfer-Encoding: chunked的问题释疑
- http返回头中content-length与Transfer-Encoding: chunked的问题释疑
- iOS 延时执行的方法
- tfs安装
- Android 屏幕适配的研究
- Maven学习总结(五)——聚合与继承
- elasticsearch依据字段长度过滤
- 文章5:http协议中content-length 以及chunked编码分析
- Linux系统之lspci命令介绍
- 真机测试问题
- BZOJ 2229:[Zjoi2011]最小割
- Texlive for Ubuntu
- Dom4j解析含前缀与名字空间的XML
- scala学习第一弹:基本语法和语法特性
- imageViewscaleType属性与adjustViewBounds属性
- es查询的时候控制相似度