Administrator
Administrator
Published on 2024-12-14 / 3 Visits
0
0

http协议的演变

http协议的演变

HTTP1.1

第一个http版本

严格要求一个请求对应一个回复,如果请求链中任意文件未能接收到,会造成剩余所有文件的阻塞

image

http1.1使用持久连接,即TCP实现,想要并发请求就得开启多个TCP,容易造成DDos攻击

最致命的缺点:

  1. 在https标准发布后,TCP握手加HTTPS握手冗余而又臃肿,极大的加大了时延

    image

  2. 而且TCP为防止流量过大崩溃有慢启动机制,即数据包逐渐增加,一开始很慢,这进一步拉大了时延

  3. 首部不压缩,cookie每次都要传输造成首部臃肿

HTTP/2

多路复用

在一个TCP请求内可以发起多个请求

  • 将首部与实体拆分开来,通过流标识符区分,按照顺序组合,甚至标记流的权重,更类似帧,解决网络层队头阻塞
  • 报文首部压缩
  • 放弃ascii编码,采用二进制流传输数据
  • 基本伴随HTTPS使用
  • 支持流控

HTTP/3

  • 为了解决传输层的对头阻塞,从而将底层从TCP改为UDP实现,但本质上就是用UDP模仿TCP的理念和原理
  • 将TCP握手+TLS握手合并为QUIC握手加速甚至允许短期断联复用
  • 默认加密传输
  • RTT减少

RTT:Round Trip Tune即一次来回所用的时间,通常认为TCP过程为1RTT,,TLS过程为2RTT,所以HTTP/2需要3或2RTT,取决于TLS版本,HTTP/3首次1RTT,后续恢复通信0RTT

本质上就是在Client Hello与Server Hello传递基础密钥与加密,之后就是加密通信(详见文章https详解)

image

image

性能测试

参考视频:HTTP3 HTTP2性能直观对比

稳定网络环境情况下,性能和http2不相伯仲,但是弱网环境下可以无需等待传输失败的数据,有一定优势


Comment