const web = HTTP1.1 => HTTP2.0

概览

HTTP/2.0是下一代HTTP协议, 由IETF的 [httpbis] 工作小组进行开发。自1999年http1.1发布后的首个更新, HTTP 2.0在2013年8月进行首次合作共事性测试。在开放互联网上HTTP 2.0将只用于https://网址,而 http://网址将继续使用HTTP/1,目的是在开放互联网上增加使用加密技术,以提供强有力的保护去遏制主动攻击, DANE RFC6698允许域名管理员不通过第三方CA自行发行证书。这次重大变革带来了我们耳熟能详的websocket标准, 新的webpack支持等新特性.

长链接

  • http1.0
  • 每对Request/Response都使用一个新的连接。
  • 不支持断点续传,每次都从RANGE:0(http1.1新增加字段)开始 其中HTTP1.0需要在request中增加”Connection: keep-alive“ header才能够支持,而HTTP1.1默认支持
  • http1.1
  • 默认使用长链接,在同一个tcp链接可以传送多个http请求和响应,同时也支持更多的请求头和响应头b.允许同时在一条条件上发送多个请求,但是服务端必须按照接收请求的先后顺序发送应答包c.host请求头字段,明确标识服务器上的web站点,http1.1还提供了身份认证、状态管理和cache缓存机制相关的头

带宽优化

  • HTTP/1.1中在请求消息中引入了range头域,在响应消息中Content-Range头域声明了返回的这部分对象的偏移值和长度。如果服务器相应地返回了对象所请求范围的内容,则响应码为206(Partial Content),它可以防止Cache将响应误以为是完整的一个对象。
  • HTTP/1.1加入了一个新的状态码100(Continue),客户端事先发送一个只带头域的请求,拒绝发送401; 接受则发送100,客户端就可以继续发送带实体的完整请求了

消息传递

  • HTTP/1.1中引入了Chunkedtransfer-coding来解决缓存完整消息带来的性能问题,发送方将消息分割成若干个任意大小的数据块,每个数据块在发送时都会附上块的长度,最后用一个零长度的块作为消息结束的标志。这种方法允许发送方只缓冲消息的一个片段,避免缓冲整个消息带来的过载
  • 在HTTP/1.0中,有一个Content-MD5的头域,要计算这个头域需要发送方缓冲完整个消息后才能进行。而HTTP/1.1中,采用chunked分块传递的消息在最后一个块(零长度)结束之后会再传递一个拖尾(trailer),它包含一个或多个头域,这些头域是发送方在传递完所有块之后再计算出值的。发送方会在消息中包含一个Trailer头域告诉接收方这个拖尾的存在。

响应码

  • 在HTTP/1.1中新增了24个状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

多路复用

HTTP/1.1 协议中 「浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制,超过限制数目的请求会被阻塞;多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。

头部压缩

http1.1不支持头部压缩, http2.0 支持头部压缩的hpack算法 http2.0使用二进制数据流(实现方便且健壮) http2.0没有改变http1.1的语义,而是在http1.1的header和body重新封装了一层

流量控制

http2.0支持流量控制,和tcp的sliding window类似。http2.0 类似的使用receive window 的做法

更安全的ssl

使用tls的alpn来做协议升级,且通过黑名单机制禁用几百种不再安全的加密算法

原文发布于微信公众号 - WebHub(myWebHub)

原文发表时间:2018-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

Netdata---Linux系统性能实时监控平台部署记录

通常来说,作为一个Linux的SA,很有必要掌握一个专门的系统监控工具,以便能随时了解系统资源的占用情况。下面就介绍下一款Linux性能实时监测工具-Netda...

8918
来自专栏AndroidTv

AndroidTv开发中常用的adb命令

盒子应用开发时,调试比手机上的开发比较麻烦一点,而且需要经常跟 adb 打交道,不管是 wifi 连接调试,还是应用删除安装等。这里记录一些常用的操作,方便查阅...

42610
来自专栏北京马哥教育

Linux下FTP配置

关于Linux下搭建FTP服务的文章网上有很多,但是大部分都局限于某一点,在实际操作过程中会遇到各种问题,针对本人在使用中用到的一些设置和出现的问题对网络信息进...

1.5K5
来自专栏趣谈编程

DNS原理入门

DNS 是互联网核心协议之一。不管是上网浏览,还是编程开发,都需要了解一点它的知识。

2150
来自专栏MySQL

分布式消息中间件 — MQ

消息队列(Message Queue,简称 MQ)是阿里巴巴集团中间件技术部自主研发的专业消息中间件。用于保证异构应用之间的消息传递。应用程序通过MQ接口进行互...

5597
来自专栏同步博客

我对RPC的理解

  这篇文章将会用最直白的方式介绍RPC,以及实现RPC客户端的Ajax跨域调用的例子。

1584
来自专栏木头编程 - moTzxx

微信小程序Ⅰ [关于微信支付的一点思路]

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

3243
来自专栏源码之家

.htaccess重写让空间绑定多个域名到不同的目录支持多站点

6447
来自专栏owent

协程框架(libcopp)v2优化、自适应栈池和同类库的Benchmark对比

libcopp很早就实现完成了v2版本,现在迁移进atsf4g-co/tree/sample_solution以后也把v2分支正式并入了主干。原来的版本切出到v...

793
来自专栏玄魂工作室

​ kali linux 渗透测试 之 DNS信息收集

从本节开始,我们从头开始,系统的学习基于Kali Linux的web应用渗透测试。

2723

扫码关注云+社区

领取腾讯云代金券