HTTP1.x、HTTP2、HTTPS

HTTP1.x、HTTP2、HTTPS

HTTP1.0

  • 短暂的连接:浏览器和服务端只保留短暂的连接,浏览器的每次请求都需要与服务器建立一个TCPL连接,三次握手成本高,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求

    •   解决方案:

      •   添加头信息----非标准的Connection字段Connection:keep-alive

  • 缓存处理方法单一:对于缓存处理只能使用请求头中的If-Modified-Since,Expires等字段。

  • 浪费带宽:当客户端只是需要某个对象的一部分,服务端却会把整个对象响应,会浪费带宽。
  • 没有HOST头信息:默认一个主机只有一个IP地址,没有HOST头,无法处理虚拟主机

HTTP1.1

  • 改进:

    • 持久连接

      • TCP连接默认不关闭,可以被多个请求复用,不用声明Connection:keep-alive

    • 管道机制

      • 同一个TCP连接中,客户端可以同时发送多个请求

    • 新增请求方式

      • PUT:请求服务器存储一个资源

      • DELETE:请求服务器删除表示的资源

      • OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求

      • TRACE:请求服务器回送收到的请求信息,主要用于测试或者诊断

      • CONNECT:保留将来使用

    • 新增多个状态码
    • 在请求头中引入了range头域,允许请求某一部分的资源
    • 新增多个缓存处理方式,如ETags等
    • 新增了HOST头信息
  • 缺点:TCP连接中,所有的数据通信是按顺序进行的,服务器只有处理完一个请求,才会接着处理下一个。如果前面的处理的特别慢,后面就会有许多请求排队等着

    • 避免方式:减少请求数,躲开持久连接

HTTP2.0

  • 特点:

    • 采用二进制而非文本格式

    • 完全多路复用,请求是并发的,并且可以为请求设置优先级

    • 报头压缩:

      • HTTP协议是没有状态的,导致每次请求都必须附上所有的信息,所以很多请求字段都是重复的

      • 对于相同的头部,不需要通过请求发送,只需要发送一次

    • 服务器推送:

      • 允许服务器未经请求,主动向客户端发送请求

      • 将客户端需要的内容推送到客户端内存中,避免往返的延迟

HTTPS

  • HTTP协议通常承载在TCP协议之上,在HTTPTCP之间添加一个安全协议层(SSL或TSL)

主要作用:
  • 对数据进行加密,并建立一个信息安全通道,来保证传输过程的数据安全

  • 对网站服务器进行真实身份认证

HTTPSHTTP的区别
  • HTTPS是加密传输协议,HTTP是明文传输协议

  • HTTPS需要用到SSL证书,而HTTP不要

  • HTTPSHTTP更加安全,对搜索引擎友好,利于SEO

  • HTTPS标准端口443,HTTP标准端口80

  • HTTPS基于传输层,HTTP基于应用层

HTTPSHTTP的工作过程区别
  • HTTP包含动作:

    • 浏览器打开一个TCP请求

    • 浏览器发送一个HTTP请求到服务器端

    • 服务器发送一个HTTP回应信息到客户端

    • TCP连接关闭

  • HTTPS

    • 验证服务端

    • 客户端和服务器端选择加密算法和密码,确保双方都支持

    • 验证客户端

    • 使用公钥加密技术来生成共享加密数据

    • 创建一个加密的SSL连接

    • 基于该SSL连接传递HTTP请求

HTTPS加密方式
  • 对称加密:加密和解密使用的是同一个密钥

  • 非对称加密:

    • 加密使用的密钥和解密使用的密钥不相同,分别为公钥和私钥

    • 公钥和算法都是公开的,私钥是保密的

    • 过程:

      • 服务端生成配对的公钥和私钥

      • 私钥保存在服务端,公钥保存在客户端

      • 客户端使用公钥加密明文传输给服务端

      • 服务端使用私钥解密密文得到明文

  • 数字签名:签名就是在信息的后面加上一段内容,可以证明信息没有被修改过

posted @ 2020-04-09 20:50  ashen1999  阅读(410)  评论(1编辑  收藏  举报