HTTP Header(协议头)与Keep-Alive模式详解
2012-07-12 14:08:04 来源:我爱运维网 评论:0 点击:
3、判断请求返回内容/长度的大小
Keep-Alive模式,客户端如何判断请求所得到的响应数据已经接收完成(或者说如何知道服务器已经发生完了数据)?
我们知道,Keep-Alive模式发送完数据HTTP服务器不会自动断开连接,所有不能使用返回EOF(-1)来判断!下面介绍两种来判断方法。
3.1、使用HTTP响应头部字段Conent-Length
HTTP响应头部字段Conent-Length表示实体内容长度,客户端(服务器)可以根据这个值来判断数据是否接收完成。但是若响应部部中没有Conent-Length,该如何来判断呢?在什么情况下会没有Conent-Length?下面会介绍。
3.2、使用HTTP响应头部字段Transfer-Encoding
当客户端向服务器请求一个静态页面或者一张图片时,服务器可以很清楚的知道内容大小,然后通过Content-length这个HTTP头部字段告诉客户端需要接收多少数据。但是若是动态网页时,服务器不可能预先知道内容大小,这时就可使用Transfer-Encoding:chunk模式来传输数据,即:一边产生数据,一边发给客户端,服务器需使用"Transfer-Encoding: chunked"的模式来代替Content-Length。
chunked编码将数据分成一块一块的发送。Chunked编码由若干个Chunk串连而成,使用一个标明长度为0 的chunk标示结束。每个Chunk分为头部和正文两部分,头部内容指定正文的字符总数(十六进制的数字 )和数量单位(一般不写),正文部分是指定长度的实际内容,两部分之间用回车换行(CRLF) 隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,包含一些附加的Header信息(通常可以直接忽略)。
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)
相关热词搜索:HTTP Header 协议头 Keep-Alive
上一篇:使用Nginx自动裁剪图片
下一篇:静态图片优化技术研究
评论排行
- ·Windows(Win7)下用Xming...(92)
- ·使用jmx client监控activemq(20)
- ·Hive查询OOM分析(14)
- ·复杂网络架构导致的诡异...(8)
- ·使用 OpenStack 实现云...(7)
- ·影响Java EE性能的十大问题(6)
- ·云计算平台管理的三大利...(6)
- ·Mysql数据库复制延时分析(5)
- ·OpenStack Nova开发与测...(4)
- ·LTPP一键安装包1.2 发布(4)
- ·Linux下系统或服务排障的...(4)
- ·PHP发布5.4.4 和 5.3.1...(4)
- ·RSYSLOG搭建集中日志管理服务(4)
- ·转换程序源码的编码格式[...(3)
- ·Linux 的木马程式 Wirenet 出现(3)
- ·Nginx 发布1.2.1稳定版...(3)
- ·zend framework文件读取漏洞分析(3)
- ·Percona Playback 0.3 development release(3)
- ·运维业务与CMDB集成关系一例(3)
- ·应该知道的Linux技巧(3)