Http1.0、Http1.1和Http2.0以及Https
https://www.cnblogs.com/heluan/p/8620312.html
多路复用原理
HTTP1.0、HTTP2.0、HTTP 3.0及HTTPS简要介绍
区别
http1.0和http1.1的主要区别如下:
1、缓存处理:1.1添加更多的缓存控制策略(如:Entity tag,If-Match)
2、网络连接的优化:1.1支持断点续传
3、错误状态码的增多:1.1新增了24个错误状态响应码,丰富的错误码更加明确各个状态
4、Host头处理:支持Host头域,不在以IP为请求方标志
5、长连接:减少了建立和关闭连接的消耗和延迟。
http1.1和http2.0的主要区别:
1、新的传输格式:2.0使用二进制格式,1.0依然使用基于文本格式
2、多路复用:连接共享,不同的request可以使用同一个连接传输(最后根据每个request上的id号组合成正常的请求)
3、header压缩:由于1.X中header带有大量的信息,并且得重复传输,2.0使用encoder来减少需要传输的hearder大小
4、服务端推送:同google的SPDUY(1.0的一种升级)一样
5、http1.1默认使用长链接,避免了连接建立和释放的开销,不允许同时存在两个并行的响应
Https和证书原理
Https现在基本已经覆盖所有的http请求了
在没有经过任何加密手段的HTTP通信中,面临着三大危险:消息监听、消息篡改、冒充身份 。
证书验证
1.服务器向证书机构申请证书,提供自己的域名、地址、公钥信息。
2.证书机构对服务器的信息使用hash算法得出一份128位的摘要,并对这份摘要使用证书机构的私钥进行非对称加密得到数字证书签名。
3.证书机构把服务器信息(明文是经过hash算法得出的128位摘要)+数字签名+证书机构信息(包含证书机构公钥)发送给服务器。
4.客户端请求服务器时,服务器把证书返回给客户端。
客户端验证证书
1.客户端拿到证书,得到服务器信息(明文)、数字签名、证书机构信息。
2.客户端对服务器信息进行hash算法计算得到一份摘要S1。
3.客户端使用证书机构提供的公钥对数字签名进行解密得到S2。
4.对比S1和S2可辨别证书是否来自服务器且没有经过篡改。
流程图
Server提供(域名、地址、公钥信息)---->CA机构--->hash算法(服务器信息得出128位摘要)--->CA私钥非对称加密(数字证书)----->CA把(服务器信息+数字签名+CA公钥)发送------>Server
Client--->Server---->证书---->Client--->服务器信息进行hash算法得到S1---->使用CA公钥对数字签名解密---->S2---->对比S1/S2确认证书可靠性。
为什么对比S1/S2的一致性可以确认证书的可靠性
- 黑客是否可以使用自己的秘钥加密,并把证书机构的公钥修改成自己的公钥?
1.证书机构不多,系统会内置根证书机构的信息,包括的这些机构的公钥,这些公钥一定程度上是安全可信任的。客户端可以使用公钥对数字签名进行解密
2.系统预装证书机构是有限的,所以有二级证书机构,二级证书机构由根证书机构签发。二级证书再给服务器签发证书。
二级证书验证流程
1.根证书给二级证书签发的时候也会下发一份数字证书,包含了二级证书机构信息、数字签名、根证书机构信息。
2.服务的数字证书包含二级证书机构的数字证书。
3.客户端使用根证书的公钥对二级证书的数字签名进行解密得到摘要S2进行对比。得到二级证书机构的公钥。
4.使用二级证书机构的公钥对服务器证书进行验证~
5.如果有3级、4级也是同理循环
注意事项
1.证书并不是直接对服务器信息进行加密,而是利用hash算法得到服务器摘要,再进行加密的。
总结
http要解决的是网络安全问题
- 防止脚下监听:加密
- 防止消息篡改:CA证书hash算法
- 验证身份:使用数字证书