前端经典面试题合集, 介绍下从 HTTP1.0,HTTP1.1 到 HTTP2 再到 HTTP3 的演化过程,各个阶段相对前一阶段做了哪些优化?
前端经典面试题合集, 介绍下从 HTTP1.0,HTTP1.1 到 HTTP2 再到 HTTP3 的演化过程,各个阶段相对前一阶段做了哪些优化?
QA
Step 1
Q:: 请介绍从 HTTP/1.0、HTTP/1.1 到 HTTP/2 再到 HTTP/3
的演化过程,各个阶段相对前一阶段做了哪些优化?
A:: HTTP/1.0 是最早期的 HTTP 协议版本,使用单独的 TCP 连接发送和接收数据,存在大量的性能问题。HTTP/1.1 引入了持久连接(Persistent Connection),允许复用同一个 TCP 连接以传输多个请求/响应对,大大减少了连接的开销,同时增加了管道化(Pipelining)以提高数据传输效率。HTTP/2 则进行了更大规模的优化,采用二进制分帧层,可以在一个 TCP 连接上并行传输多个请求,使用了头部压缩(Header Compression)技术减少数据传输量,并支持服务器推送(Server Push)。HTTP/3 则基于 QUIC 协议,进一步减少了延迟并提高了可靠性,通过使用 UDP 来避免 TCP 握手延迟问题,同时保留了 HTTP/2
的多路复用、头部压缩等优点。
Step 2
Q:: HTTP/1.1
的持久连接和管道化是如何工作的?
A:: 持久连接允许在一个 TCP 连接上发送和接收多个 HTTP 请求和响应,默认情况下 HTTP/1.1
都是持久连接。管道化是指在一个连接上可以同时发送多个请求而不必等待每个响应返回,但由于中间网络设备的兼容性问题,管道化并未得到广泛应用。
Step 3
Q:: HTTP/2
中的多路复用(Multiplexing)是如何实现的?
A:: HTTP/2
通过将数据流分解为更小的帧(Frame)并在单一连接上并行发送和接收多个数据流(Stream),每个数据流都独立传输,不会互相阻塞。这种方式大大提高了传输效率和资源利用率。
Step 4
Q:: HTTP/2
的头部压缩是如何工作的?
A:: HTTP/2
使用 HPACK 算法对头部进行压缩。它通过静态表和动态表的结合方式来存储和传输头部字段,从而减少头部的冗余数据和传输量,极大提高了传输效率。
Step 5
Q:: HTTP/3
基于 QUIC 协议的优势是什么?
A:: HTTP/3
基于 QUIC 协议,通过使用 UDP 来避免 TCP 的握手延迟问题。QUIC 内置了传输层的重传和拥塞控制功能,并且支持多路复用,从而减少了延迟并提高了传输效率和可靠性。