浏览器常见问题
返回 相关私有笔记 · 相关私有笔记
📑 本目录笔记
运行机制
网络与协议
安全
其他
- 相关私有笔记
- UUID
HTTP 和 HTTPS 的区别
有没有了解过 HTTP/2
HTTP/2 相比于 HTTP/1.1,升级了以下几点:
- 单个 TCP 上并行传输多个请求/响应(多路复用)
- 头部压缩
- 服务器主动推送资源(Server push)
- 彻底的二进制(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)独立处理,丢失的包仅影响对应流。结合基于流的独立重传,仅重传丢失的包