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有什么不同?相关推荐

  1. Tengine Web服务器概述

    Tengine Web服务器概述 Tengine是由淘宝网发起的Web服务器项目.在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.目的是打造一个高效.安全的Web平台. 发展 ...

  2. 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?

    OkHttp的优点: 开源的轻量级框架.高效.快速的请求客户端,可以单独使用它来实现网络请求. 支持SPDY: 支持连接池,可极大减少延时: 支持Gzip压缩响应体,降低传输内容的大小: 支持Http ...

  3. 【转】推荐!国外程序员整理的Java资源大全

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  4. tengine简单安装_Tengine介绍和安装

    Tengine特性 继承Nginx-1.6.2的所有特性,兼容Nginx的配置: 动态模块加载(DSO)支持.加入一个模块不再需要重新编译整个Tengine: 支持SO_REUSEPORT选项,建连性 ...

  5. linux源码编译安装nginx

    1.从nginx的官方网站下载nginx的安装源码包,要下载.gz格式的包才是linux安装包 网址http://nginx.org/download/ wget http://nginx.org/d ...

  6. 从理论到实践 全面理解HTTP/2

    前言 为了降低加载时间,相信大多数人都做过如下尝试 Keep-alive: TCP持久连接,增加了TCP连接的复用性,但只有当上一个请求/响应完全完成后,client才能发送下一个请求 Pipelin ...

  7. 软件工程实践2017 个人技术博客

    目录 一.github项目管理 二.vue.js框架的搭建 三.通过axios调用api 四.javascript的Date对象 五.文件上传 六.javascript教程 一.github项目管理 ...

  8. 移动应用程序和网页应用程序_您的移动应用程序运行缓慢的主要原因以及如何修复它...

    移动应用程序和网页应用程序 by Rajput Mehul 通过拉杰普特·梅胡尔(Rajput Mehul) 您的移动应用程序运行缓慢的主要原因以及如何修复它 (Top Reasons Why You ...

  9. 电子界卡组构建2019_2018–2019年构建现代Android应用程序的路线图

    电子界卡组构建2019 Kriptofolio应用程序系列-简介 (Kriptofolio app series - Introduction) Welcome to this series of b ...

  10. [HTTP协议]入门篇

    文章目录 http的前世今生 1. 史前时期 2. 创世纪 3. 从产生到发展 HTTP是什么 与HTTP相关的各种概念 与HTTP相关的技术 TCP/IP协议栈 http的前世今生 1. 史前时期 ...

最新文章

  1. 从Inception v1,v2,v3,v4,RexNeXt到Xception再到MobileNets,ShuffleNet,MobileNetV2
  2. Android开发-屏幕常亮的方法
  3. 农业谋定投资-农业大健康·万祥军:解读胡春华补三农短板
  4. 高等数理统计(part3)--常见的连续型分布
  5. Gitlab+Gerrit+Ldap+nginx+mysql 之Gerrit搭建与配置(一)
  6. Selenium2Library+ride学习笔记
  7. 数字电影打包内容(Packaging)
  8. Jenkins 安装FAQ
  9. solr.Net课程二 solr5.5之core配置
  10. mysql iostat_iostat命令详解_MySQL
  11. html写下三角,html文字下方小三角的实现方法
  12. Python3 网络爬虫. 4
  13. cypress 框架介绍及元素定位
  14. 计算机怎样禁止再添加新用户,Win10如何添加新用户?
  15. ​天天干着打杂的活,你做好突破自我的觉悟了吗?
  16. 同步通信 VS 异步通信
  17. 初学RUST-让程序跑起来
  18. iPhone 的解锁、越狱、激活、固件等等是什么意思,有什么分别?
  19. Xamarin效果第二十三篇之离线语音识别
  20. 【C】39.程序中的三国天下

热门文章

  1. html input光标位置,js控制input框内光标位置(setSelectionRange详解)
  2. 阿桑奇:维基解密将把CIA网络攻击工具资料提供给科技公司
  3. 本量利分析计算机,2017年自学考试(管理会计(一))知识点复习:成本性态分析和变动成本法--本量利分析的应用[经营杠杆在利润预测中的应用]...
  4. 瑞萨RL78簇bootloader深入探讨(一):User工程建立
  5. EVA(新世纪福音战士)经典语句
  6. Echarts-水球图笔记
  7. DX10.1与DX10的简述
  8. Win10 64位下GPU版本MXNet+Tensorflow 1.3.0的安装
  9. 线控加速踏板安全设计
  10. linux命令中的merge(2)