HTTP与HTTPS

2020-12-10  本文已影响0人  肾仔博

一.HTTP和HTTP1.1的区别

HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启长连接keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。HTTP1.0需要使用keep-alive参数来告知服务器端要创建一个长连接。

HTTP1.0存在一些浪费宽带的现象,例如客户端只是需要某个对象的一部分,而服务器端却将整个对象送过来,并且不支持点续传功能。HTTP1.1支持只发送header信息(不带body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。

在HTTP1.0认为每台服务器都绑定一个唯一的IP地址,因此,请求信息中的URL并没有传递主机名(hostname),HTTP1.0没有host域。随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求信息和响应信息都支持host域,且请求信息中如果没有host域会报告一个错误(400 Bad Request)。

在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

二.HTTP2.0和HTTP1.X相比的新特性

HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,网络传输效率高了。

服务端推送是一种在客户端请求之前发送数据的机制。网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP1.1中这些资源每一个都必须明确地请求。这是一个很慢的过程。浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。
为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。

三.HTTPS与HTTP的区别

四.HTTPS工作流程

五.对称密钥加密与非对称密钥加密

对称密钥加密

非对称密钥加密

从功能角度而言非对称密钥加密比对称密钥加密功能强大,但加密和解密速度却比对称密钥加密慢得多。

非对称密钥通信过程

六.SSL/TLS协议基本原理

SSL/TLS协议的基本思路是采用公钥加密法(非对称密钥加密),简单来说,客户端先向服务器索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。

(1).如何保证公钥不被篡改?
答:将公钥放在数字证书中,只要确保证书可信的,公钥就安全可用。
(2).公钥加密计算量太大,如何减少耗用的时间?
答:每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。

SSL/TLS协议的基本过程

参考文档:
https://juejin.cn/post/6844904127420432391
https://www.cnblogs.com/jesse131/p/9080925.html
https://blog.csdn.net/ailunlee/article/details/97831912

上一篇下一篇

猜你喜欢

热点阅读