HTTP Header(协议头)与Keep-Alive模式详解
2012-07-12 14:08:04   来源:我爱运维网   评论:0 点击:

1、什么是Keep-Alive模式?我们知道HTTP协议采用请求-应答模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建...

footer = *entity-header

即Chunk编码由四部分组成: 1、0至多个chunk块 ,2、"0" CRLF ,3、footer ,4、CRLF . 而每个chunk块由:chunk-size、chunk-ext(可选)、CRLF、chunk-data、CRLF组成。

4、响应内容长度的总结

上面2种方法都可归纳为是如何判断http响应内容的大小与数量。RFC 2616 对HTTP响应内容的长度总结如下:一个HTTP响应内容的transfer-length(传输长度)是指内容的message-body(消息体)的长度。当应用 transfer-coding(传输编码),每个响应内容中的message-body(消息体)的长度(transfer-length)由以下几种情况决定(优先级由高到低):

  • 任何不含有消息体的响应(如1XXX、204、304等响应和任何头(HEAD,首部)请求的响应内容),总是由一个空行(CLRF)结束。
  • 若出现Transfer-Encoding头字段 并且值为非“identity”,那么transfer-length由“chunked” 传输编码定义,除非消息由于关闭连接而终止。
  • 若出现Content-Length头字段,其值表示entity-length(实体长度)和transfer-length(传输长 度)。如果这两个长度的大小不一样(i.e.设置了Transfer-Encoding头字段),那么将不能发送Content-Length头字段。并 且如果同时收到了Transfer-Encoding字段和Content-Length头字段,那么必须忽略Content-Length字段。
  • 若响应使用媒体类型“multipart/byteranges”,并且transfer-length 没有另外指定,那么这种自定界(self-delimiting)媒体类型定义transfer-length 。除非发送者知道接收者能够解析该类型,否则不能使用该类型。
  • 由服务器关闭连接确定响应长度。(注意:关闭连接不能用于确定请求响应的结束,因为服务器不能再发响应内容给客户端了。)

为了兼容HTTP/1.0应用程序,HTTP/1.1的请求响应中必须包含一个合法的Content-Length头字段,除非知道应用程序兼容 HTTP/1.1。一个请求响应的Content-Length字段没有给定,即服务器不能判断响应的长度,服务器应用400 (bad request) 来响应;或者服务器坚持希望有一个合法的Content-Length字段,用 411 (length required)来响应。

所有HTTP/1.1的接收者应用程序必须接受“chunked” transfer-coding (传输编码),因此当不能事先知道响应内容长度,允许使用这种机制来传输内容。响应头不应该够同时包含 Content-Length字段和non-identity transfer-coding。如果一个响应同时包含non-identity transfer-coding和Content-Length ,必须忽略Content-Length 。

5、HTTP头字段总结

总结一下HTTP协议的头部字段。

  • 1、 Accept:请求头字段,告诉服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type。
  • 2、 Accept-Charset: 请求头字段

相关热词搜索:HTTP Header 协议头 Keep-Alive

上一篇:使用Nginx自动裁剪图片
下一篇:静态图片优化技术研究

分享到: 收藏
iTechClub广告