HTTP2协议规范详述

简介: HTTP2协议规范详述 2015年2月19日,HTTP协议规范的标准化组织The Internet Engineering Task Force's HTTP Working Group,正式发布了HTTP 2协议。

HTTP2协议规范详述

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协议的完整支持。

目录
相关文章
|
27天前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
6月前
|
数据采集 数据可视化 API
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
本文介绍了一种基于QUIC和HTTP/3的异步爬虫方案,用于抓取知乎热榜数据并生成趋势图。通过HTTPX与aioquic结合实现高性能连接复用,配合代理IP绕过反爬限制,提取标题、热度等信息。利用Python代码示例展示了异步抓取流程,并借助Matplotlib绘制话题热度变化图表。分析显示突发热点生命周期短,而深度话题热度更稳定。此方案可优化内容运营策略,快速捕捉潜在爆款话题。
276 4
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
|
4月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
595 68
|
3月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
504 2
|
3月前
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
128 0
|
3月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
170 0
|
3月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
256 0
|
4月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
488 1
|
3月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
418 0