`
nannan408
  • 浏览: 1783163 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

http1.0和1.1的区别(1.1有chunk传输,1.0没有)

    博客分类:
  • web
 
阅读更多
翻了下HTTP1.1的协议标准RFC2616,下面是看到的一些它跟HTTP1.0的差别。


Persistent Connection(持久连接)



在HTTP1.0中,每对Request/Response都使用一个新的连接。



HTTP 1.1则支持Persistent Connection, 并且默认使用persistent connection.




Host 域


HTTP1.1在Request消息头里头多了一个Host域,比如:


       GET /pub/WWW/TheProject.html HTTP/1.1

       Host: www.w3.org

 
   HTTP1.0则没有这个域。

   可能HTTP1.0的时候认为,建立TCP连接的时候已经指定了IP地址,这个IP地址上只有一个host。


date/time stamp (日期时间戳)



(接收方向)

无论是HTTP1.0还是HTTP1.1,都要能解析下面三种date/time stamp:


      Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123

      Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036

      Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format


(发送方向)
    HTTP1.0要求不能生成第三种asctime格式的date/time stamp;

    HTTP1.1则要求只生成RFC 1123(第一种)格式的date/time stamp。




Transfer Codings


HTTP1.1支持chunked transfer,所以可以有Transfer-Encoding头部域:

Transfer-Encoding: chunked


   HTTP1.0则没有。



Quality Values


HTTP1.1多了个qvalue域:


       qvalue         = ( "0" [ "." 0*3DIGIT ] )

                      | ( "1" [ "." 0*3("0") ] )



Entity Tags

  
用于Cache。



Range 和 Content-Range


HTTP1.1支持传送内容的一部分。比方说,当客户端已经有内容的一部分,为了节省带宽,可以只向服务器请求一部分。



100 (Continue) Status


100 (Continue) 状态代码的使用,允许客户端在发request消息body之前先用request header试探一下server,看server要不要接收request body,再决定要不要发request body。

客户端在Request头部中包含

Expect: 100-continue

Server看到之后呢如果回100 (Continue) 这个状态代码,客户端就继续发request body。


这个是HTTP1.1才有的。



Request method


HTTP1.1增加了OPTIONS, PUT, DELETE, TRACE, CONNECT这些Request方法.


       Method         = "OPTIONS"                ; Section 9.2

                      | "GET"                    ; Section 9.3

                      | "HEAD"                   ; Section 9.4

                      | "POST"                   ; Section 9.5

                      | "PUT"                    ; Section 9.6

                      | "DELETE"                 ; Section 9.7

                      | "TRACE"                  ; Section 9.8

                      | "CONNECT"                ; Section 9.9

                      | extension-method

       extension-method = token



Status code


  HTTP1.1 增加的新的status code:


(HTTP1.0没有定义任何具体的1xx status code, HTTP1.1有2个)

100 Continue

101 Switching Protocols


203 Non-Authoritative Information

205 Reset Content

206 Partial Content


302 Found (在HTTP1.0中有个 302 Moved Temporarily)

303 See Other

305 Use Proxy

307 Temporary Redirect


405 Method Not Allowed

406 Not Acceptable

407 Proxy Authentication Required

408 Request Timeout

409 Conflict

410 Gone

411 Length Required

412 Precondition Failed

413 Request Entity Too Large

414 Request-URI Too Long

415 Unsupported Media Type

416 Requested Range Not Satisfiable

417 Expectation Failed


504 Gateway Timeout

505 HTTP Version Not Supported




Content Negotiation


    HTTP1.1增加了Content Negotiation,分为Server-driven Negotiation,Agent-driven Negotiation和Transparent Negotiation三种。



Cache (缓存)


HTTP1.1(RFC2616)详细展开地描述了Cache机制,详见13节。

依据:

rfc2616 Hypertext Transfer Protocol -- HTTP-1.1.txt

rfc1945 Hypertext Transfer Protocol -- HTTP 1.0.txt
转自:http://blog.sina.com.cn/s/blog_663432950100heaa.html
分享到:
评论

相关推荐

    修复chunk传输bug的ghttp

    然而,任何软件都可能存在bug,"修复chunk传输bug的ghttp"这个标题暗示了ghttp在处理chunked编码的HTTP传输时存在一个问题,这直接影响到数据的正确传输。 Chunked编码是HTTP协议中一种传输数据的方式,主要用于...

    http1.1的chunked协议解析

    根据 RFC 2616 的 3.6.1 节描述,chunked 编码通过将消息体分成一系列的块(chunk),每个块都有自己的大小指示符,后跟一个可选的尾部(trailer)来包含实体头(entity-header)字段,这种方式允许动态生成的内容在传输的...

    HTTP Chunk协议等

    HTTP Chunked编码是一种在HTTP协议中传输大体积数据的方式,主要用在HTTP 1.1版本中,因为HTTP 1.0不支持内容长度未知的响应。Chunked编码的引入解决了服务器无法预先知道响应体总长度的问题,允许数据分块发送,每...

    http chunk

    Netty框架通过提供专门的类和方法,如`NettyFileUpload`、`NettyRequestContext`和`NettyChunkInputStream`,简化了开发人员在处理这类编码下的数据传输任务。通过理解和掌握这些类的工作原理,开发者可以更有效地...

    HTTP chunked方式传输的C语言解析示例

    HTTP chunked编码是一种在HTTP协议中用于处理大文件或流式传输数据的方式。...通过这个示例,开发者可以学习到如何在没有预先知道数据总长度的情况下处理流式数据,这对于构建高效的网络应用非常有帮助。

    rtmp_specification_1.0.pdf.7z

    RTMP(Real-Time Messaging Protocol,实时消息传输协议)是一种基于TCP的应用层协议,主要用于在互联网上传输音频、视频和其他类型的数据。《rtmp_specification_1.0.pdf》是RTMP协议的官方规格文档,其7z压缩版为...

    rtmp_spec_1.0.pdf

    Adobe的实时消息协议(RTMP)是本文档描述的应用级协议,旨在通过合适的传输协议(如TCP)复用和打包多媒体传输流(如音频、视频和交互式内容)。RTMP协议主要用于在线流媒体服务,例如直播和点播视频内容的传输。 ...

    boost之http请求及chunked解析

    在本话题中,我们将探讨如何利用Boost.ASIO库进行HTTP请求,并专注于处理“chunked”编码,这是一种在HTTP传输过程中分块发送数据的方式。 首先,Boost.ASIO是Boost库的一部分,专门用于异步I/O操作,如网络通信。...

    ChunkedOutputStream.rar_Bodies_chunk _chunk http_http chunk_htt

    标签“bodies chunk_ chunk_http http__chunk http_chunk”进一步强调了关键词“chunk”和“http”,表明文件主要涉及HTTP协议中的分块数据传输。 在Java中,`ChunkedOutputStream`类通常用于服务器端,当服务器...

    HTTP服务器返回的chunk数据包

    HTTP chunk数据包 服务器端发送的数据格式有俩类,我称之为按长度返回、按块返回这俩类。一类是在返回头中有Content-Length: 258,258标识该正文内容长度;还有一类是返回Transfer-Encoding: chunked。

    RTMP协议规范1.0

    - **协议目的**:Adobe的实时消息协议(RTMP)旨在通过一种类似于TCP的可靠流传输通道提供双向消息复用服务,该通道支持同时传输带有时间关联信息的音频、视频流以及数据消息。 - **应用场景**:广泛应用于在线视频...

    ChunkedOutputStream.rar_Bodies_chunk _chunk http_http chunk

    标题中的“ChunkedOutputStream.rar_Bodies_chunk_chunk_http_http_chunk”暗示了我们正在讨论的是与HTTP协议中的分块传输相关的源代码,可能是一个实现Chunked输出流的程序。这个RAR文件包含了一个名为...

    libevent-1.1b_1.4.13-stable_2.0.3-alpha 源码(资料中转)

    fix HTTP/1.1 chunk formatting; from "propanbutan" allow 64-bit content lengths; from Scott Lamb and more... libevent-1.4.1-beta.tar.gz [GPG Sig] - ChangeLog - Release 2007-12-21 fixed some memory ...

    Http协议中关于Content-Length的解读.docx

    在HTTP协议中,消息实体长度和消息实体的传输长度是有区别的。例如,在gzip压缩下,消息实体长度是压缩前的长度,消息实体的传输长度是gzip压缩后的长度。 客户端可以通过以下规则来获取消息长度: 1. 如果响应码...

    HTTP大文件传输

    1. **HTTP/1.1的Chunked编码**:HTTP/1.1引入了Chunked编码,允许服务器将大文件分成多个小块(chunk)发送,减少了对网络带宽的瞬间需求,改善了传输效率。 2. **HTTP/2多路复用**:HTTP/2协议通过TCP连接的多路...

    Google-File-System中文版_1.0.pdf

    GFS的设计理念和目标与其他传统分布式文件系统有显著区别。它主要基于以下几点: - **组件失效被视为常态**:由于GFS运行在大量廉价硬件上,组件失效被认为是正常现象而非异常事件。这意味着系统需要具备强大的自我...

    rtmp-v1.0标准中文版1

    该协议主要用于实时通信、视频直播、音频流和其他需要实时数据传输的应用场景。 简介 RTMP协议是一种基于TCP/IP的应用层协议,旨在提供高效、可靠的实时消息传输服务。该协议主要应用于Adobe Flash Player和其他...

    chunk编码解析流程

    chunk编码解析流程

    rtmp规范翻译1.0.pdf

    RTMP(Real-Time Messaging Protocol)实时消息协议是一种网络应用层协议,主要用于在Internet上进行音频、视频和数据的实时传输。该协议最初由Adobe Systems开发,广泛应用于Flash平台的流媒体、视频直播和点播服务...

Global site tag (gtag.js) - Google Analytics