IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 前端面试八股文_HTTP1.0、HTTP1.1和HTTP2.0的区别 -> 正文阅读

[网络协议]前端面试八股文_HTTP1.0、HTTP1.1和HTTP2.0的区别

本系列文章不谈风月,只谈干货,是实实在在的前端面试八股文,希望帮助大家拿到理想的offer。

一、为什么要了解

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

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

二、HTTP网络请求过程

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

可以看到,简化版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后续结构的原型建议,重点关注性能的大幅度优化,主要区别在于:

通用性:

  • 二进制格式。HTTP1.1中,解析是基于文本,文本的表现形式有多样性,协议的健壮性考虑不足;HTTP2.0中,解析基于二进制,实现方便且健壮。
  • 服务端推送。HTTP1.1中,没有服务端推送功能;HTTP2.0中,当浏览器收到a.css数据同时,服务端会将a.js文件推送给浏览器,浏览器再次尝试获取a.js时,可从缓存中直接获取。

带宽问题:

  • header压缩。HTTP1.1中,请求和响应头中有大量的信息,每次都需重复发送;HTTP2.0中,使用encoder减少请求/响应头大小,通信双方缓存一份头字段表,减少了需要传输的大小,节省了带宽。

延迟问题:

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

五、总结

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

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 11:06:18  更:2021-09-08 11:07:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:33:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码