HTTP2.0、1.1、1.0三者在通信性能上的优化方法

2018-10-1910:57:02计算机网络技术Comments2,984 views字数 1579阅读模式

从通信性能角度,来分析对比HTTP1.0和HTTP1.1之间的区别。以及HTTP1.1与HTTP2.0之间的区别。本文详细内容组织如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

目录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

一丶HTTP1.0与HTTP1.1通信性能上的区别文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

  1. 持久化连接
  2. 管线化技术

二丶HTTP2.0与HTTP1.1通信性能上的区别文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

  1. 多路复用
  2. HTTP协议头部压缩

正文文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

一丶HTTP1.0与HTTP1.1通信性能上的区别文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

  • 持久化连接

    HTTP1.1是默认支持持久化连接的。HTTP1.0若要支持持久化连接需要显示指定Keep-alived报文头。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    1. 非持久化连接下HTTP协议的通信文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    • 比如访问www.taobao.com这个URL。访问该URL时,首先会从目标服务器上到HTML这样的静态资源,服务器返回资源后会自动断开连接,这是一次非持久的HTTP通信过程。在该过程中包括TCP三次握手和四次挥手。
    • 更进一步考虑,静态HTML上必然包括很多图片,js,css等资源,这些资源全部都是存储在服务器上。对这些资源的访问会重复上述的HTTP通信过程,其中又包括了TCP三次握手和四次挥手。这种反复建立和释放TCP连接的过程无疑浪费了服务器很多的带宽资源,也降低了Web页面的加载速度。非持久化连接下HTTP协议的通信过程如下图所示
    HTTP2.0、1.1、1.0三者在通信性能上的优化方法

    2. 持久化连接下HTTP协议的通信文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    持久化连接很易懂。在一次HTTP通性过程后,服务器若没有受到显示关闭连接的通知其不会断开连接,而是一直保持该连接。如此一来,在访问诸如www.taobao.com这样的页面时,页面上的多数资源能够在一条TCP链接上传输。这样极大的减少了多次TCP连接,释放带来的性能损失。持久化连接下的通信如下图所示文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    HTTP2.0、1.1、1.0三者在通信性能上的优化方法
    • 管线化技术

    管线化技术是在持久化连接的基础上,进一步对通信性能的提升。在持久化连接下,请求和相应是顺次进行的。上次请求得到响应后,才能发送下次请求。管线化技术就是指能在未收到响应时,顺次发送多个响应。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    HTTP2.0、1.1、1.0三者在通信性能上的优化方法

二丶HTTP2.0与HTTP1.1之间通信性能对比文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

  1. 多路复用技术

    多路复用技术建立在持久连接的基础上,允许所有请求公用同一连接,并且能够并行传输。此处的多路复用技术和管线化技术值不同之处在于:。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    • 管线化技术中所有,请求是顺次发送出去的。而多路复用中,所有请求是并行发送出去的。
      HTTP2.0、1.1、1.0三者在通信性能上的优化方法
  2. 报文头压缩

    报文头压缩同样比较容易理解,减小HTTP报文中头部字段的开销,提供通信效率。采用报文头压缩主要是两个原因:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    (1)对于单个HTTP报文而言,当携带较少的通信数据时,报文头部大小将远远大于有效的通信数据,导致带宽利用率较低。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    (2)在持久化连接下,传送的多个HTTP报文之间,经常存在重复报文头字段在传输。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    HTTP2.0提出的报文头压缩算法针对上述两点均做了优化:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    • 基于静态字典压缩 在HTTP协议中的客户端以及服务端之间,共同维护了一份静态字典。该静态字典中存储了大量常见的HTTP报文头字段。比如下述,静态字典:
      HTTP2.0、1.1、1.0三者在通信性能上的优化方法

      静态字典中,保留了两种情况:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

      • 完整的报文头以及字段值,比如Content-Language:zh-CN。
      • 完整报文头,比如User-agent。

    在静态字典的基础上,可以利用静态字典中的索引号代替HTTP中的报文头,一般来说一个字节就足以覆盖静态字典中的所有索引号了。如下图所示,利用一个字节格式,来代替HTTP报文头,index是静态字典中的索引号。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

    HTTP2.0、1.1、1.0三者在通信性能上的优化方法
    • 基于动态字典压缩

      静态字典并不能够涵盖HTTP头部键值对所有的组合情况,为此在静态字典压缩的基础上补充了动态字典压缩。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

      动态字典压缩过程比较简单。如果遇见在静态字典中不存在的HTTP头部字段,那么此处采用非压缩传输,接着把该头部字段添加到动态字段中。当下次传送同样的头部字段时,则可以依据动态字典的内容对该头部字段进行压缩了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

      1. 当通信过程越长导致动态字典积累的内容将越多,因此HTTP头部压缩的效果越佳
      2. 动态字典的内容会在连接新建立的时候重置。

作者:涂印
来源:掘金文章源自菜鸟学院-https://www.cainiaoxueyuan.com/wangluo/6856.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/wangluo/6856.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定