【协议分析】HTTP2技术变革的冲击和影响分析

HTTP2技术变革的冲击和影响分析

HTTP2于今年2月28日正式通过IETF组织批准发布,正式定稿,那么什么是HTTP2,HTTP2将给我们带来哪些改变,将对我们的业务和产品产生哪些影响,应用安全研究部的协议分析研究员对此进行了深入的分析。

HTTP协议发展及特点

HTTP是往返“浏览器”与“WEB Server”的协议(即:HTTP Protocol)。

HTTP 0.9

只有基本的文本 GET 功能,具有典型的无状态性,每个事务独立进行处理。事务结束时就释放这个连接。

客户无法使用内容协商,所以服务器也无法返回实体的媒体类型。

HTTP 1.0(1982年)

面向事务的应用层协议,每一次请求/响应,建立并拆除一次连接。

对客户请求响应慢,网络拥塞严重,安全性不佳。

HTTP 1.1(1997年)

流水方式,客户端对同一服务器发出多个请求,并等待这些请求发送完毕,再等待响应。

HTTP 1.1的服务器端处理请求时按照收到的顺序进行,服务器端发生中断时,会自动重传请求。也就是我们所说的PipeLine模式。

有内容协商机制,,提供了(1)身份验证,(2)状态管理,(3)Cache缓存机制。

HTTP2 (201502)

HTTP 2.0 首个 draft已于 2012 年 11月发布,2015年2月正式批准发布。它保证了与 HTTP 1.1的完全语义兼容,最初考虑的是 Google SPDY 协议、微软的 SM协议和 Network-Friendly HTTP 更新。最终各方推荐了 SPDY协议,并在此基础上进行了相应更新,详细见后面介绍。

HTTP2协议的优势

多路复用

一个流上分配多个HTTP请求响应交换,流在很大程度上是相互独立的,因为一个请求上的阻塞和终止不会影响其他请求的处理,相比HTTP1.x协议的PipeLine模式更加灵活。

HEAD 压缩

HTTP2中最基本的协议单位是帧。每个帧都有不同的类型和用途。例如,报头(HEADERS)和数据(DATA)帧组成了基本的http请求和响应。帧包含的HTTP报头字段是压缩的。HTTP请求有可能是高度冗余的,因此压缩能显著减少请求和响应的大小,相比HTTP1.x传输大量的报文头性能更高。

服务器推送

添加了一种新的交互模式,即服务器能推送消息给客户端。服务器推送允许服务端预测客户端需要来发送相关数据内容,相比HTTP1.x按请求发送性能更高。

优先级请求

流量控制和优先级确保正确使用复用流,流量控制有助于确保只传播接受需要的数据,优先级确保有限的资源能被重要的请求使用,相比HTTP1.x按顺序接收数据更加稳定高效。

HTTP1.x与HTTP2报文头差异

通过分析发现HTTP1.X和HTTP2协议之间存在较大差异,详细分析如下:

HTTP1.x

HTTP1.x协议中我们可以很容易提取出HTTP的头部字段,如下红色部分包括请求方法、主机域名地址、引用地址、客户端信息等。图1为HTTP1.x报文内容

GET /ebook/478d1a62376baf1ffc4fad99 HTTP/1.1

Accept: */*

Referer:

Accept-Language: zh-CN

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; InfoPath.3)

Accept-Encoding: gzip, deflate

Host: yuedu.baidu.com

图1为HTTP1.x报文格式

HTTP2

HTTP2协议中报文头可以采用Haffman编码,我们看到的报文头信息都是二进制信息,如下为HTTP2协议的报头帧,对报文帧数据进行解码后内容如下:图2为HTTP2报文格式

图2 HTTP2报文格式

1、还原后报头内容如下:

:authority = localhost:3000

:method = Get

:path = /doc/manual/html/index.html

:scheme = http

:accept = */*

:accept-encoding = gzip,deflate

:user-agent = nghttp..

详细分析如下:

0000 50 52 49 20 2a 20 48 54 54 50 2f 32 2e 30 0d 0a

0010 0d 0a 53 4d 0d 0a 0d 0a 00 0c 04 00 00 00 00 00

0020 00 03 00 00 00 64 00 04 00 00 ff ff 00 39 01 05

0030 00 00 00 01 41 8a a0 e4 1d 13 9d 09 b8 c8 00 0f

0040 82 04 94 62 43 91 8a 47 55 a3 a1 89 d3 4d 0c 1a

0050 a9 0b e5 79 d3 4d 1f 86 53 03 2a 2f 2a 90 7a 8d

0060 aa 69 d2 9a c4 c0 17 6d 71 2d 7f 07 1f

分析还原:

1、连接序言:

0000 50 52 49 20 2a 20 48 54 54 50 2f 32 2e 30 0d 0a

0010 0d 0a 53 4d 0d 0a 0d 0a

2、设置帧及数据

0010 00 0c 04 00 00 00 00 00

0020 00 03 00 00 00 64 00 04 00 00 ff ff

设置帧及数据内容

设置最大流数为96,滑动窗口大小65535

3、报头帧及数据

停止每日在车水马龙的市井里忙碌的穿梭,

【协议分析】HTTP2技术变革的冲击和影响分析

相关文章:

你感兴趣的文章:

标签云: