免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4003 | 回复: 0
打印 上一主题 下一主题

HTTP 1.1的一些细节:传输编码与长度 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-15 15:41 |只看该作者 |倒序浏览

                HTTP 1.1的一些细节:传输编码与长度
Du XiaoGang
    HTTP 1.1中有两个实体头(Entity-Header)直接与编码相关,分别为Content-Encoding和Transfer-Encoding.

    先说Content-Encoding, 该头表示实体已经采用了的编码方式.
Content-Encoding是请求URL对应实体(Entity)本身的一部分.
比如请求URL为http://host/image.png.gz时,可能会得到的Content-Encoding为gzip.
Content-Encoding的值是不区分大小写的,目前HTTP
1.1标准中已包括的有gzip/compress/deflate/identity等.
   
与Content-Encoding头对应,HTTP请求中包含了一个Accept-Encoding头,该头用来说明用户代理(User-Agent,
一般也就是浏览器)能接受哪些类型的编码. 如果HTTP请求中不存在该头,服务器可以认为用户代理能接受任何编码类型.
    接下来重点描述Transfer-Encoding, 该头表示为了达到安全传输或者数据压缩等目的而对实体进行的编码. Transfer-Encoding与Content-Encoding的不同之处在于:
        1, Transfer-Encoding只是在传输过程中才有的,并非请求URL对应实体的本身特性.
        2, Transfer-Encoding是一个"跳到跳"头,而Content-Encoding是"端到端"头.
    该头的用途举例如,请求URL为http://host/abc.txt,服务器发送数据时认为该文件可用gzip方式压缩以节省带宽,接收端看到Transfer-Encoding为gzip首先进行解码然后才能得到请求实体.
    此外多个编码可能同时对同一实体使用,所以Transfer-Encoding头中编码顺序相当重要,它代表了解码的顺序过程.
同样,Transfer-Encoding的值也是不区分大小写的,目前HTTP
1.1标准中已包括的有gzip/compress/deflate/identity/chunked等.
    Transfer-Encoding中有一类特定编码:chunked编码.
该编码将实体分块传送并逐块标明长度,直到长度为0块表示传输结束, 这在实体长度未知时特别有用(比如由数据库动态产生的数据). HTTP
1.1标准规定,只要使用了Transfer-Encoding的地方就必须使用chunked编码,并且chunked必须为最后一层编码.
任何HTTP 1.1应用都必须能处理chunked编码.
    与Transfer-Encoding对应的请求头为TE,它主要表示请求发起者愿意接收的Transfer-Encoding类型. 如果TE为空或者不存在,则表示唯一能接受的类型为chunked.
    其他与Transfer-Encoding相关的头还包括Trailer,它与chunked编码相关,就不细述了.
    顾名思义,Content-Length表示传输的实体长度,以字节为单位(在请求方法为HEAD时表示会要发送的长度,但并不实际发送.).
Content-Length受Transfer-Encoding影响很大,只要Transfer-Encoding不为identity,则实际传输
长度由编码中的chunked决定,Content-Length即使存在也被忽略.
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/10449/showart_464896.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP