HTTP/2是什么?和HTTP/1.1有什么不同?和SPDY有什么不同?
HTTP/2简介
HTTP/2 是超文本传输协议第2版,最初命名为 HTTP 2.0 ,其简称为 h2(基于TLS/1.2或以上版本的加密连接)或 h2c(非加密连接),是HTTP协议的的第二个主要版本,使用于万维网。
HTTP/2 是HTTP协议自1999年 HTTP 1.1 的改进版RFC 2616发布后的首个更新,主要基于 SPDY 协议。它由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组进行开发。该组织于2014年12月将 HTTP/2 标准提议递交至IESG进行讨论,于2015年2月17日被批准。
HTTP/2 标准于2015年5月以RFC 7540正式发表。HTTP/2 的标准化工作由Chrome、Opera、Firefox、Internet Explorer 11、Safari、Amazon Silk及Edge等浏览器提供支持。
多数主流浏览器已经在2015年底支持了该协议。此外,根据W3Techs的数据,截至2021年10月,全球有46.5%的网站支持了HTTP/2。
HTTP/2和HTTP/1.1的对比
那么 HTTP/2 相对于 HTTP/1.1 到底有哪些具体变化呢?
HTTP/2 采用二进制格式传输数据,而非 HTTP 1.1 的文本格式,二进制协议解析起来更高效。HTTP / 1 的请求和响应报文,都是由起始行,首部和实体正文(可选)组成,各部分之间以文本换行符分隔。HTTP/2 将请求和响应数据分割为更小的帧,并且它们采用二进制编码。
HTTP/2 中,同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流。每个数据流都以消息的形式发送,而消息又由一个或多个帧组成。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。
多路复用,代替原来的序列和阻塞机制。所有就是请求的都是通过一个 TCP连接并发完成。 HTTP 1.1 中,如果想并发多个请求,必须使用多个 TCP 链接,且浏览器为了控制资源,还会对单个域名有 6-8个的TCP链接请求限制。同个域名只需要占用一个 TCP 连接,消除了因多个 TCP 连接而带来的延时和内存消耗。
HTTP/2与SPDY的对比
HTTP/2的开发基于SPDY进行跃进式改进。在诸多修改中,最显著的改进在于,HTTP/2使用了一份经过定制的压缩算法,基于霍夫曼编码,以此替代了SPDY的动态流压缩算法,以避免对协议的Oracle攻击——这一类攻击以CRIME为代表。此外,HTTP/2禁用了诸多加密包,以保证基于TLS的连接的前向安全。
2015年9月,Google宣布了移除对SPDY支持的计划,拥抱HTTP/2,并将在Chrome 51中生效。
HTTP/2是什么?和HTTP/1.1有什么不同?和SPDY有什么不同?相关推荐
- Tengine Web服务器概述
Tengine Web服务器概述 Tengine是由淘宝网发起的Web服务器项目.在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.目的是打造一个高效.安全的Web平台. 发展 ...
- 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?
OkHttp的优点: 开源的轻量级框架.高效.快速的请求客户端,可以单独使用它来实现网络请求. 支持SPDY: 支持连接池,可极大减少延时: 支持Gzip压缩响应体,降低传输内容的大小: 支持Http ...
- 【转】推荐!国外程序员整理的Java资源大全
构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...
- tengine简单安装_Tengine介绍和安装
Tengine特性 继承Nginx-1.6.2的所有特性,兼容Nginx的配置: 动态模块加载(DSO)支持.加入一个模块不再需要重新编译整个Tengine: 支持SO_REUSEPORT选项,建连性 ...
- linux源码编译安装nginx
1.从nginx的官方网站下载nginx的安装源码包,要下载.gz格式的包才是linux安装包 网址http://nginx.org/download/ wget http://nginx.org/d ...
- 从理论到实践 全面理解HTTP/2
前言 为了降低加载时间,相信大多数人都做过如下尝试 Keep-alive: TCP持久连接,增加了TCP连接的复用性,但只有当上一个请求/响应完全完成后,client才能发送下一个请求 Pipelin ...
- 软件工程实践2017 个人技术博客
目录 一.github项目管理 二.vue.js框架的搭建 三.通过axios调用api 四.javascript的Date对象 五.文件上传 六.javascript教程 一.github项目管理 ...
- 移动应用程序和网页应用程序_您的移动应用程序运行缓慢的主要原因以及如何修复它...
移动应用程序和网页应用程序 by Rajput Mehul 通过拉杰普特·梅胡尔(Rajput Mehul) 您的移动应用程序运行缓慢的主要原因以及如何修复它 (Top Reasons Why You ...
- 电子界卡组构建2019_2018–2019年构建现代Android应用程序的路线图
电子界卡组构建2019 Kriptofolio应用程序系列-简介 (Kriptofolio app series - Introduction) Welcome to this series of b ...
- [HTTP协议]入门篇
文章目录 http的前世今生 1. 史前时期 2. 创世纪 3. 从产生到发展 HTTP是什么 与HTTP相关的各种概念 与HTTP相关的技术 TCP/IP协议栈 http的前世今生 1. 史前时期 ...
最新文章
- 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet,MobileNetV2
- Android开发-屏幕常亮的方法
- 农业谋定投资-农业大健康·万祥军:解读胡春华补三农短板
- 高等数理统计(part3)--常见的连续型分布
- Gitlab+Gerrit+Ldap+nginx+mysql 之Gerrit搭建与配置(一)
- Selenium2Library+ride学习笔记
- 数字电影打包内容(Packaging)
- Jenkins 安装FAQ
- solr.Net课程二 solr5.5之core配置
- mysql iostat_iostat命令详解_MySQL
- html写下三角,html文字下方小三角的实现方法
- Python3 网络爬虫. 4
- cypress 框架介绍及元素定位
- 计算机怎样禁止再添加新用户,Win10如何添加新用户?
- ​天天干着打杂的活,你做好突破自我的觉悟了吗?
- 同步通信 VS 异步通信
- 初学RUST-让程序跑起来
- iPhone 的解锁、越狱、激活、固件等等是什么意思,有什么分别?
- Xamarin效果第二十三篇之离线语音识别
- 【C】39.程序中的三国天下
热门文章
- html input光标位置,js控制input框内光标位置(setSelectionRange详解)
- 阿桑奇:维基解密将把CIA网络攻击工具资料提供给科技公司
- 本量利分析计算机,2017年自学考试(管理会计(一))知识点复习:成本性态分析和变动成本法--本量利分析的应用[经营杠杆在利润预测中的应用]...
- 瑞萨RL78簇bootloader深入探讨(一):User工程建立
- EVA(新世纪福音战士)经典语句
- Echarts-水球图笔记
- DX10.1与DX10的简述
- Win10 64位下GPU版本MXNet+Tensorflow 1.3.0的安装
- 线控加速踏板安全设计
- linux命令中的merge(2)