首页 > http&spdy, 网络协议 > HTTP 2.0(续)

HTTP 2.0(续)

2012年12月15日 发表评论 阅读评论 3,426 次浏览

终于把HTTP 2.0的草案文档看完了,当然,其实当前也就是SPDY:http://tools.ietf.org/html/draft-ietf-httpbis-http2-00,个人感觉它的核心也就是Framing Layer,正是因为有了这个所谓的帧管理层,所以才相对于HTTP而言,延伸出其它诸多改进。下面描述一下基本的东东,其它具体的,比如连接半关闭、流优先级等遇到了再说。

帧管理层在可靠传输层之上,比如TCP协议(下文以其为例,其实SPDY默认被设计为使用SSL安全协议),当客户端需要利用HTTP 2.0和服务器进行通信时,由客户端首先发起并建立TCP连接,这个TCP连接应该被持续保持,直到客户端用户离开与当前连接相关联的所有网页,或者服务器主动关闭该连接。

帧层抽象在这个持久的TCP连接内,为了让客户端与服务器之间的多个请求和响应数据在帧层同时进行传输,即多个同时进行(多路复用),因此必须通过frame帧的方式来对它们各自进行封装和标记,同时为了对流进行控制,比如新建一个流,因此还必须有承载SPDY本身所需要的控制信息的特殊帧,即控制帧,相比面向连接的HTTP协议,SPDY协议可以说是面向frame帧的。

控制帧承载的数据除了是会被SPDY协议自身逻辑所使用的控制信息外,还可以包含HTTP协议层的头部信息,比如request请求头或response响应头。
另外的包含纯粹HTTP数据(比如请求体或响应体)的帧为数据帧。控制帧和数据帧的长度用24bit无符号整型标记,因此最大可以有16MB + 8字节。

一次客户端/服务器端的交互过程大致如下:
1,客户端向服务器端发送一个SYN_STREAM控制帧,并且在该控制帧内包含HTTP请求头信息。
2,服务器端向客户端回复一个SYN_REPLY控制帧,并且在该控制帧内包含HTTP响应头信息。
3,服务器端向客户端发送一个或几个数据帧,数据帧内包含具体的HTTP响应体信息。

在上面步骤1之前,客户端可能会先发送SETTINGS控制帧进行配置协商。

有了上面这些基础,相比HTTP而言,SPDY就将有一个突出的优势,即客户端与服务器端的异步交互。在HTTP那里,当前一个请求未完成时,客户端无法发起后一个请求(虽然pipelining在一定程度上缓解了这个问题),而对于SPDY就完全不一样了,通过SYN_STREAM控制帧建立多个流,各个流之间异步进行,根本就不会发生相互干扰,所以整体性能自然也就是提升上去了。

完全参考:
1,http://lincolnloop.com/blog/2012/jul/12/what-is-spdy/
2,http://tools.ietf.org/html/draft-ietf-httpbis-http2-00

转载请保留地址:http://www.lenky.info/archives/2012/12/2052http://lenky.info/?p=2052


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

分类: http&spdy, 网络协议 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.