美文网首页洪睿内刊
HTTP1、1.1、2、3的特性简述

HTTP1、1.1、2、3的特性简述

作者: Hoody_66d5 | 来源:发表于2020-02-17 01:29 被阅读0次

    HTTP(HyperText Transfer Protocol,超文本传输协议)是一种主要由web使用的协议规范,完成从客户端到服务器端的一系列运作流程。
    HTTP协议是基于TCP协议开发的,在网络传输模型中属于应用层的内容。

    HTTP1

    HTTP/1.0协议最早于1996年正式使用,其主要特点为:

    • 每次请求都必须新建一次连接(connection),必须通过tcp的三次握手才能开始传输数据,连接结束之后还要经历四次挥手

    HTTP1.1

    HTTP/1.1协议于1997年正式使用,主要是优化并且扩展了HTTP/1.0的内容,主要特点为

    • 缓存处理,缓存头中提供了更多的属性来支持不同的缓存策略
    • 在请求头中增加了range字段,允许服务器提供所请求资源的部分内容,针对网络带宽使用进行优化
    • 增加了24个错误响应码
    • 请求消息与返回消息支持了Host头域,支持同一个IP下的不同服务器提供服务
    • 支持长连接,请求头中增加connection: keep-alive支持,针对同一个tcp进行复用,减少tcp握手带来的时间

    HTTP2

    • 使用二进制的格式传输数据,HTTP1.x的解析是基于文本,由于文本的多样性,要保证在解析中的健壮性时要考虑非常多问题,而二进制则不同。
    • 多路复用,同域名下所有通信都在单个连接上完成;单个连接可以承载任意数量的双向数据流;数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,最后根据帧首部的流标识可以重新组装。


      多路复用的表象
      多路复用的表现
    • Header 压缩,针对请求头进行压缩,减少每次请求都要传一堆请求头导致的浪费
    • 支持服务端推送,即针对一些固定搭配的资源文件,支持一个请求全部获取,减少逐次获取造成的浪费


      服务端推送的示例

    HTTP3

    由于HTTP1 HTTP1.x HTTP2都是基于TCP开发的,其中的TCP握手问题就无法避免,为了解决这个问题,Google 就另起炉灶搞了一个基于 UDP 协议的 QUIC 协议,并且使用在了 HTTP/3 上。其特点主要为:

    • 0-RTT,RRT(Round Trip Time)即客户端与服务器之间通讯来回一次所花费的时间,通过QUIC协议可以实现在客户端向服务端发起一次QUIC握手的同时即可完成验证及进行数据的传输,实现了0-RRT
    • 多路复用,基于UDP实现的多路复用,不存在TCP中的阻塞现象
    • 加密认证的报文,所有报文头经过了验证,所有报文body经过加密,提高安全性
    • 向前纠错机制,在传输过程中每个数据包会冗余其他数据其他少量的数据包数据,如果一个包出现了丢包的情况,可以通过其他数据包的数据恢复,在一定程度上降低了错误重传导致的开销。

    以上内容均为笔者在看了文章后以自己的理解讲的内容,如有错误,请不吝指正

    参考文章

    HTTP3 为什么比 HTTP2 靠谱? | 技术头条
    HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
    HTTP/2之服务器推送(Server Push)最佳实践

    相关文章

      网友评论

        本文标题:HTTP1、1.1、2、3的特性简述

        本文链接:https://www.haomeiwen.com/subject/doyvfhtx.html