HTTP协议演进:为什么说HTTP/1.1的时代已经过去了

news2024/11/19 13:16:11

前言

  欢迎来到今天的每日一题,每日一提。昨天聊到了,HTTP 是什么。有哪些组成部分。并且最后提到了 HTTP 的一些缺点,比如:性能较低,容易导致网络拥塞和延迟,不支持服务器推送等等。设计协议的大佬们,对这样的缺点肯定是不能容忍的,所以 HTTP2 它来了。

什么 HTTP2?

  HTTP/2 是一种网络协议,用于在 Web 浏览器和服务器之间传输数据。它是 HTTP/1.1 的升级版本,旨在提高性能和安全性,特别是在现代 Web 应用程序中,这些应用程序通常依赖于大量资源和实时通信。HTTP/2 具有许多改进,包括二进制数据格式,多路复用,头部压缩,服务器推送等等,这些改进可以减少网络延迟,提高数据传输速度,并使 Web 应用程序更加高效和可靠。

相对于 HTTP 有那些改进?

  1. 二进制协议:HTTP/2 采用二进制格式传输数据,与 HTTP/1.1 的文本格式不同,这意味着数据传输更加高效,且协议更易于解析和处理。

  2. 多路复用:HTTP/2 允许在同一个 TCP 连接上同时发送多个请求和响应,而不是像 HTTP/1.1 那样需要建立多个连接,从而提高了网络性能,减少了网络延迟。

  3. 首部压缩:HTTP/2 使用首部压缩技术来减少数据传输的大小,减少网络延迟,提高性能。

  4. 服务器推送:HTTP/2 支持服务器主动向客户端推送资源,从而减少客户端请求的数量,提高性能和响应速度。

  5. 流量控制:HTTP/2 引入了流量控制机制,可以避免网络拥塞和传输阻塞,提高网络性能和稳定性。

  6. 支持加密:HTTP/2 强制要求使用加密通信,提高了数据的安全性和隐私保护。

HTTP2 就完美了嘛?

  虽然 HTTP/2 在性能和安全性方面有许多改进,但它并不是完美的协议,仍然存在一些限制和挑战。

以下是 HTTP/2 仍面临的一些问题:

  1. 兼容性问题:虽然 HTTP/2 已经被广泛支持,但仍有一些旧版本的浏览器和服务器不支持 HTTP/2,这可能会导致一些兼容性问题。

  2. 依赖于 TCP 协议:HTTP/2 协议仍然依赖于 TCP 协议来传输数据,这意味着在高延迟的网络环境中,HTTP/2 的性能可能会受到影响。

  3. 安全性问题:虽然 HTTP/2 强制要求使用加密通信,但在一些安全性较弱的网络环境中,仍然存在安全风险和攻击威胁。

  4. 复杂性问题:相比于 HTTP/1.1,HTTP/2 协议具有更复杂的实现和部署要求,这可能增加了协议实施的复杂性和成本。

  5. 服务器推送问题:虽然服务器推送可以提高性能,但在一些情况下,可能会导致资源的浪费和传输效率的降低,需要仔细权衡利弊。

  总的来说,HTTP/2 是一种具有改进的网络协议,但仍需要进一步的发展和优化,以应对不断变化的 Web 应用程序和网络环境的挑战。所以 HTTP3 来了。

HTTP3

  HTTP/3 是基于 QUIC 协议的下一代 Web 协议,在2020年发布,它的目标是通过减少网络延迟和提高传输速度来改善 Web 应用程序的性能。与 HTTP/2 和 HTTP/1 相比,HTTP/3 采用了全新的传输层协议,即 QUIC 协议,以提供更好的性能和安全性。

  QUIC 协议是一种基于 UDP 协议的传输层协议,由 Google 开发。它具有快速连接建立、流多路复用、零往返延迟、可靠的数据传输和内置的加密等特点,这些特点可以帮助加速 Web 应用程序的加载速度,减少网络延迟和提高安全性。

HTTP3 新特性

HTTP/3 是在基于 QUIC 协议的下一代 Web 协议,具有以下一些新特性:

  1. 传输协议改进:HTTP/3 采用了 QUIC 作为其传输层协议,相对于 TCP 和 UDP,QUIC 具有更快的连接建立和更好的性能,同时提供了可靠的数据传输和安全性。QUIC 协议的快速连接建立和零往返延迟特性有助于减少网络延迟和提高 Web 应用程序的性能。

  2. 流多路复用:HTTP/3 使用流多路复用技术,可以在单个连接上同时传输多个请求和响应,提高了并发处理的效率。

  3. 可靠的数据传输:HTTP/3 使用 QUIC 协议的可靠性传输机制,可以保证数据的可靠传输,避免了 HTTP/2 中出现的丢包和重传问题。

  4. 快速重传和拥塞控制:HTTP/3 使用 QUIC 协议的快速重传和拥塞控制机制,可以更好地处理网络拥塞和丢包,提高了 Web 应用程序的可靠性和性能。

  5. 加密:HTTP/3 使用 TLS 1.3 协议进行加密,可以保护 Web 应用程序免受中间人攻击和数据泄露。

  6. 更小的延迟和带宽消耗:HTTP/3 通过优化流控制和拥塞控制等机制,可以在保证数据传输可靠性的前提下,减少网络延迟和带宽消耗。

缺点

虽然HTTP/3具有许多优点和新特性,但它也有一些缺点:

  1. 兼容性问题:由于HTTP/3基于QUIC协议,而QUIC协议在全球范围内的支持程度相对较低,因此HTTP/3的普及和广泛支持仍需要时间。

  2. 部署复杂性:HTTP/3需要使用新的协议栈和服务器端软件,这会增加部署和维护的复杂性和成本。

  3. 中间设备限制:由于HTTP/3使用的是基于UDP的QUIC协议,而一些网络设备(如代理服务器和防火墙)可能会阻止UDP流量,这可能会对HTTP/3的使用造成一些限制。

  4. 更高的 CPU 开销:HTTP/3使用了加密和解密技术以确保安全性,这会带来更高的CPU开销,可能会对服务器性能和响应时间产生一些影响。

  5. 可能增加网络拥塞:由于HTTP/3支持更快的连接建立和数据传输,这可能会导致更多的数据流经过网络,可能会增加网络拥塞的风险。

总结

  随着互联网的不断发展,HTTP 协议也在不断进化和改进,从 HTTP/1.0 到 HTTP/1.1,再到 HTTP/2 和 HTTP/3,每一个版本都带来了更加先进的技术和更好的性能优化。同时也推动了 Web 应用程序的发展和优化,为用户带来更好的网络体验和更高的效率。

  HTTP/3虽然具有许多优点和新特性,但它也有一些缺点和限制。这些问题需要被认真考虑和解决,以确保HTTP/3能够在更广泛的场景下得到应用和推广。

  所以我们在做技术选型时不能一味的追新,新技术虽然具有许多优点和新特性,但是这些新技术也需要更加复杂的基础设施和更高的性能要求,同时也需要我们不断学习和适应。

结尾

  如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。

  我是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/516932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT实现安全漏洞检查

安全漏洞检查 几乎每一项新技术的出现,都会首先被运用在安全领域,ChatGPT 也不例外。在 ChatGPT 出现的第一时间,利用 ChatGPT 编写钓鱼邮件,进行社会工程学攻击,辅助分析代码漏洞等等就成为热门话题。其实技术只是工…

快速上手Vite 配置指南

💂 个人网站:【紫陌】【笔记分享网】 💅 想寻找共同学习交流、共同成长的伙伴,请点击【前端学习交流群】 文章最后有作者l联系方式(备注进群) 1.认识vite 什么是vite呢? 官方的定位:下一代前端…

《水经注地图服务》数据源说明

(本文首发于“水经注GIS”公号,关注公号免费领取地图数据) 《水经注地图服务》(WeServer)是一款可快速发布全国乃至全球海量卫星影像的地图发布服务产品,该产品完全遵循OGC相关协议标准,是一个…

老板给情人转166万,妻子起诉后追回,网友:这是被白嫖三年

作为一个已婚男人,戚某在婚姻关系中背离了对妻子的忠诚,与小自己14岁的女员工小汪发展出不正当的男女关系。而小汪,在明知对方已婚的情况下,仍然选择继续纠缠,最终付出了惨痛的代价。 据了解,戚某在上海经营…

会议签到二维码制作教程

纸质签到表、人工逐一核对等传统的会议签到方式,存在着耗时耗力、容易出错、不环保等种种弊端。 可以制作一个包含签到表单的签到二维码,参会人员使用微信扫码签到,自动授权填写手机号、定位等信息,管理人员在小程序以及电脑端实…

【团购-自己实现代理 Objective-C语言】

一、我们上节课,实现了数据加载,下面是不是有个加载更多啊, 1.我们先把这个“加载更多”给大家做一下, 这个加载更多,注意看,因为这个加载更多,是显示在UITableView的最底部的, 它会随着UITableView一起滚动吧, 证明,它是在UITableView的tableFooterView里面显示的…

Linux系统中tar.gz与rpm结尾的文件在安装程序时究竟有什么不同?

tar.gz tar.gz就是一个压缩包! 使用的时候需要使用tar命令配上一些参数来进行解压。 关于tar的使用,大家可以参考这篇博客,这位大佬写的很详细。 Linux tar命令详解 在解压完后,这就是一个独立的文件,里面包含着关…

第十五章_Redis与MySQL数据双写一致性工程落地案例

复习面试题 采用双检加锁策略 多个线程同时去查询数据库的这条数据,那么我们可以在第一个查询数据的请求上使用一个 互斥锁来锁住它。 其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后做缓存。 后面的线程进来发现已经…

Redis内幕揭秘:探索Redis基础知识及应用场景,挖掘出高效的缓存技术

Redis 是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。以下是 Redis 的发展史: 2009 年:Salvatore Sanfilippo 开始编写 Redis。2010 年:Redis 发布了 1.0 版本。这个版本包含了许多常用的数据结构&…

在陌生人社交场景 挖呀挖呀挖……

在陌生人社交场景 挖呀挖呀挖, 找可靠的大品牌(网易),享最优惠的价~ 😄 对于“深挖”娱乐社交领域需求的开发者来说,陌生人社交是毋庸置疑最受青睐的场景。尤其是对渴望交流、敢于表达自我的年轻人来说&…

10-HTML-表单标签

标签描述<form>定义供用户输入的 HTML 表单。<input>定义输入控件。<textarea>定义多行的文本输入控件。<button>定义按钮。<select>定义选择列表&#xff08;下拉列表&#xff09;。<optgroup>定义选择列表中相关选项的组合。<option&…

【Rust日报】2023-05-10 llm - 使用Rust在CPU上运行大模型

llm - 使用Rust在CPU上运行大模型 这是一套工具。目前支持这些模型&#xff1a; GPT-2GPT-JLLaMA: LLaMA, Alpaca, Vicuna, Koala, GPT4All v1, GPT4-X, WizardGPT-NeoX: GPT-NeoX, StableLM, Dolly v2 (partial, not the same tensor names?)BLOOM: BLOOMZ https://github.co…

多优先级(笔记)

目录 支持多优先级的方法通用方法优化方法1、修改任务控制块2、修改xTaskCerateStactic()修改 prvInitialiseNewTask() 函数prvAddTaskToReadyList()初始化任务列表prvAddTaskToReadyList()vTaskStartScheduler()vTaskDelay()vTaskSwitchContext()xTaskIncrementTick() 实验实验…

如何成就一个伟大的公司?

任何事物都不及“伟大”那样简单&#xff0c;事实上&#xff0c;能够“简单”便是伟大。最优秀的模式&#xff0c;往往是最简单的东西。 那么&#xff0c;如今作为一名创业者&#xff0c;要如何才能更好的发展自己的公司&#xff0c;把带领的团队打造成为一个伟大的公司呢&…

MySQL基础(二十八)索引优化与查询优化

都有哪些维度可以进行数据库调优?简言之: 索引失效、没有充分利用到索引——索引建立关联查询太多JOIN (设计缺陷或不得已的需求)——SQL优化服务器调优及各个参数设置(缓冲、线程数等)———调整my.cnf。数据过多――分库分表 关于数据库调优的知识点非常分散。不同的DBMS&…

基于Vue3 + ts + echarts(版本5.X)实现中国地图下钻、地图打点、地图热力图功能

写在前面&#xff1a; 实现效果图 1.比较重要的部分用红字标出 2.安装echats: npm install echarts --save 3.由于echarts5版本的已经没有自带地图数据了&#xff0c;所以地图数据需要到专门的GEO数据网站中下载。这里提供一个阿里的下载地址&#xff1a;DataV.GeoAtl…

云原生环境下的安全实践:保护应用程序和数据的关键策略

文章目录 云原生环境下的安全实践&#xff1a;保护应用程序和数据的关键策略一.安全措施和实践1. 身份和访问管理&#xff1a;2. 容器安全&#xff1a;3. 网络安全&#xff1a;4. 日志和监控&#xff1a;5. 持续集成和持续交付&#xff08;CI/CD&#xff09;安全&#xff1a;6.…

【学习笔记-myabtis】使用mybtis对接pgsql的postgis插件,获取地理字段Geometry信息

使用mybtis对接pgsql的postgis插件&#xff0c;获取地理字段geometry信息 参考资料&#xff1a; Mybatis 自定义TypeHandler - 邓维-java - 博客园 1、如何使用typehandler ​ 相信大家用Mybatis这个框架至少一年以上了吧&#xff0c;有没有思考过这样一个问题&#xff1a;数据…

xxl-job 是什么?

xxl-job 是什么&#xff1f; XXL-JOB 是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 设计思想 是将调度行为抽象形成 调度中心 平台&#xff0c;平台本身不承担业务逻辑&#xff0c;而是负责发起 调度请求 后&#xff0c;由 执…

右下角任务栏出现广告持续闪烁解决方法

&#x1f466;&#x1f466;一个帅气的boy&#xff0c;你可以叫我Love And Program &#x1f5b1; ⌨个人主页&#xff1a;Love And Program的个人主页 &#x1f496;&#x1f496;如果对你有帮助的话希望三连&#x1f4a8;&#x1f4a8;支持一下博主 右下角任务栏出现广告持…