浏览器常见问题

返回 相关私有笔记 · 相关私有笔记

📑 本目录笔记

运行机制

网络与协议

安全

其他

  • 相关私有笔记
  • UUID

HTTP 和 HTTPS 的区别

有没有了解过 HTTP/2

HTTP/2 相比于 HTTP/1.1,升级了以下几点:

  1. 单个 TCP 上并行传输多个请求/响应(多路复用)
  2. 头部压缩
  3. 服务器主动推送资源(Server push)
  4. 彻底的二进制(HTTP/1.1 的头是纯文本)

队头阻塞

队头阻塞是 HTTP/1.x 协议中的一个性能瓶颈问题,它指的是在同一个 TCP 连接中,第一个请求的延迟会阻塞后续请求的处理

keep-alive 和多路复用

Keep-Alive in HTTP/1.X

Keep-Alive 允许在同一 TCP 连接上发送和接收多个 HTTP 请求/响应,而无需每次请求都建立新的连接,但是并不能解决队头阻塞问题,即前一个请求的延迟会影响到后续所有请求的处理

多路复用 in HTTP/2

多路复用是一种在单个 TCP 连接上同时并行处理多个请求和响应的技术。
每一个 TCP 连接中承载了多个双向流通的流,每一个流都有一个独一无二的标识和优先级,而流就是由二进制帧组成的

特点:

  • 同域名下所有通信都在单个连接上完成,消除了因多个 TCP 连接而带来的延时和内存消耗。
  • 单个连接上可以并行交错的请求和响应,之间互不干扰

多路复用与 Keep-Alive 的区别

  • 队头阻塞问题
  • 连接利用率
  • 优先级和流控制:HTTP/2 引入了请求优先级和流控制机制,允许更细粒度的控制

头部压缩

HTTP/2 开始采用算法对 HTTP 请求的头部信息进行压缩。头部压缩通过减少每次请求和响应所需传输的头部数据量,有效解决了以下问题:

  • 减少了带宽使用,提高了性能
  • 减轻了队头阻塞的影响

有没有了解过 HTTP/3

HTTP/3 是基于 **QUIC** 协议(运行在 UDP 之上),整合 TLS 1.3 握手与连接建立,支持 0-RTT 快速重连(首次连接仍为 1-RTT)
同时,HTTP/3 还通过 Connection ID 标识连接,网络切换时无需重建连接,实现无缝迁移

而 HTTP/2 是基于 TCP 协议,依赖传统 TCP 握手(1-RTT)和 TLS 加密(额外 1-RTT),总延迟通常为 2-RTT

为什么 HTTP/2 无法完全解决队头阻塞问题

HTTP/2 的 TCP 层存在队头阻塞若一个 TCP 包丢失,后续所有包(即使属于不同 HTTP 流)必须等待重传,导致整体延迟

而 HTTP/3 使用的 QUIC 协议,在 UDP 上实现多路复用,每个流(Stream)独立处理,丢失的包仅影响对应流。结合基于流的独立重传仅重传丢失的包