【知识点随笔分析 | 第六篇】HTTP/1.1,HTTP/2和HTTP/3的区别

这篇具有很好参考价值的文章主要介绍了【知识点随笔分析 | 第六篇】HTTP/1.1,HTTP/2和HTTP/3的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

        当今互联网已成为人们生活的重要组成部分,而HTTP协议(Hypertext Transfer Protocol)是支持Web通信的基础。随着Web技术的发展和互联网应用的不断增多,HTTP也在不断演进。本文旨在介绍HTTP的演变过程中的三个重要版本:HTTP 1.1HTTP 2HTTP 3

【知识点随笔分析 | 第六篇】HTTP/1.1,HTTP/2和HTTP/3的区别,【知识点随笔分分享】,http,网络协议,网络,原力计划

目录

前言:

​编辑

HTTP1.1:

优点:

缺点:

HTTP2:

针对HTTP1.1的改进:

缺点:

HTTP3:

总结:


HTTP1.1:

        HTTP 1.1(Hypertext Transfer Protocol 1.1)是一种用于客户端和服务器之间传输数据的协议。它是HTTP协议的第一个主要版本。HTTP 1.1于1999年发布,经过多年的广泛使用和改进。

优点:

  1. 持久连接:HTTP 1.1引入了持久连接,允许多个请求和响应在同一个TCP连接上进行。这样可以减少连接的建立和关闭所需的时间和资源,提高性能。

  2. 管道化:HTTP 1.1支持管道化,允许客户端在一个连接上同时发送多个请求,而无需等待之前的响应。这样可以减少延迟并提高效率。

  3. 分块传输编码:HTTP 1.1支持分块传输编码(Chunked Transfer Encoding),允许服务器将响应分成多个块进行发送。这样在传输较大的响应时可以逐步发送,而不需要等待整个响应生成完毕。

  4. 缓存控制:HTTP 1.1引入了更强大的缓存控制机制,包括缓存的验证、过期和重新验证机制。这样可以减少对服务器的请求,提高性能。

  5. 虚拟主机支持:HTTP 1.1支持虚拟主机,可以通过在请求头中发送Host字段来区分不同的主机。这样可以在同一个IP地址上运行多个网站,提高服务器资源的利用率。

总的来说,HTTP 1.1在之前的版本基础上进行了一系列的改进和优化,提高了性能和效率,使得网页加载速度更快和更可靠。它目前仍然是互联网上最常用的HTTP协议版本之一。

        而管道化这项技术可谓是狠狠的拷打了前后端开发人员,因为管道化后虽然可以同时发送多个请求,但是在接收请求的时候,必须按照发送时的顺序来进行接收,如果此时有包丢失,那么就会陷入队头阻塞的情况,反映到用户界面,就是网站页面一直打不开。而这种网络协议层的问题,我们只能通过开发人员来解决。

而很多网站为了解决这个问题,都会采用以下类似技术:

        1.把多个资源放到一个包里,例如本来三张图片要打包为三个包进行发送,为了尽可能减少队头阻塞的情况,我们就把这三个图片放到一张图片,只发送这集成后的单张图片,由前端人员进行裁剪

        2.把图片资源进行base64编码,直接内嵌到HTML代码中,这样在请求的时候就可以不用请求这个资源。

        3.为每个图片都设置一个图片域名,这样浏览器在接收的时候就可以同时接收,减少了队头阻塞造成的影响

        4.内嵌CSS,JS代码到HTML代码中

而以上几种方法虽然可行,但是也大大增加了开发人员的工作量,使得开发人员的精力无法几种放在开发需求上。

缺点:

  1. 性能限制:HTTP 1.1采用了串行的请求-响应模型,每个请求都需要建立一个独立的连接,响应也必须按照请求的顺序进行返回。这种方式限制了并发性能和吞吐量,尤其在处理大量资源时。

  2. 延迟问题:由于HTTP 1.1无法在同一个连接上同时发送多个请求,需要等待一个请求的响应后才能发送下一个请求,这导致了一定的延迟,尤其是在高延迟的网络环境下。

  3. 头部冗余:HTTP 1.1在每个请求和响应中都需要携带大量的头部信息,而这些头部信息在每个请求和响应中可能是重复的,造成了不必要的数据传输和浪费。

  4. 安全性问题:HTTP 1.1的通信是明文传输,容易被窃听者拦截并窃取敏感信息。此外,没有内置的加密机制也使得HTTP 1.1易受到中间人攻击等安全威胁。

  5. 无法有效利用多核处理器:由于HTTP 1.1的请求-响应模型,每个请求都需要依次处理,无法充分利用多核处理器的优势,影响了处理性能和效率。

 尤其是在后来,随着各家浏览器需要使用HTTPS,也就是需要给HTTP利用TLS上锁,上锁所导致的TLS开销使得HTTP1.1更是雪上加霜,就这样在千呼万唤中,HTTP2闪亮登场!

HTTP2:

        HTTP2(Hypertext Transfer Protocol version 2)是HTTP协议的第二个主要版本,于2015年发布。它是对HTTP 1.1的重大升级,旨在提高性能、安全性和效率。

针对HTTP1.1的改进:

  1. 二进制分帧(Binary Framing):HTTP/2使用二进制格式对数据进行分帧传输,取代了HTTP 1.1使用的文本格式。这种方式更高效地处理和传输数据,减少了延迟和带宽的消耗。

  2. 多路复用(Multiplexing):HTTP/2引入了多路复用的机制,允许在同一个TCP连接上进行并发的请求和响应。这意味着客户端可以同时发送多个请求,并且服务器可以以任意的顺序并发地返回响应,提高了并发性能和资源利用率。

  3. 头部压缩(Header Compression):HTTP/2使用了HPACK算法对请求和响应的头部进行压缩。这大幅减小了传输的数据量,降低了延迟和带宽的消耗。

  4. 服务器推送(Server Pushing):HTTP/2引入了服务器推送的机制,允许服务器在接收到一个请求后主动向客户端推送相关的资源,而无需客户端明确请求。这提高了页面加载的速度和性能。

  5. 流量优先级(Stream Prioritization):HTTP/2引入了流(Stream)和优先级(Priority)的概念,允许对不同的请求设置不同的优先级。这样可以更精确地控制和管理请求和响应的顺序,优化响应时间和用户体验。

  6. 支持加密(Encryption Support):HTTP/2推荐使用TLS(Transport Layer Security)加密传输数据,增加了通信的安全性,保护用户隐私和数据完整性。

通过这些改进,HTTP/2大幅提升了网页加载速度、并发性能和用户体验。它已经被广泛支持和采用,成为了现代Web应用的重要基础协议之一。

        HTTP2中引进的服务器推送机制,看起来很优秀,大大减少了请求响应次数,但是却存在一个明显的漏洞:

每一次点进网页之后,服务器都会主动向客户端推送相关资源,这明显就是一个不平衡的杠杆关系,我们用少量客户端就可以撬动服务器大量资源的推送,这就是可以可以进行DDOS攻击的窗口。

缺点:

  1. 需要升级的基础设施:使用HTTP/2需要服务器和客户端同时支持该协议。对于大规模和复杂的系统,升级和配置相关的基础设施可能需要一定的时间和资源。

  2. 复杂性增加:HTTP/2的引入增加了协议的复杂性。它涉及了新的概念、算法和协议机制,这可能对开发者和系统管理员的学习和实施产生一定的挑战。

  3. 兼容性问题:尽管HTTP/2已经被广泛采用,但仍然存在一些旧版本的浏览器和服务器不支持HTTP/2。为了确保兼容性,需要进行适当的检测和回退策略。

  4. TCP层面的队头阻塞:HTTP/2解决了HTTP层面的队头阻塞,但在TCP层面仍然面临潜在的队头阻塞问题。TCP的阻塞控制机制可能导致整个连接的数据传输受到阻塞,从而影响性能。

  5. 加密的资源消耗:由于HTTP/2推荐使用加密的传输层(TLS),这增加了服务器端处理和客户端解密的计算和资源消耗。这可能对一些资源受限的环境和设备产生一定的影响。

  6. 安全性问题:尽管HTTP/2支持加密传输,但错误配置或实施可能导致安全性降低。因此,正确地配置和管理TLS实现对于确保通信的安全至关重要。

尽管存在一些挑战和考虑因素,HTTP/2作为现代Web应用的重要协议,仍然在提供更好的性能和用户体验方面具有很大的优势。正确地评估和应用HTTP/2,并与其他相关技术和最佳实践结合使用,可以帮助最大程度地发挥其优势并解决潜在的缺点。

而为了解决HTTP2存在的这些问题,HTTP3应运而生

HTTP3:

        HTTP/3被称为HTTP over QUIC(QUIC即Quick UDP Internet Connections)。与之前的版本不同,HTTP/3采用了全新的传输层协议QUIC来进行数据传输。

【知识点随笔分析 | 第五篇】简单介绍什么是QUIC-CSDN博客

HTTP/3的设计目标是提供更快、更安全、更可靠的Web通信体验。它使用UDP协议,而不是基于TCP的传统HTTP协议,这是为了克服TCP在高丢包和高延迟的网络环境下的性能限制。QUIC协议在传输层提供了更好的错误恢复机制和拥塞控制算法,以减少网络延迟和提高数据传输的效率。

具体来说,HTTP/3引入了以下主要特性和改进:

  1. 快速连接建立:QUIC使用握手过程中的0-RTT和1-RTT模式,可以更快地建立连接和进行安全验证,提高了页面加载速度。
  2. 多路复用:HTTP/3支持多个请求和响应在同一连接上进行并发传输,允许更高效的资源利用和更低的延迟。
  3. 数据流优化:通过引入流量优先级和头部压缩技术,HTTP/3可以更有效地传输数据,减少带宽占用和网络拥塞。
  4. 错误恢复:QUIC提供了更强大的错误恢复机制,可以更快地恢复丢失的数据,提供更可靠的通信质量。
  5. 安全性增强:HTTP/3使用了基于TLS的加密机制来保护通信的安全性和隐私性,确保数据传输的完整性和机密性。

总的来说,HTTP/3通过引入QUIC协议和一系列改进,旨在提供更好的性能、效率和安全性。它解决了传统TCP协议在高丢包和高延迟网络环境下的不足,推动了Web通信的进一步发展。随着HTTP/3的逐渐普及和应用,用户可以期待更快、更流畅的Web体验。

总结:

HTTP 1.1在传输数据时存在诸多局限性,如多个并发请求的有序处理、高延迟和头部的冗余重复等。为了克服这些问题,HTTP标准制定机构和互联网工程任务组(IETF)发起了HTTP 2的开发。

HTTP 2以性能为中心,引入了一系列改进,旨在提高Web应用的加载速度和效率。它采用二进制协议替代了HTTP 1.1中的文本格式,引入了新的特性如多路复用、头部压缩、服务器推送和流量优先级等。这些改进使得在浏览器与服务器之间进行更有效的数据传输,提供更快的页面加载速度和更好的用户体验。

然而,随着互联网的发展,新的需求和挑战也出现了。传统的基于TCP的HTTP协议在面对高丢包和高延迟的网络环境时表现不佳。为了应对这些问题,HTTP 3应运而生。HTTP 3引入了QUIC(Quick UDP Internet Connections)协议,基于UDP协议来传输HTTP数据,通过新的传输层解决方案提供更可靠和高效的通信。HTTP 3有效地解决了高丢包和高延迟的网络环境下的性能问题,推动了Web的进一步发展。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

【知识点随笔分析 | 第六篇】HTTP/1.1,HTTP/2和HTTP/3的区别,【知识点随笔分分享】,http,网络协议,网络,原力计划文章来源地址https://www.toymoban.com/news/detail-712698.html

到了这里,关于【知识点随笔分析 | 第六篇】HTTP/1.1,HTTP/2和HTTP/3的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • http相关知识点

    一张网页实际上可能会有多种元素组成,这也就说明了网页需要多次的http请求。 可由于http是基于TCP的,而TCP创建链接是有代价的,因此频繁的创建链接会导致效率降低 为了防止这种情况,就需要两端主机都具备支持长连接的功能,将大份的资源使用一条链接就包含,也就是

    2024年02月13日
    浏览(34)
  • 系统分析师知识点汇总

    目录 1.计算机组成 1.1计算机组成与分类 1.1.1计算机的组成 1.2.1主存储器(内存) 1.2.2辅助存储器(外存磁盘如硬盘) 1.2.3Cache缓存 1.3输入输出接口 1.3.1输入输出方式 1.3.2总线和接口 1.4各种体系结构 1.4.2流水线技术 1.4.3并行处理 1.4.4互联网络 2.操作系统 2.1操作系统的类型与结

    2023年04月08日
    浏览(69)
  • 分析trace 知识点分析的很全面

    Total time breakdown:依据关键tag拆分,比如binderapplication/activitystart/doframe 找出时间差异大tag的cpu status :Running/Runnable/Sleeping/Uninterruptible sleep Running:SW-diff-check 或 cpu能力(大小核或频率) Runnable:schedule 或 cpuloading重(列出top 5 thread) Sleeping:wakeup event Memory:kswapd 排名top 3 BlockIO:IO perfo

    2023年04月25日
    浏览(32)
  • 系统分析师每日练习错题知识点

    计算机网络: RIP协议存在的一个问题就是当网络出现故障的时候,要经过比较长的时间才能把信息传送到所有的路由器。在这个中间过程中,实际就是路由环路的问题;当发生路由环路的时候,路由表会频繁的进行变化,从而导致路由表中的一条或者几条,都无法收敛,结果

    2024年02月09日
    浏览(39)
  • 补充点【数据分析统计学知识点】

    0.数据分析师拿到数据 第一利器:描述性统计信息 第二利器:对比分析法 第三利器:指标体系-要素拆解,维度拆解 第四利器:相关分析 第五利器:趋势预测 1.均值 2.中位数 3.众数 4.数据离散程度 5.数据的频数分析 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存

    2024年02月05日
    浏览(54)
  • 【软考】软考系统架构师案例分析知识点整理

    系统规划:包括系统项目的提出预可行性分析;系统方案的制定、评价和改进;新旧系统的分析和比较;现有软件、硬件和数据资源的有效利用; 软件架构设计:XML技术;基于架构的软件开发过程;软件的质量属性;架构(模型)风格;特定领域软件架构;基于架构的软件开

    2024年02月06日
    浏览(31)
  • Java体系性能测试进阶必须了解的知识点——死锁分析和锁竞争分析

    所谓 死锁 ,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。对于锁更好的理解,先要理解monitor这个概念! monitor直译过来是监视器的意思,专业一点叫管程。monitor是属于编程语言级别的,它的出现

    2024年02月07日
    浏览(33)
  • 【C语言复习】第六篇、关于C语言操作符的知识

    目录 第一部分、常见操作符 第二部分、每个操作符的具体使用         1、算术操作符 1.1、除法运算符 /  1.2、取模运算符 % 2、移位操作符 2.1、左移  2.2、右移  3、位操作符 3.1、按位异或的妙用 3.2、按位与的妙用 4、单目操作符 4.1、逻辑反操作符 !  4.2、sizeof操作符

    2024年02月11日
    浏览(51)
  • 【字节面试】Fail-fast知识点相关知识点

    字节面试,问到的一个小知识点,这里做一下总结,其实小编之前有一篇文章,已经对此有过涉及,不过这里知识专项针对于问题,把这个知识点拎出来说一下。 什么是Fail-fast机制? Hashmap是否拥有Fail-fast机制? ConcurrentModificationException异常原因和解决方法是什么? 哪些你常

    2024年01月22日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包