目录
-
- 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 我:腾讯的面试
网硕互联帮助中心





评论前必须登录!
注册