HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事

  • Post author:
  • Post category:其他

转自:https://www.cnblogs.com/wjlog/p/5827168.html

 

web始祖HTTP,全称:超文本传输协议伴随着计算机网络和浏览器的诞生,HTTP 1.0随着而来,处于计算机网络中

的应用层,HTTP是建立在TCP协议之上的,所以HTTP协议的瓶颈及其优化技巧都是基与TCP协议本身的特性,例

如建立TCP连接的三次握手和断开连接的4次挥手以及每次建立连接带来的RTT延迟时间.

 

HTTP的基本优化:

 

影响一个HTTP网络请求因素主要有两个: 带宽 和 延迟

带宽:如果说我们还停留在拨号上网,带宽可能会成为一个比较严重影响请求的问题,但是现在网络基础建设已经

使带宽得到极大的提升.

延迟:

1.浏览器阻塞:浏览器会因为一些原因阻塞请求,浏览器对于同一个域名,同时只能有4个链接,超过浏览器的最

大连接限制,后续请求就会被阻塞.

2.DNS查询:浏览器需要知道目标服务器的IP才能建立连接,将域,解析为IP的这个系统就是DNS,这个通常可

以利用DNS缓存结果来达到减少时间的目的.

3.建立连接: HTTP是基于TCP协议的,浏览器最快也要在第三次握手使捎带HTTP请求报文,达到真正的建立连接

,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动,三次握手在高延迟的场景下影响较明显,慢启

动则对文件大的请求影响较大.

 

HTTP 1.0 和 HTTP 1.1的一些区别

 

HTTP 1.0最早在网页中使用是在1996年,那个时候只是使用一些较为简单的网页上和网络请求上,而HTTP 1.1则

在1999年才开始广泛应用在现在的各大浏览器网络请求中,同时HTTP 1.1也是当前使用最为广泛的HTTP协议. 

主要区别主要体现在:

1. 缓存处理.

2.带宽优化以及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分

,而服务器却将一个对象传输过来,并且不支持断点续传功能,而HTTP 1.1则在请求头中引入引入引入异常range

头域,它允许只请求资源的某个部分,既返回码为206,这样就方便了开发者自由选择以便于充分利用带宽和连接.

3.Host头处理:在HTTP 1.0中认为每台服务器都绑定一个唯一的ip地址,因此,请求消息中的URL并没有传递主

机名. 但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机,并且他们共享一个IP地址,

HTTP 1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误.

4.长连接:HTTP 1.1支持长连接和请求的流水线处理,减少了建立连接的消耗和延迟,在HTTP 1.1种默认开启

Connection : keep-alive,一定程度上弥补了HTTP 1.0每次请求都要创建链接的缺点.

5.错误通知的管理:在HTTP 1.1中新增了24个错误状态响应码,如409(conflict)表示请求的资源与资源的当前状

态发生冲突.  410表示服务器上的某个资源被永久性的删除.

 

使用SPDY加快你的网站速度

 

2012年google如一声惊雷提出了SPDY的方案,大家才开始从正面看待和解决老版本HTTP协议本身的问题. SPDY

可以说是综合了HTTPS 和 HTTP两者有点于一体的传输协议,主要解决了:

1.降低延迟:针对于HTTP高延迟问题,SPDY优雅的采用了多路复用,多路复用通过多个请求stream共享同一个

TCP链接的方式,解决了HOL blocking(链接阻塞),降低了延迟同时提高了带宽的利用率.

2.请求优先级: 多路复用带来了一个新的问题就是,在链接共享的基础之上可能会导致关键请求被阻塞,SPDY

允许给每一个request设置优先级,这样重要的请求就会优先得到响应,比如浏览器加载首页,首页的html内容应

该优先展示,之后才是各种静态资源文件,脚本文件等加载,这样可以保证用户能第一时间看到网页的内容.

3.header压缩. 前面提到HTTP 1.X的header很多都是重复多余的,选择合适的压缩算法可以减少包的大小和数量.

4.基于HTTPS的加密协议传输,大大提高了传输数据的可靠性.

5.服务器推送,采用SPDY的网页,例如我的网页有一个style.css的请求,在客户端收到sytle.css数据的同时,服

务端会将sytle.js的文件推送给客户端,当客户端再次尝试获取style.js时就可以直接从缓存中获取到,不再发请求

了.的问题,降低了延迟同时提高了带宽的利用率.

SODY的构成图:   HTTP — SPDY — SSL — TCP

SPDY位于HTTP之下,TCP和SSL之上,这样可以轻松兼容老版本的HTTP协议,同时可以使用已有的SSL功能.

 

HTTP 2.0诞生啦!!!

 

HTTP2.0可以说是SPDY的升级版,但是HTTP 2.0跟SPDY仍有不同的地方,主要是以下两点:

1.HTTP 2.0支持明文HTTP传输,而SPDY强制使用HTTPS.

2.HTTP 2.0消息头的压缩算法不同.

 

HTTP 2.0的新特性:

 

1.新的二级制格式,HTTP 1.x的解析是基于文本,基于文本协议的格式解析存在天然 缺陷,文本的表现形式有多

样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合,基于这种考虑HTTP 2.0的协议解析

决定采用二进制格式,实现方便且健壮.

2.多路复用:既链接共享,既每一个request都是用作链接共享机制的. 一个request对应一个id,这样一个链接

上面可以有多个request,每个链接的request可以随机的混杂在一起,接收方可以根据request的id将request再

归属到各自不同的服务器请求里面,多路复用原理图:

header压缩 : 如上文中所言,对前面提到过的HTTP 1.X的header带有大量的信息,而且每次都需要重复发送

,HTTP 2.0使用encoder来减少需要传输的header大小,通讯双方都要重复发送,HTTP 2.0采用的encoder的

传输,有减少需要传输的大小.

服务器推送 : 同SPDY一样,如上.