HTTP/3 竟然基于 UDP,HTTP 协议这些年都经历了啥?

本文介绍了HTTP协议从1.0到3.0的演进过程,重点关注HTTP/2的多路复用、Header压缩等特性以及HTTP/3采用QUIC协议的原因,探讨了从TCP转向UDP的必要性和QUIC的优势,如0RTT连接、多路复用及前向纠错机制。
摘要由CSDN通过智能技术生成

听到 HTTP/3 基于 UDP 协议的消息,不少人可能都跟我一样惊呆了。

我们从开始学习网络协议就一定会接触到 HTTP,而教科书或者老师一直以来说的都是“UDP 不可靠,所以 HTTP 基于 TCP 协议”,虽然偶尔会思考“UDP 与 TCP 都是比较底层的协议,用 TCP 来定义上层的 HTTP 协议,也是需要经过一系列设计和封装的,那凭什么 UDP 就不可以试试呢?”、“是成本问题?HTTP 在 TCP 之上设计的成本也不低啊,比如三次握手、四次挥手、滑动窗口等构思精妙的算法,也都是在经过无数次设计与尝试之后确定下来的。”……但是总之 HTTP 只能基于 TCP,而不能是 UDP 这一思维还是在一道道试题和一次次编程 request-response 的过程中固定在脑海里。

所以 HTTP/3 不再基于 TCP 而是采用了 UDP,这一消息还是挺让人惊讶的。

看到这里可能有人会惊讶于另一个点:什么?!HTTP 协议都发展到 v3 了

其实目前正逐渐走向主流的 HTTP 协议是 HTTP/2,它相比于 HTTP/1,大幅度提高了性能,网站只需要升级到新版本协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何优雅降级是比较棘手的问题,这也应该是国内目前还不普遍使用 HTTP/2 的重要原因。

虽然 HTTP/2 带来了许多优点,但是并不代表它已经是完美的了,HTTP/3 就是为了解决 HTTP/2 所存在的一些问题而被推出来的。

本文接下来会从基础的 HTTP/1 开始讲起,从第一代协议到第三代分别针对性地介绍,试图把 HTTP 这一协议的技术发展过程以简要通俗的方式分享给读者,并让大家明白,为什么经过这么多年的发展,HTTP 协议最终竟然采用了不安全的 UDP。

一、HTTP 协议

HTTP 是 HyperText Transfer Protocol(超文本传输协议)的缩写,它是互联网上应用最为广泛的一种网络协议,所有 WWW 文件都必须遵守这个标准。

伴随着计算机网络和浏览器的诞生,HTTP 1.0/1.1 也随之而来,它建立在 TCP 协议之上,处于计算机网络中的应用层,所以 HTTP 协议的瓶颈及其优化技巧都是基于 TCP 协议本身的特性,例如 TCP 建立连接的 3 次握手和断开连接的 4 次挥手,以及每次建立连接带来的 RTT 延迟时间等。

HTTP 1.0 与 1.1 的主要区别在于长连接支持、多路复用、带宽节约与数据压缩等,相对于 HTTP/2,本文将其通称为 HTTP/1。

二、HTTP/1 的缺陷

HTTP/1 在 Web 时代迅速崛起,但是随着采用日涨,其缺陷也暴露出来。

不管是 1.0 还是 1.1 版本,HTTP/1 都主要存在以下几个方面的缺陷:

  • 连接无法复用:连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对大量小文件请求影响较大(没有达到最大窗口请求就被终止)。

    • HTTP/1.0 传输数据时,每次都需要重新建立连接,增加延迟。
    • HTTP/1.1 虽然加入 keep-alive 可以复用一部分连接,但域名分片等情况下仍然需要建立多个 connection,耗费资源,给服务器带来性能压力。
  • Head-Of-Line Blocking(HOLB,队头阻塞):这会导致带宽无法被充分利用,以及后续健康请求被阻塞。HOLB 是指一系列包(package)因为第一个包被阻塞;当页面中需要请求很多资源的时候,HOLB 会导致在达到最大请求数量时,剩余的资源需要等待其它资源请求完成后才能发起请求。

    • HTTP 1.0:下个请求必须在前一个请求返回后才能发出,request-response对按序发生。显然,如果某个请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值