不少站长可能到如今都没有理解 HTTP/1.x、HTTP/2 和 HTTPS 之间的区别和关系吧?说实话,明月也是“只知其一;不知其二”的水准而已,今天看到了这篇文章感受总结还算是比较全面,特此分享出来给你们就当是科普文了!php
缺陷:线程阻塞,在同一时间,同一域名的请求有必定数量限制,超过限制数目的请求会被阻塞算法
缺陷:浏览器与服务器只保持短暂的链接,浏览器的每次请求都须要与服务器创建一个 TCP 链接(TCP 链接的新建成本很高,由于须要客户端和服务器三次握手),服务器完成请求处理后当即断开 TCP 链接,服务器不跟踪每一个客户也不记录过去的请求;解决方案:添加头信息——非标准的 Connection 字段 Connection: keep-alive浏览器
改进点:缓存
一、持久链接安全
引入了持久链接,即 TCP 链接默认不关闭,能够被多个请求复用,不用声明 Connection: keep-alive(对于同一个域名,大多数浏览器容许同时创建 6 个持久链接)服务器
二、管道机制ide
即在同一个 TCP 链接里面,客户端能够同时发送多个请求。性能
三、分块传输编码测试
即服务端没产生一块数据,就发送一块,采用”流模式”而取代”缓存模式”。优化
四、新增请求方式
PUT:请求服务器存储一个资源;
DELETE:请求服务器删除标识的资源;
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求;
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断;
CONNECT:保留未来使用
缺点:
虽然容许复用 TCP 链接,可是同一个 TCP 链接里面,全部的数据通讯是按次序进行的。服务器只有处理完一个请求,才会接着处理下一个请求。若是前面的处理特别慢,后面就会有许多请求排队等着。这将致使“队头堵塞”
避免方式:一是减小请求数,二是同时多开持久链接
特色
采用二进制格式而非文本格式;彻底多路复用,而非有序并阻塞的、只需一个链接便可实现并行;使用报头压缩,下降开销服务器推送
1. 二进制协议
HTTP/1.1 版的头信息确定是文本(ASCII 编码),数据体能够是文本,也能够是二进制。HTTP/2 则是一个完全的二进制协议,头信息和数据体都是二进制,而且统称为”帧”:头信息帧和数据帧。二进制协议解析起来更高效、“线上”更紧凑,更重要的是错误更少。
2. 彻底多路复用
HTTP/2 复用 TCP 链接,在一个链接里,客户端和浏览器均可以同时发送多个请求或回应,并且不用按照顺序一一对应,这样就避免了”队头堵塞”。
3. 报头压缩
HTTP 协议是没有状态,致使每次请求都必须附上全部信息。因此,请求的不少头字段都是重复的,好比 Cookie,同样的内容每次请求都必须附带,这会浪费不少带宽,也影响速度。对于相同的头部,没必要再经过请求发送,只需发送一次;HTTP/2 对这一点作了优化,引入了头信息压缩机制;一方面,头信息使用 gzip 或 compress 压缩后再发送;另外一方面,客户端和服务器同时维护一张头信息表,全部字段都会存入这个表,产生一个索引号,以后就不发送一样字段了,只需发送索引号。
4. 服务器推送
HTTP/2 容许服务器未经请求,主动向客户端发送资源;经过推送那些服务器任务客户端将会须要的内容到客户端的缓存中,避免往返的延迟
HTTP 协议一般承载于 TCP 协议之上,在 HTTP 和 TCP 之间添加一个安全协议层(SSL 或 TSL),这个时候,就成了咱们常说的 HTTPS.
一、HTTPS 主要做用
- (1)对数据进行加密,并创建一个信息安全通道,来保证传输过程当中的数据安全;
- (2)对网站服务器进行真实身份认证。
二、HTTPS 和 HTTP 的区别
- 一、HTTPS 是加密传输协议,HTTP 是名文传输协议;
- 二、HTTPS 须要用到 SSL 证书,而 HTTP 不用;
- 三、HTTPS 比 HTTP 更加安全,对搜索引擎更友好,利于 SEO,
- 四、 HTTPS 标准端口 443,HTTP 标准端口 80;
- 五、 HTTPS 基于传输层,HTTP 基于应用层;
三、HTTPS 和 HTTP 的工做过程区别
HTTP 包含动做:
浏览器打开一个 TCP 链接
浏览器发送 HTTP 请求到服务器端
服务器发送 HTTP 回应信息到浏览器
TCP 链接关闭
SSL 包含动做:
验证服务器端
客户端和服务器端选择加密算法和密码,确保双方都支持
验证客户端(可选)
使用公钥加密技术来生成共享加密数据
建立一个加密的 SSL 链接
基于该 SSL 链接传递 HTTP 请求
四、HTTPS 加密方式
对称加密:加密和解密都是使用的同一个密钥;
非对称加密:
加密使用的密钥和解密使用的密钥是不相同的,分别称为:公钥、私钥;
公钥和算法都是公开的,私钥是保密的。
非对称加密过程:
服务端生成配对的公钥和私钥
私钥保存在服务端,公钥发送给客户端
客户端使用公钥加密明文传输给服务端
服务端使用私钥解密密文获得明文
数字签名:签名就是在信息的后面再加上一段内容,能够证实信息没有被修改过。
至此,不知道各位看明白没有,反正明月仍是有点儿乱,好在原理上是基本明白了!自从上次清除了恶意代码后(可参考【再次发现 functions.php 里被植入恶意代码】一文),如今明月的博客在手机端各个浏览器下浏览都是“很是 6”的感受,加上上周又给 Nginx 使用了 Brotli 压缩算法(可参考【给 Nginx 添加谷歌 Brotli 压缩算法支持】一文)和 HTTP/2 Push Sever 的配置启用,上述这些都是基于 又拍云 CDN的支持下进行的。目前不管是速度仍是安全性明月都是比较满意的!
草根博客站长有话说, 深刻理解 HTTP/1.x、HTTP/2 和 HTTPS, http://baijiahao.baidu.com/s?id=1603680663774367388&wfr=spider&for=pc