http与https简述

http

HTTP(HyperText Transfer Protocol),超文本传输协议,是一个基于TCP实现的应用层协议。

缓存策略
  • 强缓存

    采用过期时长来控制缓存,对应的字段是max-age

    Cache-Control:max-age=3600
    
  • 协商缓存

    强缓存失效之后,浏览器在请求头中携带相应的缓存tag来向服务器发请求,由服务器根据这个tag,来决定是否使用缓存,这就是协商缓存

    缓存tag有两个

    • Last-Modified(最后修改时间)

      如果请求头中的这个值小于最后修改时间,说明是时候更新了

    • ETag(文件标识 修改会导致标识变动)

      浏览器接收到ETag的值,会在下次请求时,将这个值作为If-None-Match这个字段的内容,并放到请求头中,然后发给服务器。如果两者不一样,说明要更新了

    如果根据tag标记要更新 则正常http请求流程,否则返回304,告诉浏览器用缓存。

  • 代理缓存

    代理服务器接管一部分的服务端HTTP缓存,客户端缓存过期后就近到代理缓存中获取,代理缓存过期了才请求源服务器,这样流量巨大的时候能明显降低源服务器的压力。具体操作更具Cache-Control字段里相关字段来处理。

缺点
  • 明文传输

    报文采用明文传输,个人隐私暴露 ----- 可用https解决

  • 队头阻塞

    http 长连接时 共用一个tcp连接,请求时间过长则导致其它请求阻塞

  • tcp连接耗时

http 1.1
  • 长连接 keep-alive

  • 缓解队头阻塞

    并发TCP连接,对于同一个域名,浏览器允许同时开6-8个TCP连接

https

HTTPS = HTTP + SSL/TLS

  • 多路复用 解决队头阻塞问题

    采用2进制分帧的的方式解决,即传输 header+body 不再采用明文的方式传输,而是采用二进制的方式,服务器不再接受完整的http请求报文,而是一堆乱序的二进制帧。

    通信双方都可以给对方发送二进制帧,即Stream

    更具每个Stream的id再组装数据

  • 服务器推送

HTTPS为什么让数据传输更安全?

会对传输内容加密处理,不再是http的明文方式。其加密方式结合非对称加密对称加密的方式。

简化版加解密过程
  • 浏览器会给服务器发送一个随机数client_random 和一个自己支持加密的方法列表
  • 服务器接收后给浏览器返回另一个随机数server_random和加密方法。
  • 浏览器接收,接着生成另一个随机数pre_random, 并且用公钥加密,传给服务器。
  • 服务器用私钥钥解密这个被加密后的pre_random
  • 然后两者用相同的加密方法混合这三个随机数,生成最终的密钥
  • 浏览器和服务器用一样的密钥进行通信,即使用对称加密

此过程还是有问题的,浏览器不知道发送者的真实身份,其可能是进行DNS劫持,替换了服务地址伪造的公钥私钥。所以

需要一个可靠的中间人。 ----------- 即数字证书认证

CA证书包括:
  • 网站域名
  • 证书持有者
  • 证书有效期
  • 证书颁发机构
  • 服务器公钥
  • 签名时用的hash算法
  • 签名

签名:hash算法计算公开的明文信息的信息摘要,然后,采用 CA 的私钥对信息摘要进行加密,密文即签名

证书验证过程

CA机构也是用非对称加密。CA公钥负责验证、CA私钥负责加密

  • 客户端 向服务器 S 发出请求时, 返回证书文件
  • 客户端 读取证书中的相关的明文信息,采用证书的hash算法计算得到信息摘要
  • 利用对应 CA 的公钥解密签名数据,对比证书的信息摘要,
  • 如果一致,则可以确认证书的合法性,即公钥合法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值