HTTP/1, HTTP/2和HTTP/3三者之间有何区别?

这篇具有很好参考价值的文章主要介绍了HTTP/1, HTTP/2和HTTP/3三者之间有何区别?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

超文本传输协议(HTTP)是万维网上数据通信的基础。多年来,它不断发展以满足现代网络应用日益增长的需求。在这篇文章中,我们将探讨HTTP/1.1、HTTP/2和HTTP/3之间的区别,讨论每个版本如何在其前身的基础上进行改进以提高网络性能和用户体验。

什么是HTTP?

HTTP(超文本传输协议)是在世界范围内的网络上进行数据通信的方式(不要与互联网混淆,两者是有区别的)。有3个主要版本,我们将在这里逐一介绍。

简单地说,该协议定义了浏览器如何与服务器对话以来回传递数据。在所有版本的协议中,浏览器会提出一些要求(”请求”),而服务器会发回数据(”响应”)。这是一个简单的概念,但随着时间的推移,事情变得越来越复杂,作为网络开发人员,我们必须了解该协议的后期版本有何不同。

第1节:HTTP/1.1–基础

HTTP/1.1于1997年推出,是对最初的HTTP/1.0的修订,很快成为网络的标准协议。今天开发者熟悉的许多功能都是在HTTP/1.1中引入的。HTTP/1.1的一些关键改进和功能包括:

  1. 持久连接:与HTTP/1.0不同的是,HTTP/1.1在每个请求-响应周期后都会关闭连接,而HTTP/1.1引入了持久连接,允许在一个连接上发送多个请求和响应,减少延迟并提高性能。
  2. Pipelining:HTTP/1.1还引入了流水线的概念,它允许在一个连接上发送多个请求,而不需要等待对前一个请求的响应。这提高了效率,但仍然受到 “线头阻塞 “问题的困扰,即如果第一个请求需要太长时间才能完成,那么后续请求的处理就会被推迟。
  3. 分块传输编码:这个功能允许服务器以较小的块来发送响应,而不是等待整个响应生成后再发送给客户端。这提高了网络应用的感知性能。
  4. 缓存控制机制:HTTP/1.1引入了各种缓存控制头,以管理客户端如何缓存和重新验证资源,通过减少冗余数据传输的需要来提高网络性能。

熟悉HTTP协议的人一般会对HTTP 1.1最为熟悉。在文件、资产和数据的传输方面,它的行为是大多数网络开发者所期望的那样。

HTTP 1.1是一个简单的请求和响应模型。浏览器要求提供一个文件,而服务器则对此作出回应。当你考虑到一个普通的网页可能有几十种资产(图片、样式表、脚本等)时,这就导致了在一个链条上有很多的请求和响应。

HTTP/1.1是一个相当简单的概念。让我们看看一个请求是如何工作的:

  1. 你导航到一个网站,在这个例子中,我们说accreditly.io。你的浏览器向服务器发送了一个GET请求:
    GET accreditly.io
  2. 服务器收到请求和响应的文件:
    200 OK
    
    <html>
    
    <head>
    
    <title>Accreditly - Web Development Certifications</title>
    
    [...]
  3. 在该文件中,可能有各种资产。像图片、样式表(CSS文件)和JavaScript资产(.js文件)。你的浏览器读取文档,并对队列中的每个资产重复步骤1和2。

这是一个简单的流程,很容易理解,但这里有几个问题:

  • a. 线头阻塞: 每个HTTP/1.x连接一次只能处理一个请求。这种限制常常导致网络资源的低效使用,因为随后的请求必须等待前一个请求的完成。
  • b. 缺少优先级: HTTP/1.x没有提供一种对请求进行优先排序的方法,这可能导致不太重要的资源阻塞更重要的资源。
  • c. 还有其他一些问题,比如发送的纯文本标题很大,尤其是在使用cookies时。

所有这些问题都有很大的性能影响,特别是在现代网络上。

第2节:HTTP/2–解决性能问题

2015年发布的HTTP/2,旨在解决HTTP/1.1的一些性能限制,同时保持与现有应用程序的兼容性。HTTP/2的主要改进和特点包括:

  1. 二进制框架层:与基于文本的HTTP/1.1不同,HTTP/2使用二进制框架层,允许更有效的解析,减少延迟,并降低数据传输方面的开销。
  2. 复用:在HTTP/2中,由于新的二进制构架层,多个请求和响应可以在一个连接上同时发送。这消除了HTTP/1.1中存在的线头阻塞问题,使网络资源得到了更有效的利用。
  3. 标头压缩:HTTP/2使用HPACK,一种专门为HTTP头设计的压缩算法,以减少需要通过网络发送的数据量。这减少了延迟,提高了网络性能,特别是对于连接速度较慢的用户。
  4. 服务器推送:该功能允许服务器在客户明确要求之前将资源发送给客户,可能会减少加载网页所需的往返次数。
  5. 流优先级:HTTP/2允许客户为不同的请求分配优先级,使服务器能够更有效地分配资源,更快地提供高优先级的内容。

HTTP/1, HTTP/2和HTTP/3三者之间有何区别?,服务器运维与开发环境,http,网络协议,网络

图片来源:HTTP Archive

与过去相比,现在网页的平均大小是巨大的。此外,网页现在加载资产的速度远远超过了我们连接速度的提高。根据HTTP档案,网页上的图像的平均尺寸增长了8000%,图像的数量也是如此,这还没有涉及到JavaScript和其他资产。这是一个大问题。

那么,HTTP/2有什么帮助?

HTTP/2中引入了许多功能,人们关注的主要好处是多路复用

网络开发者享有的HTTP/2的主要好处之一是能够复用资产。虽然协议本身的作用比这个简单的例子要多得多,但想象一下上面的单个网页的例子,在HTTP 1.1中,资产是一次一个地被加载。有了HTTP/2,浏览器和服务器的沟通就更有效率了,在一个请求中请求文档、资产、图像、样式表、脚本等,然后在服务器的一个响应中接收它们。

HTTP/1, HTTP/2和HTTP/3三者之间有何区别?,服务器运维与开发环境,http,网络协议,网络

图片来源:Accreditly。

浏览器和服务器都需要支持HTTP/2才能进行,尽管现在很少有不支持的情况。

HTTP/2依靠相同的底层协议来运行: TCP。这既是积极的一面,也是消极的一面。因为HTTP/1.x已经使用了TCP,这意味着采用它要容易得多;浏览器不需要实现一个新的底层协议,而服务器可以继续像现在这样运行,只需进行一些调整就可以实现HTTP/2的功能。缺点是,TCP存在一些问题,特别是在高延迟和有损的网络中。

第3节:HTTP/3–进入QUIC

HTTP/3是该协议的最新版本,目前正在进行标准化和采用。它引入了重大变化,以解决HTTP/2的限制,并进一步提高网络性能。HTTP/3中最显著的变化是用新的QUIC协议取代了传输控制协议(TCP)。QUIC是快速UDP互联网连接的缩写,是一个传输层协议,旨在提供比TCP更低的延迟和更好的性能。

HTTP/3的主要改进和特点包括:

  1. QUIC协议:QUIC是一个比TCP更有效的传输层协议,提供更快的连接建立,内置加密和更好的拥堵控制。它还消除了传输层的线头阻塞,进一步提高了网络性能。
  2. 基于UDP的传输:与使用TCP的HTTP/1.1和HTTP/2不同,HTTP/3使用用户数据报协议(UDP)。UDP是一个无连接协议,允许更快的数据传输和更低的延迟。然而,它不能保证可靠的交付,所以QUIC纳入了自己的可靠性机制。
  3. 连接迁移:QUIC支持连接迁移,允许客户在网络接口之间切换(例如从Wi-Fi到移动数据)而不中断正在进行的连接。这对于可能经常在不同网络之间切换的移动设备特别有用。
  4. 改进安全性:QUIC包括基于传输层安全(TLS)1.3的内置加密,确保客户端和服务器之间的安全通信。该协议还提供额外的安全功能,如防止连接伪造和篡改。

HTTP/1, HTTP/2和HTTP/3三者之间有何区别?,服务器运维与开发环境,http,网络协议,网络

图片来源:Cloudflare关于HTTP/3的文章。

HTTP/3和QUIC听起来不错,对吗?

嗯,是的,在理论上。问题是,对于浏览器和供应商来说,实现这些功能是一个很大的任务,更不用说与网络基础设施的兼容性问题。

许多大型网络根本不支持UDP,因此,在UDP之上的新协议上输送流量,可能是一个遥远的过程。

也就是说,像Cloudflare这样的大公司正在为他们的客户提供HTTP/3的支持,而且Chrome、Edge和Firefox等浏览器也有支持。你可能会注意到Safari不在这个名单中;苹果公司在提供对新功能和协议的支持方面通常比较晚,而且经常实施他们自己的版本的东西。根据CanIUse的说法,Safari对HTTP/3有部分支持,而且只对一些用户可用。但请记住,HTTP/3还没有正式发布,所以事情可能会发生变化。

第4节:比较和采用

虽然HTTP/1.1已经为网络服务了很多年,但HTTP/2和HTTP/3提供的性能改进是非常大的。HTTP/2和HTTP/3都解决了HTTP/1.1的局限性,并提供了对现代网络应用至关重要的功能,如多路复用、头压缩和改进的安全性。

HTTP/2已经被广泛采用,大多数现代浏览器和网络服务器都支持它。另一方面,HTTP/3仍处于采用的早期阶段,但随着协议的成熟和证明其价值,支持也在增加。

值得注意的是,HTTP/2和HTTP/3的设计是向后兼容HTTP/1.1的,因此网络开发者可以逐步采用这些较新的协议而不破坏现有的应用程序。实施HTTP/2和HTTP/3通常涉及更新网络服务器和浏览器,而应用程序代码基本保持不变。

说到这里,从HTTP 1.1到HTTP/2的转变相对来说是不痛不痒的,因为两者都是坐在相同的基础技术和协议上: TCP。从HTTP/2到HTTP/3需要采用QUIC和UDP,以及对TLS 1.3的独家支持,这是一种用于加密流量的技术,目前还没有被完全采用。

小结

HTTP从1.1版本到HTTP/2和HTTP/3的演变表明了为提高网络性能和用户体验所做的持续努力。每个版本都引入了新的功能和改进,以解决其前身的局限性,从而使网络更快,更有效,更安全。

作为一个网络开发者,必须了解这些进展,并准备在新技术得到更广泛的支持时采用它们。通过了解HTTP/1.1、HTTP/2和HTTP/3之间的差异,你将更好地优化你的网络应用,并为你的用户提供尽可能好的体验。文章来源地址https://www.toymoban.com/news/detail-821441.html

到了这里,关于HTTP/1, HTTP/2和HTTP/3三者之间有何区别?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 独立服务器和云计算之间的区别

    独立服务器和云计算之间的区别 云计算如今风靡一时,提供了冗余、可扩展性和按需服务,但人们对许多网络托管提供商宣传的云到底是什么充满了疑问。唉,云计算不能被用来适应每一个业务应用,因此这种对独立服务器和云服务之间基本区别的解释。 磁盘输入输出 正确

    2023年04月11日
    浏览(67)
  • 华为云和阿里云ECS服务器之间的区别

    据IDC发布的云服务市场报告显示,阿里云市场占有率超过45%,腾讯云达到10%。一旦云服务器ecs宕机,受影响的企业将会不计其数。去年一年阿里宕机事故频繁发生,导致部分企业对阿里云ECS信心持续走低,从而转向了新兴的华为云,华为云服务器ecs和阿里云ecs有什么区别呢?

    2024年02月15日
    浏览(34)
  • 代理服务器之 squid、lvs、nginx、haproxy之间的区别

    代理服务可简单的分为 正向代理 和 反向代理 正向代理服务器:squid 用于代理内部网络对 Internet 的连接请求(如 VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标 Web 服务器的 HTTP 请求先发送到代理服务器上,然后由代理服务器去访问 Web 服务器,并将 Web 服务器的

    2024年02月12日
    浏览(41)
  • Nginx与Tomcat的区别,什么是HTTP服务器(处理静态资源的服务器),什么是处理动态资源的服务器

    Nginx和Tomcat都是常用的Web服务器,但它们的主要作用不同。 Nginx是一个HTTP服务器,反向代理服务器和通用TCP/UDP代理服务器。 它通常用于静态内容、媒体流和负载均衡。在高流量和高并发负载下,Nginx表现更出色,并且能够轻松处理静态文件、压缩和SSL/TLS卸载等任务,以减轻

    2024年02月14日
    浏览(29)
  • http和https区别,第三方证书如何保证服务器可信

    目录 HTTP和HTTPS有以下区别: 第三方证书如何保证服务器的可信性 需要注意哪些方面 可能遇到什么问题 随着互联网技术的不断发展,数据传输的安全性越来越受到人们的关注。HTTP和HTTPS是两种常用的网络协议,它们之间的主要区别在于数据传输是否加密。而在HTTPS中,第三方

    2024年02月09日
    浏览(42)
  • 计算机病毒,蠕虫,木马三者之间的区别

    病毒、蠕虫和木马是可导致计算机和计算机上的信息损坏的恶意程序。 根据《中华人民共和国计算机信息系统安全保护条例》,病毒的明确定义是“指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序

    2023年04月14日
    浏览(31)
  • 高防服务器面对DDOS攻击的威胁有何必要性

    高防服务器面对DDOS攻击的威胁有何必要性?分布式拒绝服务(DDoS)攻击是一种常见而危险的网络攻击形式,它可以使目标网络服务器过载,导致服务不可用。本文将深入探讨DDoS攻击的威胁,以及高防服务器在抵御这种攻击中的重要性。了解DDoS攻击的威胁和采取相应的防护措

    2024年02月10日
    浏览(37)
  • JDK、JRE、JVM三者之间的关系以及区别

    JDK = JRE + Java 开发工具包 [Java,Javac,Javadoc,Javap等] JRE = JVM + Java 的核心类库 JDK是用于Java程序 开发 的最小环境,包含:Java程序设计语言,Java虚拟机(JVM),Java类库(API)。它能够创建和编译程序 JRE是Java程序 运行 的标准环境。包含:Java类库和Java虚拟机(JVM)。如果想运行一

    2024年02月16日
    浏览(37)
  • JDK、JRE与JVM三者之间的关系及区别

    JDK = JRE + Java 开发工具包 [Java,Javac,Javadoc,Javap等] JRE = JVM + Java 的核心类库 什么是JDK,JDK是用于Java程序开发的最小环境,包含:Java程序设计语言,Java虚拟机(JVM),Java类库(API)。它能够创建和编译程序。 什么是JRE,JRE是Java程序运行的标准环境。包含:Java类库和Java虚拟机

    2024年02月16日
    浏览(34)
  • pycharm是什么?各版本之间有何区别?

    pycharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制,是Python开发中非常常见的工具之一。pycharm分为社区版、教育版和专业版,其中社区版和专业版

    2024年02月06日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包