「计算机网络」HTTP1.0、HTTP1.1和HTTP2.0的演变

news2024/11/22 22:30:56

「计算机网络」HTTP1.0、HTTP1.1和HTTP2.0的演变

参考&鸣谢

HTTP1.0、HTTP1.1、HTTP2.0的关系和区别 doubleYong

计算机网络_HTTP1.0、HTTP1.1和HTTP2.0的区别 一只前端小马甲


文章目录

  • 「计算机网络」HTTP1.0、HTTP1.1和HTTP2.0的演变
    • 一、先说结论
    • 二、HTTP网络请求过程
    • 三、HTTP1.0 vs HTTP1.1
    • 四、HTTP1.1 vs HTTP2.0
    • 五、总结


一、先说结论

版本特点
HTTP1.0无状态、无连接
HTTP1.1持久连接
请求管道化
增加缓存处理(新的字段如cache-control)
增加Host字段、支持断点传输等(把文件分成几部分)
HTTP2.0二进制分帧
多路复用(或连接共享)
头部压缩
服务器推送

了解不同版本HTTP协议,实际上是了解Web的发展历史,了解历史让我们对于技术的发展方向有迹可循。

  • HTTP1.0对应早期阶段,互联网上的资源以展示为主,用户只能获取文字和图片;
  • HTTP1.1对应中期阶段,是现在的主流版本,互联网上的资源变得更加丰富,还出现了Ajax技术,用户能进行更复杂的交互,获取更丰富的资源(例如:css、js、视频等);
  • HTTP2.0对应后期阶段,我们的页面还可以运行在手机浏览器中,在同样富交互和资源的基础上,手机浏览器有着更复杂的网络情况,用户需要更好的体验,因此需要对HTTP深入理解不断优化。

二、HTTP网络请求过程

浏览器和服务器通过HTTP相互通信,组成了万维网的基本组件,下图显示了简化版的HTTP网络请求过程。

image-20230321104517743

可以看到,简化版HTTP网络请求过程分为4步:

  1. DNS解析:浏览器查询域名服务器上的映射表,解析出域名映射的IP;
  2. TCP连接:浏览器与IP对应资源服务器上的应用程序建立TCP连接;
  3. HTTP请求:浏览器发送HTTP请求
  4. HTTP响应:资源服务器返回HTTP响应

影响一个HTTP网络请求的因素主要有两个:带宽和延迟。前者属于外部因素,现在网络基础建设已经使得带宽极大提升,无需再担心;后者属于内部因素,步骤(1)、(2)处于HTTP请求前,会延迟HTTP请求的发送,步骤(3)、(4)处于HTTP请求中,浏览器阻塞、处理速度均会限制后续请求。因此,HTTP协议的迭代对带宽、延迟进行了优化。


三、HTTP1.0 vs HTTP1.1

HTTP1.0是第一个得到广泛使用的HTTP版本,当时用于简单的网页和网络请求上,HTTP1.1是当前使用最广泛的HTTP版本,主要区别在于:

通用性:

  • Host头处理。HTTP1.0中,认为每台服务器绑定唯一IP地址,请求的URL并无主机名;HTTP1.1中,请求和响应头中均应携带Host字段,因为虚拟主机技术的发展,使得一台物理机可以存在多个虚拟主机,共享IP地址
  • 错误处理。HTTP1.1中,新增了24个错误状态码,如409(Conflict)表示请求可能在资源上引发的一些冲突;410(Gone)表示服务器无法找到所请求的资源,但该资源服务器曾经拥有过。

带宽问题:

  • 带宽优化。HTTP1.0中,当客户端只需要对象的一部分,服务器会将整个对象返回,存在浪费带宽的现象;HTTP1.1中,在请求头中引入了range字段,允许只请求资源的一部分,此时返回码为206(Patial Content),在充分利用带宽的同时,支持了断点续传功能。

延迟问题:

  • 长连接。HTTP1.0中,每次请求都需要创建连接。HTTP1.1中,支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的延迟,且HTTP1.1默认开启Connection:keep-alive。
  • 缓存策略。HTTP1.0中,主要使用请求头中的If-Modified-Since,Expires作为缓存判断的标准;HTTP1.1中,引入了更多的缓存控制策略,例如:Entitytag,If-Unmoidfied-Since,If-Match,If-None-Match等。

四、HTTP1.1 vs HTTP2.0

HTTP1.1是当前使用最广泛的HTTP版本,HTTP2.0是HTTP1.1后续结构的原型建议,重点关注性能的大幅度优化,主要区别在于:

通用性:

  • 二进制分帧:HTTP 2.0协议使用二进制分帧技术进行数据传输,这代表HTTP 2.0可以将数据分解为更小的帧进行传递,而与此同时还可以保证数据的完整性。这个特性能够有效地解决HTTP 1.x 的队头阻塞问题,从而提高了传输效率,提高了响应速度。
  • 服务端推送。服务器推送:HTTP 2.0允许在客户端请求数据的同时主动向客户端发送其他资源(例如JavaScript、CSS、图片等文件),这种方式被称为“服务器推送”。服务器推送使得Web应用程序可以更快的加载内容,提高了性能和效率。

带宽问题:

  • 头部压缩:使用二进制分帧和多路复用技术后,HTTP 2.0协议的头部信息会变得更加庞大和复杂,占用更多的带宽和流量。因此,HTTP 2.0使用了新的HPACK架构进行头部压缩,压缩后的头部信息可以减少网络带宽和数据流量的消耗,从而提高传输效率。

延迟问题:

  • 多路复用。HTTP1.1中,支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会;HTTP2.0中,支持多路复用(MultiPlexing),多个请求可同时在一个连接上并行执行(由于支持二进制的格式,可以无序)某个请求任务耗时严重,不会影响到其它连接的正常执行,接收方根据id将数据归属到不同的请求中。

五、总结

本文首先整体概述了一遍HTTP各版本功能的演变,说明了学习不同版本HTTP协议有助于把握技术发展的方向;其次从简化版的HTTP网络请求入手,介绍了各个环节对请求的影响,提出了影响网络请求的两个因素——带宽和延迟;然后分别将HTTP1.0、HTTP1.1、HTTP2.0进行对比:HTTP1.0是第一个得到广泛使用的HTTP版本,当时用于简单的网页和网络请求上,HTTP1.1是当前使用最广泛的HTTP版本,HTTP2.0是HTTP1.1后续结构的原型建议,后者在前者的基础上均进行了通用性、带宽问题、延迟问题上的优化,HTTP1.1的核心变化是支持了长连接和断点续传,HTTP2.0的核心变化是支持header压缩和多路复用。

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

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

相关文章

【01】一步一步命令行输出VC hello world

一步一步命令行输出VC hello world 安装VS2022编写hello world程序配置cl.exe编译helloworld.cpp总结 安装VS2022 VS2022的安装程序下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 。下载完成之后点击程序会进入到选择安装VS2022组件的安装程序,…

小红的好数组陡峭值之和

题目如下 这个题我一开始是先生成满足0,1,2的全排列,但是n很大时很快就超出内存限制了,后来想到用动态规划的方法做,这里先分析一下。 n2时,有01,02,10,12,2…

自动化设备应用之样本手册

Lookbook,新品展示图,是时尚品牌的必备品。Lookbook既展示了新系列,也突出了品牌的基本调性。创建样本手册是释放创造力并从其他时装设计师中脱颖而出的机会。有吸引力的封面、精心策划的图像、精巧的布局、颜色标识和传达风格都是品牌内容传…

建构筑物安全监测

监测要求 1)观测点应设置在观测段结构构件的控制断面上; 2)平面应力状态的结构应力观测宜设置三向应变观测点,主应力方向明晩的部位可设置单向或两向应变观测点; 3)建筑物的重要部位应增设观测点; 4&am…

ControlNet让SD变得可控

ControlNet是一个用于深度神经网络的控制技术,它可以通过操作神经网络块的输入条件来控制神经网络的行为。在这里,“网络块”是指常用的神经层集合,例如“resnet”块、“conv-bn-relu”块、多头注意力块等。通过克隆神经网络块的参数并应用零…

软考A计划-真题-分类精讲汇总-第十七章(数据结构与算法)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

智慧档案馆建设之八防十防常用的设备

档案八防十防常用的十款设备 序号 名称 1 温湿度传感器 2 空气质量云测仪 3 恒湿净化一体机 4 健康防护一体机 5 综合智能触摸一体化区域控制器 6 空调红外学习控制模块 7 漏水检测控制器及感应线 8 数字烟雾传感器 9 红外防盗传感器 10 系统软件平台 附…

redis高级篇(1)

分布式缓存 单节点redis的问题: 1)数据丢失的问题,redis是基于内存来进行存储的,当服务器重启的时候可能会丢失数据 2)无法满足高并发场景 3)如果redis宕机,那么这个服务不可用,所以就需要有一种自动的故障恢复手段,必…

从裸机启动开始运行一个C++程序(一)

前言 对于一个C程序员来说,可能更多是是每天都在跟各种上层语义、设计模式、软件方法等等在打交道。但对于「一个C程序是如何运行在机器上的」这件事可能会比较陌生。有时,遇到一些问题,在宏观角度看起来可能比较难以解释,但其实…

activiti6是使用,或签,会签

会签:指同一个审批节点设置多个人,如ABC三人,三人会同时收到审批,需全部同意之后,审批才可到下一审批节点; 或签:也有叫“竞签”、“串签”:指同一个审批节点设置多个人,…

电脑上删除掉的文件怎么恢复?一文告诉你详细恢复方法!

对于不太会整理电脑的用户来讲,电脑上的文件一旦保存多了,不但会使得电脑看上去很杂乱,还会在我们需要寻找某一个文件的时候,半天都找不到。 所以,对于一些可能不会再需要的文件,我们会选择直接删除&#x…

Dart 3.0 语法新特性 | 类型修饰符 Class modifiers

theme: cyanosis 在 dart 3.0.0 之后,对类型的修饰符进行了拓展,现在类型的修饰符有: | 名称 | 作用 | | --- | --- | | mixin | 混入类修饰符 | | sealed | 密封可枚举的子类型 | | abstract | 抽象类修饰符 | | final | 一定程度上关闭派生…

《测试开发》测试启蒙

文章目录 测试是什么调试和测试的区别 什么是需求需求的定义需求的特征测试人员眼里的需求是什么如何深入了解需求 测试用例什么是测试用例为什么有测试用例 bug如何描述一个bug如何定义bug的级别bug的生命周期 软件测试的生命周期 👑作者主页:Java冰激凌…

理解神经网络的注意力机制(Attention)及PyTorch 实现

刚刚结束的 2022 年对于人工智能的许多进步来说是不可思议的一年。最近 AI 中的大多数著名地标都是由称为变形金刚的特定类别模型驱动的,无论是 chatGPT 的令人难以置信的进步,它席卷了世界,还是稳定的扩散,它为您的智能手机带来了类似科幻小说的功能。即使是 Tesla 的自动…

100种思维模型之联脑破界思维模型-64

前面我们分享过破界思维模型,即要不断打破固有认知边界,用变化的眼光看待一切事物的思维模型。 今天我们介绍一个破界方法的思维模型,一个告诉我们可通过联脑学习,打破独立大脑带来边界的思维模型。 01、何谓联脑破界思维模型 一…

crow-han(基于go-micro框架的微服务脚手架)-01-快速启动(简介、快速启动、接口测试)

文章目录 1. 简介1.1 包含内容1.2 swagger展示 2. 快速启动2.1 下载2.2 环境变量配置2.3 goland配置2.5 启动2.6 查看结果 3. swagger 接口测试3.1 url3.2 认证3.2.1 获取token3.2.2 Bearer 认证 3.3 测试接口(已创建用户为例) 1. 简介 一个基于go-micr…

测试4年,跳槽一次涨8k,我跳了3次···

最近有人说,现在测试岗位初始工资太低了,有些刚刚入行的程序员朋友说自己工资连5位数都没有.....干了好几年也没怎么涨。看看别人动辄月薪2-3万,其实我想说也没那么难。说下如何高效地拿到3w。 1.暂且把刚入行的条件设低些吧,大专…

大模型综述来了!一文带你理清全球AI巨头的大模型进化史

夕小瑶科技说 原创 作者 | 小戏,Python 如果自己是一个大模型的小白,第一眼看到 GPT、PaLm、LLaMA 这些单词的怪异组合会作何感想?假如再往深里入门,又看到 BERT、BART、RoBERTa、ELMo 这些奇奇怪怪的词一个接一个蹦出来&#xf…

python list 逆序的方法

在 Python中,使用 list作为基本的数据类型是非常方便的,也是 Python中最常见的数据结构之一。那么对于 list进行逆序操作时,我们应该怎么做呢?下面就一起来看看吧。 首先要注意,在使用 list逆序时,它会自动…