从HTTP3的横空出世,看各版本HTTP的区别与联系

HTTP1.1的缺点:

  • 发送一次请求需要等待响应之后才能再次请求(队头阻塞);

  • 每次重复传输头信息;

HTTP2的优化及缺点:

  • 支持连接的多路复用(仅应用层);

  • HAPCK算法压缩头信息;

过程:

2.1 建立连接:通过tcp3次握手 建立连接;TLS握手建立安全连接

2.2 慢启动预热

2.3 传输数据:应用层可以发送多个协议,但传输层TCP协议要求数据包必须顺序传输,数据包丢失会影响后续数据包发送效率(队头阻塞问题仍然存在)

2.4 关闭连接

HTTP3:

插曲:TCP升级方案:

  • fast Open:缩短连接建立时间

  • BBR拥塞控制算法:避免网络拥塞和队头阻塞

升级方案的痛点在于:1.涉及系统和设备的代码更新,测试和部署;2.版本的兼容性

TCP的更换方案QUIC(Quick Udp Internet Connections)

  • 在用户空间实现类似TCP的流量控制,拥塞控制和重传机制,确保稳定性

基于 QUIC 的 HTTP3 的优点:

  • 安全性高:集成TLS v1.3,加密是default 而非 optional

  • 建立连接快:http2建立连接需要最多3RTT(TCP 1 + TLSv1.2 2),最少2RTT(TCP 1 + TLSv1.3 1),QUIK基于UDP建立连接只需要1RTT

  • 无队头阻塞:QUIC引入 connect 和 stream 概念,多个 stream 组成一个 connect,stream 之间相互独立,丢包只会影响对应 stream 的后续数据包发送,而不会影响其他 stream,此机制在一定程度上缓解甚至消除了队头阻塞。

  • 连接迁移:一条TCP连接由4元素(src-ip,src-port,des-ip,des-port),现实生活中在wifi 和 移动网络的切换时IP发生变化,因此需要重新建立TCP连接。一条 QUIC 连接由 一个64位随机数 ID 作标识,只要 ID 不变,就不会重新建立连接。

  • 避免协议僵化:基于用户空间的协议,独立于kernel,可以在应用层进行部署更新

HTTP3/QUIC 存在的阻力:

  • 加密级别高,许多防火墙不支持 QUIC

  • UDP 常被用于网络攻击(DDoS攻击),一些网络选择阻止 UDP,以减轻网络攻击的影响

  • 对于新协议浏览器和服务器支持不完善,存在兼容性,功能完整性等问题。

你可能感兴趣的:(网络编程,http,网络,tcp/ip)