Http协议
本篇文章主要讲解的是http缓存跟https协议(对称加密跟非对称加密)
对比缓存 缓存标识发到服务器做对比 如果缓存标识一样304 ,变了 就返回数据
last-modified/if-modified-since
服务器返回数据的时候 告诉你last-modified
再次客户端请求 if-modified-since >= last-modified 说明资源改动过
< 304
Etag/if-none-match 优先级高些 服务器返回:etag 当前资源在服务器的唯一标识UUID(生成规则由服务器定) 再次请求 if-none-match == etag 那就返回304(就是本地数据有效的 可以继续用)
强制缓存
Expires 服务器返回给客户端的到期时间 如果下一次请求时间<到期时间,那就使用缓存里面的数据 是http1.0
Cache-Control http1.1 (如果使用到no-store 那就所以缓存都不会生效)(如果使用的是no-cache 那就是对比缓存)(如果是max-age=xxx 那就是在多少秒后失效)
对称加密 双方都需要用同一把秘钥来解析密文
非对称加密 加密用的公钥 解密用的私钥
数字签名:使用的私钥 不可抵赖
http :明文传输
三大风险:
1.窃听风险:第三方可以获取通信可以理解内容
2.篡改风险:第三方可以修改通信内容
3.冒充风险:第三方可以冒充他人身份参与通信
https 为解决三大风险而设计
1.所有的信息是加密传输 第三方无法窃听
2.具有校验机制,一旦被篡改,双方通信能立刻发现
3.配备身份证书:防止身份被冒充 CA信赖的机构颁布的
https单向认证
- 客户端向服务器发起加密通信请求 clientHello
- TSL 版本
- 客户端生成一个随机数 用于稍后对话秘钥
- 支持的加密的方式 RSA (base64是编码方式) 非对称加密 使用的公钥
- 支持的压缩算法
- 服务端回应serverHello
- 确认加密协议 版本 TLS 1.0
- 生成一个随机数 用于稍后的 对话秘钥
- 确认加密的方法
- 服务器证书 只需要服务器证书(这种称之为单向认证)
- 客户端回应
做的事情
- 验证服务器证书
- 取出证书中的公钥
- 一个随机数 用证书中的公钥加密
- 编码改变通知 接下来的信息用双方协定的秘钥 加密方法
- 客户端握手结束通知
- 服务端回应
- 编码改变通知 接下来的信息用双方协定的秘钥 加密方法
- 服务器握手结束通知
-
向服务器发送信息
延伸:可以看看volley框架 里面会涉及到这些的