HTTP2协议规范详述

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/43908785 HTTP2协议规范详述作者:chszs,转载需注明。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/43908785

HTTP2协议规范详述

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

2015年2月19日,HTTP协议规范的标准化组织The Internet Engineering Task Force's HTTP Working Group,正式发布了HTTP 2协议。HTTP协议工作组实际上发布了两个相关的规范:

1)HTTP/2协议
2)HPACK

HPACK是HTTP/2协议Header部分的压缩规范。

HTTP/2协议规范的制定工作是从2012年开始的,是为了响应Google的SPDY协议而制定。

HTTP/1.x协议最大的问题是使用了多个连接来并行地载入资源,因为当客户端和服务器之间使用单个连接来请求网页所需的多种不同的对象(图片、CSS以及JavaScript等)时,这些对象必须按顺序依次传输,一个接一个。如果某个对象需要花很多时间才能完成传输,那么就可能占据大量的服务器的创建时间,而其后的对象都必须等待。
这导致了大多数HTTP/1.x连接仅被用于请求单个的对象。Web客户端根据需求并行地载入它们需要的对象,以至于不得不要求服务器创建多个连接。这使得服务器的开销巨大:它耗光了额外的网络资源,占据了额外的处理时间,而且客户端与服务器之间的每一个连接都需要数个往返通信。

HTTP/2协议直接解决了这个问题。在HTTP/2协议中,在单个TCP连接上,客户端和服务器之间是全双工的数据流的多路复用。每一个流都可以携带一对请求/响应,客户端向服务器发起多个请求时只需使用多路复用即可。而且,所有的数据流彼此是相互独立的。如果某个数据流很慢,HTTP/2连接可以继续传输其它数据流的数据。同样地,客户端可以请求某个很大的对象,再请求某个小对象,那么小对象的响应可能先返回,大对象的响应可能需一段时间后才得到响应。在HTTP/2协议中,无需HTTP/1.x协议的等待和顺序处理。HTTP/2协议规范建议客户端和服务器都需要支持在单个连接上传输至少100种不同的数据流。

HTTP/2协议还有其它的性能和功能方面的改进。传统的HTTP/1.x协议是一个文本协议,其请求和响应都使用了可读的纯文本格式。而HTTP/2协议是一个二进制协议,它把请求和响应拆分成了不可读的顺序帧,在TCP连接上传输。HTTP/2协议还允许服务器直接推送数据流到客户端,无需客户端发起最初的请求。

作为一个二进制协议,HTTP/2协议没有改变HTTP连接的底层语义。每一个请求和响应都仍然包括Header部分和Body部分,Header部分通常用于标识Body部分的元数据信息。不过,HTTP/2协议在表示同样的消息设计时更富有效率。

HTTP/2协议在很大程度上基于了Google的SPDY协议而制定,但是有一些SPDY协议的特性在HTTP/2协议中没有采纳。HTTP/2协议还是需要TLS(Transport Layer Security,传输层安全)来增强隐私和安全。HTTP/2协议在这方面是可选的,既可以在TLS上传输,又可以在纯TCP上传输。但是,目前业界有部分HTTP/2协议的服务提供商宣称自己只支持加密TLS连接的HTTP/2通信,以便保护用户的隐私。

SPDY协议最初在双向传输上还使用了gzip来压缩Header部分。但是在2012年,gzip在Header部分的使用被发现是很危险的,它在遭受攻击时很容易暴露用户的隐私,从而导致犯罪。随后SPDY协议做了改变,停止了gzip压缩的使用。HTTP/2协议规范的第二部分解决了这个问题:HPACK。

HPACK是一种压缩HTTP/2连接的Header部分的方法,可以有效地避免用户隐私的泄露。与gzip不同,HPACK是一种面向通用目标的压缩算法,以满足HTTP/2协议的需求。
随着IETF签署通过了HTTP/2协议,接下来HTTP/2协议将由RFC正式发布。

可以预见,未来各浏览器都将很好地支持HTTP/2协议,Google最新的Chrome 40版将包含对HTTP/2协议的支持,并且Google宣称在2016年年初将会从Chrome浏览器中移除对SPDY协议的支持。这也预示着SPDY协议的寿命在明年将会走到尽头。Mozilla浏览器宣布,Firefox 36版将会支持HTTP/2协议的第14版草案,在Firefox 37或38版将会支持到HTTP/2协议的第16版草案,再往后的版本将会完全支持HTTP/2协议。微软的Windows 10操作系统的技术预览版也包含了对HTTP/2协议的第14版草案的支持,其新的浏览器项目Spartan将会完全替代IE浏览器,提供对HTTP/2协议的完整支持。


目录
相关文章
|
1月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
74 7
|
23天前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
|
1月前
|
算法 网络协议 安全
HTTP/2 协议的缺点是什么?
HTTP/2 协议的缺点是什么?
|
1月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
77 3
|
1月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
50 13
|
1月前
|
传感器 缓存 网络协议
CoAP 协议与 HTTP 协议的区别
CoAP(Constrained Application Protocol)协议是为资源受限的设备设计的轻量级协议,适用于物联网场景。相比HTTP,CoAP具有低功耗、低带宽占用和简单易实现的特点,支持多播通信和无连接的交互模式。
|
1月前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
1月前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
1月前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
1月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密

热门文章

最新文章