美文网首页
HTTP与HTTPS

HTTP与HTTPS

作者: 肾仔博 | 来源:发表于2020-12-10 17:52 被阅读0次

    一.HTTP和HTTP1.1的区别

    • 1.长连接

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

    • 2.节约带宽

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

    • 3.HOST域

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

    • 4.缓存处理

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

    • 5.错误通知的管理

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

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

    • 1.多路复用

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

    • 2.头部数据压缩

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

    • 3.服务器推送

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

    三.HTTPS与HTTP的区别

    • HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
    • HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的ssl加密传输协议。
    • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    • HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    四.HTTPS工作流程

    • 1.用户在浏览器发起HTTPS请求,默认使用服务端443端口进行连接;
    • 2.HTTPS需要使用一套CA数字证书,证书内附带一个公钥Pub,而对应的私钥Private保留在服务端不公开。
    • 3.服务端收到请求,返回配置好的包含公钥Pub的证书给客户端;
    • 4.客户端收到证书,校验合法性,主要包括是否在有l效期内、证书的域名与请求的域名是否匹配,上一级证书是否有效(递归判断,直到判断到系统内置或浏览器配置好的根证书),如果不通过,则显示HTTPS警告信息,如果通过则继续;
    • 5.客户端生成一个用于对称加密的随机Key,并用证书内的公钥Pub进行加密,发送给服务端;
    • 6.服务端收到随机Key的密文,使用与公钥Pub配对的私钥Private进行解密,得到客户端真正想发送的随机Key
    • 7.服务端使用客户端发送过来的随机Key对要传输的HTTP数据进行对称加密,将密文返回客户端;
    • 8.客户端使用随机Key对称解密密文,得到HTTP数据明文;
    • 9.后续HTTPS请求使用之前交换好的随机Key进行对称加解密;
      image.png

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

    对称密钥加密

    • 又称私钥加密,即信息的发送方和接收方用同一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。
    非对称密钥加密
    • 又称公钥加密,它需要使用一对密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。

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

    非对称密钥通信过程

    六.SSL/TLS协议基本原理

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

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

    SSL/TLS协议的基本过程

    • 1.客户端向服务器端索要并验证公钥。
    • 2.双方协商生成“对话密钥”。
    • 3.双方采用“对话密钥”进行加密通信。

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

    相关文章

      网友评论

          本文标题:HTTP与HTTPS

          本文链接:https://www.haomeiwen.com/subject/zerlgktx.html