首页 > 其他分享 >http2和http3

http2和http3

时间:2024-12-29 14:23:14浏览次数:6  
标签:TLS HTTP http3 TCP QUIC http2 连接 请求

HTTP/2 和 HTTP/3 是 HTTP 协议的升级版本,主要为了解决 HTTP/1.x 协议的性能瓶颈和安全性问题。以下是它们的主要目标和解决的问题:

HTTP/2 的主要目标和解决的问题

1. 性能优化

  • 多路复用(Multiplexing):

    • HTTP/1.x 中,每个请求需要单独建立一个 TCP 连接,或者使用持久连接(Keep-Alive)但仍然是串行处理请求。
    • HTTP/2 允许在同一个 TCP 连接上并行发送多个请求和响应,减少了延迟。
  • 头部压缩(Header Compression):

    • HTTP/1.x 的头部信息是纯文本,且每次请求都会重复发送相同的头部(如 User-Agent、Cookie 等)。
    • HTTP/2 使用 HPACK 算法对头部进行压缩,减少了数据传输量。
  • 服务器推送(Server Push):

    • HTTP/2 允许服务器在客户端请求之前主动推送资源(如 CSS、JavaScript 文件),减少了额外的请求延迟。

2. 安全性

  • HTTP/2 通常基于 HTTPS(TLS/SSL)运行,强制加密传输数据,提高了安全性。

3. 二进制协议

  • HTTP/1.x 是基于文本的协议,解析效率较低。
  • HTTP/2 使用二进制格式传输数据,解析效率更高,减少了错误。

HTTP/3 的主要目标和解决的问题

1. 基于 QUIC 协议

  • HTTP/3 使用 QUIC 协议代替 TCP,解决了 TCP 的一些固有缺陷:**
    • 队头阻塞(Head-of-Line Blocking):
      • 在 HTTP/2 中,如果 TCP 连接中的一个数据包丢失,整个连接会被阻塞,直到丢失的数据包重传成功。
      • QUIC 基于 UDP,每个流(Stream)独立处理,避免了队头阻塞。
    • 连接迁移:
      • QUIC 使用连接 ID 而不是 IP 地址和端口来标识连接,当用户切换网络(如从 Wi-Fi 切换到移动数据)时,连接可以无缝迁移。

2. 更快的连接建立

  • QUIC 集成了 TLS 1.3,减少了握手次数,连接建立速度更快。
  • 在 HTTP/2 中,TCP 和 TLS 需要分别握手,增加了延迟。

3. 改进的拥塞控制

  • QUIC 提供了更灵活的拥塞控制机制,能够更好地适应不同的网络环境。

4. 安全性

  • HTTP/3 强制使用 TLS 1.3,确保数据传输的安全性。

总结

  • HTTP/2 主要解决了 HTTP/1.x 的性能瓶颈,通过多路复用、头部压缩和服务器推送提高了性能。
  • HTTP/3 进一步优化了性能,通过基于 QUIC 协议解决了 TCP 的队头阻塞问题,并提供了更快的连接建立和连接迁移功能。

标签:TLS,HTTP,http3,TCP,QUIC,http2,连接,请求
From: https://www.cnblogs.com/zjw-blog/p/18638732

相关文章

  • 让Chrome http3[QUIC]通信支持所有类型证书,自签名+信任机构
    Chromehttp3通信默认仅支持信任机构发行的证书,.net的开发者证书或CloudFlare的10年证书,或者其他自己创建的自签名证书是开启不了http3通信的。通过下面设置可以开启对自签名证书的支持,这样就可以愉快的使用http3测试了:Chrome最新版,目前是131,地址栏输入:chrome://flags,然后搜......
  • websocket和http2有什么区别?http2能取代websocket吗?为什么?
    WebSocket和HTTP/2都是现代的网络协议,用于客户端和服务器之间的通信,但它们的设计目标和工作方式不同,因此各有优缺点。HTTP/2不能完全取代WebSocket。主要区别:连接类型:HTTP/2是基于请求-响应的模型,即使是服务器推送,客户端也需要先发起请求。WebSocket则建立一个持久连接,客户......
  • 长链接在http2中与http/1.1协议中有什么区别?
    在HTTP/1.1中,为了克服队头阻塞问题以及提高页面加载速度,浏览器会与服务器建立多个TCP连接,并行地下载资源。然而,过多的连接也会带来新的问题,例如连接建立的开销、资源竞争等。在HTTP/2中,引入了多路复用的概念,它允许在单个TCP连接上并发地传输多个请求和响应。这意味着浏览......
  • 简单比较 http https http2,我们要如何把http升级为https
    ......
  • nodejs起一个http2
    静态页面其实就是复制官网的代码其中证书是我自己申请的可以用证书dingshaohua.comimportfsfrom"fs";importhttp2from"node:http2";constserver=http2.createSecureServer({key:fs.readFileSync("/etc/letsencrypt/live/dingshaohua.com/privkey.pem"),......
  • nginx代理http2服务
    NGINX不支持HTTP/2到后端,这从官方文档中可以看出,支持后端的最高HTTP版本为v1.1。其实添加此类支持实际上没有什么意义,因为HTTP/2的主要功能是请求多路复用。可当NGINX处理HTTP代理时,前端NGINX会将请求路由到后端的匹配位置(因为NGINX总是检查单个请求并将其路由到某个......
  • 【网络】QUIC协议和HTTP3
    面试常考,临时抱佛脚学一下。参考https://zhuanlan.zhihu.com/p/266578819HTTP1.0和HTTP1.1HTTP1.0中,每一个请求必须等上一个请求收到响应了才能继续。且每一次请求都会重新建立TCP链接。HTTP1.1中可以复用TCP链接,但是依旧没有解决队头阻塞的问题,虽然复用了TCP链接,但是请求B依旧需......
  • OKhttp3
    okHttp3restTemplate引入//创建ConnectionPoolConnectionPoolconnectionPool=newConnectionPool(5,5,TimeUnit.MINUTES);//创建OkHttpClient并设置参数OkHttpClientokHttpClient=newOkHttpClient.Builder().connectio......
  • HTTP1.x HTTP2 HTTP3 的简单对比
    协议简要描述比喻HTTP1.0短连接,一次数据通信,结束后就断开一次性道路,简单暴力通过。HTTP1.1长连接,连接可以被复用,但需要按照资源顺序复用。单向单车道,婚礼车队,不能逆序。HTTP2连接复用,增加了http头部压缩和帧传输,连接可以被异步服用,服务器端可以主动推送资源......
  • 如何通过`HTTP2`实现TCP的内网穿透?
    可能有人很疑惑应用层转发传输层?,为什么会有这样的需求啊???哈哈技术无所不用其极,由于一些场景下,对于一个服务器存在某一个内部网站中,但是对于这个服务器它没有访问外网的权限,虽然也可以申请端口访问外部指定的ip+端口,但是对于访问服务内部的TCP的时候我们就会发现忘记申请了!这个时......