云计算百科
云计算领域专业知识百科平台

http协议各版本区别

目录

    • HTTP/1.1相对1.0主要增加了:
      • keep-alive选项:
      • 管道(pipeline):
        • HTTP队头阻塞
    • HTTP/2.0:
    • HTTP3.0

HTTP/1.1相对1.0主要增加了:

keep-alive选项:

在http1.0的时候,一次http请求就要建立一次TCP连接,这一次的http 请求完成以后,TCP连接就会断开,如果还要发起第二次的http请求,就要再建立一次TCP连接。这样显然效率是很低的,于是http1.1提供了长连接的优化。http的长连接实际上是TCP连接的复用,在完成了一次http的请求与响应之后,该TCP连接不断开,继续供下一个http请求与响应使用。

管道(pipeline):

是指当第一个http请求发送出去之后,不必等待该http请求的响应,就可以发送下一个http请求。服务端会按顺序处理http请求,客户端也会按顺序的接收到服务端发来的响应。( 但各大浏览器不支持/默认关闭,因此这功能可以说是鸡肋): 在这里插入图片描述

HTTP队头阻塞

但由于服务端是按顺序处理http请求的,如果前面有一个http请求处理时间较长,迟迟没有处理好,就会阻塞后面的http请求的处理,即所谓HTTP队头阻塞: 在这里插入图片描述

HTTP/2.0:

可以把每个请求分为多个帧发送,然后接收端可以乱序接受以后再按序列号组装。

  • 二进制分帧与多路复用(最核心): HTTP/2 的多路复用(Multiplexing)是指在‌同一个 TCP 连接上并行传输多个请求和响应‌的技术。 核心原理: HTTP/2 引入了‌二进制分帧层‌,将每个 HTTP 请求和响应拆分为多个小的二进制帧(Frame),这些帧可以交错地通过同一个 TCP 连接传输。每个帧都带有流标识符(Stream ID)。 流与帧的关系: 流(Stream)‌:是双向的数据流,代表一个请求或响应,具有唯一的流 ID。 帧(Frame)‌:是 HTTP/2 中最小的数据单位,每个帧包含帧头和帧体,帧头中包含流 ID,用于标识该帧属于哪个流。 例如,在一个 TCP 连接中,客户端可以同时发送多个请求(如 JS 文件和 CSS 文件),这些请求被拆分成多个帧,交错传输,接收端再根据流 ID 重组为完整的请求或响应。

  • 头部压缩 HPACK:压缩重复头部,大幅减少体积。

  • 流优先级:可以给请求设置优先级,重要资源(如首页、关键接口)优先传输。

  • 服务器推送 Server Push :服务端可以主动把资源推给客户端,不用等客户端请求,减少请求往返。

HTTP3.0

使用UDP协议,彻底解决了队头阻塞

参考文章: CSDN【图解计算机网络】http1.1,http2.0,http3.0 我:腾讯的面试

赞(0)
未经允许不得转载:网硕互联帮助中心 » http协议各版本区别
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!