http1.x,http2.0,https分别介绍以及他们的区别
一、HTTP/1.x
Http1.x
- 缺陷:线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞
http1.0
- 缺陷:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接(TCP连接的新建成本很高,因为需要客户端和服务器三次握手),服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求;
解决方案:
- 添加头信息——非标准的Connection字段
Connection: keep-alive
- 添加头信息——非标准的Connection字段
http1.1:
- 改进点:
持久连接
- 引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明
Connection: keep-alive(对于同一个域名,大多数浏览器允许同时建立6个持久连接)这里常常会问,性能优化,为什么将碎片文件打包成一个,就是因为1.1每次允许6个连接请求。
- 引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明
管道机制
- 即在同一个TCP连接里面,客户端可以同时发送多个请求。
分块传输编码
- 即服务端没产生一块数据,就发送一块,采用”流模式”而取代”缓存模式”。
新增请求方式
- PUT:请求服务器存储一个资源;
- DELETE:请求服务器删除标识的资源;
- OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求;
- TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断;
- CONNECT:保留将来使用
缺点:
- 虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有许多请求排队等着。这将导致“队头堵塞”
- 避免方式:一是减少请求数,二是同时多开持久连接
二、HTTP/2.0
现在介绍一下http2.0的一些特性:
(1)二进制分帧(在应用层跟传输层之间增加一个二进制分帧层,改进传输性能,实现低延迟和高吞吐);
(2)多路复用(一个tcp/ip可以请求多个资源);
(3)请求优先级(如果流被赋予了优先级,就会基于这个优先级来处理,有服务器决定需要多少资源来处理该请求)
(4)首部压缩(http头部压缩,减少体积);
(5)服务器端推送(服务端可以对客户端的一个请求发出多个响应可以主动通知客户端);
详细说明:
。采用二进制流格式传输数据:在http/2.0 中,基本的协议单位是祯,每个数据流均是以消息的形式发送,消息由一
个或者是多个帧组合而成;帧的内容包括:长度(Length),类型(Type),标记(Flags),保留字段(R),流标识符
(Stream ldentifier)和帧主体 (Frame Payload);
。多路复用:在http/1.0 中,如果需要并发多个请求,则必须创建多个 TCP 链接,并且浏览器对于单个域名的请求
有响应的数量限制,一 般为6个;htp/2.0 重新定义了底层的 http语义映射,允许在同一个链接上使用请求和响应
双向数据流,至此,同一个域名只需要占用一个TCP 连接,通过数据流(stream)以帧为基本代为,从而从根本上
解决了因频繁创建连接产生的延迟,减少了内存消耗,提升了性能;
。流的优先级:在http/2.0 中可以为每一个数据流设置优先级,高优先级的流会被服务优先处理并返回给客户端,
同时,流的优先级允许根据坊景的不同进行动态设置;
。首部压缩:http/1.0 中,前端性能优化法则中出现过—条建议一禁止滥用 cookie,同时建议将静态资源迁移到独
立的域名上,其中一个关键的优化点是压缩请求头部大小,随着 web 应用功能越来越复杂,主域名下各种各样的
业务加入五花八门的cookie,对于一般的图片,样式,脚本文件无需在后台了解其与用户特征相关的信息,而客
户端频繁发送此类数据产生了极大的浪费;http/2.0中引入了 HPACK 压缩首部数据;
。服务端推送:服务端主动推送与当前请求相关的内容,例如:可以在请求 HTML 文档的时候,一并推送与之关联
的静态资源文件,同时,服务端推送遵循同源策略,可以被浏览器缓存,实现多页面共享缓存资源;极大的提升了
性能;
三、HTTPS
- HTTP协议通常承载于TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS.
1、HTTPS主要作用
- (1)对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;
- (2)对网站服务器进行真实身份认证。
2、HTTPS和HTTP的区别
- 1、HTTPS是加密传输协议,HTTP是名文传输协议;
- 2、HTTPS需要用到SSL证书,而HTTP不用;
- 3、HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO,
- 4、 HTTPS标准端口443,HTTP标准端口80;
- 5、 HTTPS基于传输层,HTTP基于应用层;
3、HTTPS和HTTP的工作过程区别
HTTP 包含动作:
- 浏览器打开一个 TCP 连接
- 浏览器发送 HTTP 请求到服务器端
- 服务器发送 HTTP 回应信息到浏览器
- TCP 连接关闭
SSL 包含动作:
- 验证服务器端
- 客户端和服务器端选择加密算法和密码,确保双方都支持
- 验证客户端(可选)
- 使用公钥加密技术来生成共享加密数据
- 创建一个加密的 SSL 连接
- 基于该 SSL 连接传递 HTTP 请求
3、HTTPS加密方式
- 对称加密:加密和解密都是使用的同一个密钥;
非对称加密:
- 加密使用的密钥和解密使用的密钥是不相同的,分别称为:公钥、私钥;
- 公钥和算法都是公开的,私钥是保密的。
- 非对称加密过程:
- 服务端生成配对的公钥和私钥
- 私钥保存在服务端,公钥发送给客户端
- 客户端使用公钥加密明文传输给服务端
- 服务端使用私钥解密密文得到明文
- 数字签名:签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过。
补充延伸:面试相关 什么是https协议?
程序员经典面试题,请讲解一下hps协议。
很人上来就搞错了,要么回答https协议握手过程,或者说跟http区别就是安全啥的。
要知道面试官真正想问什么?他其实想考察你的基础知识,要知道,面试过程中,基础知识是最重要的。
这里考察你两个基础知识:
1、https协议的常识
2、如何设计一个安全的通信协议以及背后的密码学算法
只有回答了以上两点,才算是通过了。我们来看看如何回答。
Htps协议就是基于tsl的htt协议,tsl是个应用层衔接,是安全协议层,它解决了通信过程中的安全问题。安全问题第二要解释,为什么要有https,协议目的是为了防范中间人攻击,中间人可以窃取、篡改消息来达到破坏系统的目的。
那https协议是怎么做的呢?
首先它会把消息进行加密,运用到一个对称加密算法,双方使用同一个密钥对消息进行加密和解密,这样中间人就无法知道你在发送什么数据,常见的对称加密算法有aes,一旦你使用到对称加密算法,就涉及到一个密钥交换的问题,如果直接明文发送密钥会被中间人窃取进行解密以后发送信息,所以这时候就涉及到利用非对称加密进行密钥交换,发送方使用公开的公钥,发送方使用公开的接收方的公钥加密数据,然后将信息发送过去,接收方可以利用自己的私钥来解密,这样就避免了密钥在数据传输中明文交换。
我们为什么需要对称加密算法?
因为对称加密性能要好一些。

这时候中间人就没有办法吗?其实还是有办法的,中间人还可以给发送方发送一个假的密钥来窃取信息,所以我们需要一套机制来验证公钥是不是就是接收方的。这时候就要引入证书体系,证书体系涉及到两个知识点,第一个知识点是非对称加密算法的验签功能,第二知识点是,证书链。
首先签名者会使用自己的私钥加密数据,验签者就可以使用公开的公钥来去验签,而在你的电脑中已经提前内置好了一些权威机构的证书,这些证书就是这些权威机构的公钥,这些公钥是绝对可信的,所有网站的公钥必须要有权威机构来颁发,你可以用权威机构的公钥去验证它。如果你电脑上没有这个权威机构的公钥,你就要去找权威机构的权威机构去验证权威机构的公钥,来验证这个网站的目标。
以上就解决了加密的问题,接下来还有只要校验消息的完整性,你可以用哈希算法,比如说MD5等,为了防止重放攻击,你还要使用到序列号机制。
这些讲完以后,从这道题就算回答完整,回答正确,注意以上的要点,你的术语一定要准确,非对称加密,公钥,私钥不要搞混,我就见过有的小朋友上来就给我讲一个MD5加密,我之后就问问他怎么解密,然后他就开始乱讲,所以术语一定要搞懂搞准。
http 常用状态码
。100 继续,继续响剩余部分,进行提交请求;如己完成,可忽略;
。200 成功,服务器处理请求成功;
。301永久移动,请求资源已经永久移动至新的位置;
。302临时移动,请求资源临时移动至最新的位置
。401未授权,要求身份验证;
。403 禁止,请求被拒绝;
。404 资源未找到;
。500 服务器内部错误,无法完成请求;
。503服务不可用,临时服务过载,无法处理请求;
http 工作过程
。解析地址:从url 中解析出协议名、主机名、端口、对象路径等部分;
。封装http 请求数据包:把以上部分结合本机自己的信息,封装成一个HTTP请求数据包:
。封装成TCP包,建立下CP连接(TCP的三次握手):客户端(Web浏览器) 要通过网络与服务器建立连接:
。客户机发送请求命令:建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符 (URI:
Uniform Resource ldentifier)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容
。服务器响应:服务器接到请求后,给子相应的响应信息,其格式为一个状态行,包括信息的协议版本号
个成功
或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容.实体消息是服务器向浏览器发送头
信息后,它会发送一个空白行来表示头信息的发送到此结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据;
。服务器关闭TCP连接:一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接:
其他网络知识链接:
MVVM前后端分离:web接口规范(后端返回的请求包,包括什么内容)
一文读懂计算机底层网络原理,包括TCP、UDP、header,什么是包、帧、段等关键问题(握手挥手)
http1.x,http2.0,https分别介绍以及他们的区别的更多相关文章
- 浅谈Http1.0/Http1.1/Http2.0/Https
HTTP 1.0 → HTTP 1.1 长连接 HTTP 1.1默认支持长连接,减少了TCP连接次数,节约开销. HTTP 1.0所保持的TCP每次只能处理一个请求,最典型的就是pipline管线化模 ...
- HTTP1.0,HTTP1.1,HTTP2.0的主要特征对比
HTTP1.0 是一种无状态.无连接的应用层协议. HTTP1.0规定浏览器和服务器保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务 ...
- 杂谈:HTTP1.1 与 HTTP2.0 知多少?
HTTP是应用层协议,是基于TCP底层协议而来. TCP的机制限定,每建立一个连接需要3次握手,断开连接则需要4次挥手. HTTP协议采用"请求-应答"模式,HTTP1.0下,HT ...
- http1.1与http2.0
简介 http1.0: 1.0版本中每个TCP连接只能发送一个请求,数据发送完毕连接就关闭,如果还要请求其他资源,就必须重新建立TCP连接.(TCP为了保证正确性和可靠性需要客户端和服务器三次握手和四 ...
- HTTP、HTTP1.0、HTTP1.1、HTTP2.0、HTTPS
一.HTTP HTTP(超文本传输协议,HyperText Transfer Protocol)是应用层的协议,目前在互联网中应用广泛. 它被设计用于Web浏览器和Web服务器之间的通信,但它也可 ...
- HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事
作为一个经常和web打交道的程序员,了解这些协议是必须的,本文就向大家介绍一下这些协议的区别和基本概念,文中可能不局限于前端知识,还包括一些运维,协议方面的知识,希望能给读者带来一些收获,如有不对之处 ...
- https 加密、http2.0、keep-alive
原文地址:https://ainyi.com/44 HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议 ...
- HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
一.HTTP的历史 早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器.也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上 ...
- HTTP1.0、HTTP1.1和HTTP2.0的区别
一.HTTP的历史 早在HTTP建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器.也是说对于前端来说,我们所写的HTML页面将要放在我们的web服务器上,用户端 ...
- HTTP、HTTP2.0、HTTPS、SPDY
本文原链接:https://cloud.tencent.com/developer/article/1082516 HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事 1.web始祖HT ...
随机推荐
- ZEGO即构自建MSDN有序网络,为实时音视频传输极致顺畅!
由于疫情反扑,音视频云通讯的使用需求再次增加,跨机房环境经常遇到网络通信质量不佳的问题,比如延迟.卡顿.画质不清晰等.网络状况是影响用户体验最大因素之一,因此提升用户网络体验的需求被各家产品highl ...
- MAUI 框架开发 将 MAUI 嵌入到 WPF 控件里
本文将介绍如何将 MAUI 的底层替换为 WPF 框架层,且将 MAUI 的内容嵌入到 WPF 的一个控件里面,无 UI 框架嵌入的空域问题 本文是 MAUI 框架开发博客,而不是 MAUI 应用开发 ...
- 飞桨paddlespeech语音唤醒推理C定点实现
前面的文章(飞桨paddlespeech语音唤醒推理C浮点实现)讲了飞桨paddlespeech语音唤醒推理的C浮点实现.但是嵌入式设备通常CPU频率低和memory小,在嵌入式设备上要想流畅的运行语 ...
- VueJS使用addEventListener的事件如何触发执行函数的this
1.使用浏览器监听切屏为例 此处为考虑浏览器兼容性推荐使用:document.addEventListener 1.1.正常函数使用如下: let n = 0; let max = 3; // 切屏最 ...
- linux 字符集与编码格式相关
字符集:多个字符的集合. # 书写系统字母与符号的集合. 字符编码:把 字符集 中的字符 编码为(映射)指定集合中的某一对象. # 以便文本在计算机中存储和通过通信网络的传递 查看文件的的编码格式 ...
- 使用JMeter连接达梦数据库的步骤和示例
引言: 本文将介绍如何使用JMeter连接达梦数据库,并提供连接达梦数据库的步骤和示例,帮助您快速开始进行数据库性能测试. 步骤: 1. 下载并安装JMeter:首先,从JMeter官方网站下载并安装 ...
- 你们眼睛干涩,胀痛吗?C# WPF 久坐提醒桌面小程序
目录 说明 设置提醒时间,及休息时间 久坐提醒倒计时 休息提醒倒计时 休息到计时 代码说明 主窗体设置 工作到计时 休息倒计时 源码 久坐提醒桌面小程序: 干这行职业病比较多,之前用爱丽(即:玻璃酸钠 ...
- 痞子衡嵌入式:AppCodeHub - 一站网罗恩智浦MCU应用程序
近日,恩智浦官方隆重上线了应用程序代码中心(Application Code Hub,简称 ACH),这是恩智浦 MCUXpresso 软件生态的一个重要组成部分.痞子衡之所以要如此激动地告诉大家这个 ...
- 12、Spring之基于xml的AOP
阅读本文前,建议先阅读Spring之基于注解的AOP 12.1.环境搭建 创建名为spring_aop_xml的新module,过程参考9.1节 12.1.1.配置打包方式和依赖 <?xml v ...
- TypeScript中Class基础使用
TypeScript是一种静态类型的JavaScript超集,它提供了许多增强的功能,其中之一就是对面向对象编程的支持.在TypeScript中,我们可以使用Class来定义类,这使得我们能够更加结构 ...