详解HTTP1、HTTP2、HTTP3
HTTP/1.1
- 支持持久连接:在同一个连接上可以发送多个请求和响应,减少了连接建立和断开的开销。
- 串行的请求和响应:每次只能处理一个请求,如果某个请求阻塞了,后续的请求必须等待。
- 无法压缩请求头:每次请求都携带大量重复的头部信息,浪费了带宽。
- 不支持服务器推送:服务器无法主动推送响应数据给客户端,需要客户端发起请求。
HTTP/2
- 多路复用:多个请求可以同时在同一个连接上进行,避免了串行传输的效率问题。
- 请求优先级和流控制:可以设置请求的优先级,优先处理重要的请求,并且可以根据网络条件进行流量控制。
- 压缩头部信息:可以使用头部信息的静态字典和动态哈夫曼编码进行压缩,减少了头部的数据传输时的大小。
- 服务器推送:服务器可以主动推送响应数据给客户端,减少了客户端发起请求的次数。
HTTP/3
- 基于 QUIC 协议:HTTP/3 使用 QUIC(Quick UDP Internet Connection)作为传输协议,取代了 TCP。QUIC 使用 UDP 连接,在网络切换和移动环境下具有更好的性能。
- 减少连接建立的延迟:QUIC 支持零RTT连接,可以快速建立连接,减少了握手的延迟。
- 抗丢包和流量控制:通过使用 QUIC 的差错恢复机制,提高了对丢包的容忍度,并且具备更好的流量控制。
- 支持快速握手和迁移:QUIC 具有快速握手和连接迁移的能力,可以快速适应网络环境的变化。