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之间的区别?

一、写在前面
今天看到一道面试题,关于http的不同版本的区别,觉得有点懵,所以写一篇博客来总结一下。
二、http的历史

早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了 WEB2.0 以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的 HTML 页面有了 CSS,Javascript,来丰富我们的页面展示,当 ajax 的出现,我们又多了一种向服务器端获取数据的方法,这些其实都是基于 HTTP 协议的。同样到了移动互联网时代,我们页面可以跑在手机端浏览器里面,但是和 PC 相比,手机端的网络情况更加复杂,这使得我们开始了不得不对 HTTP 进行深入理解并不断优化过程中。

三、HTTP的基本优化
影响HTTP网络请求的因素主要有两个:带宽和延迟
带宽:之前的带宽可能是网络请求比较严重的问题,但是现在的话,网络基础设施不断的完善,带宽已经不是什么大的问题了。
延迟:——浏览器阻塞
延迟:——DNS解析
建立连接:——三次握手和慢启动
四、HTTP1.0和HTTP1.1的区别
4.1、缓存处理
在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
4.2、允许断点续传
在HTTP1.0中如果想要服务器发送部分资源,是不行的,服务器会发送全部的资源过来,但是在HTTP1.1中,是允许断点续传的,其存在一个range头域,可以允许传输资源的一部分,返回的状态码为206,这样也就方便开发者利用宽带资源。
4.3、错误通知的管理
HTTP1.1新增了24个错误资源响应码。
4.4、长链接
HTTP1.1中默认使用的是长链接,也就是一个TCP连接可以支持多次HTTP请求。
五、HTTPS和HTTP之间的区别

1、HTTPs需要CA证书,证书免费的很少,一般需要缴费。
2HTTP基于TCP的应用层协议,一般是明文传输,但是HTTPS是基于SSL/TLS层,在传输过程中会进行加密。
3HTTPHTTPS的连接端口不一样,HTTP80端口,HTTPS443端口。
4HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。

六、HTTP2.0和HTTP1.X相比的新特性
二进制传输:

新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的
格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很
多,二进制则不同,只认01的组合。基于这种考虑HTTP2.0的协议解析决定采用二
进制格式,实现方便且健壮。

多路复用:

多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享
机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接
的request可以随机的混杂在一起,接收方可以根据request的 id将request再归
属到各自不同的服务端请求里面。

header压缩

header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且
每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方
各自cache一份header fields表,既避免了重复header的传输,又减小了需要传
输的大小。

服务器推送

例如我的网页有一个sytle.css的请求,在客户端收到sytle.css数据的同时,服务
端会将sytle.js的文件推送给客户端,当客户端再次尝试获取sytle.js时就可以直
接从缓存中获取到,不用再发请求了。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:56:55  更:2022-03-24 00:57:12 
 
开发: 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/26 5:26:11-

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