网络架构-网络编程基础二

172 阅读1分钟

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单向认证

  1. 客户端向服务器发起加密通信请求 clientHello
    1. TSL 版本
    2. 客户端生成一个随机数 用于稍后对话秘钥
    3. 支持的加密的方式 RSA (base64是编码方式) 非对称加密 使用的公钥
    4. 支持的压缩算法
  2. 服务端回应serverHello
    1. 确认加密协议 版本 TLS 1.0
    2. 生成一个随机数 用于稍后的 对话秘钥
    3. 确认加密的方法
    4. 服务器证书 只需要服务器证书(这种称之为单向认证)
  3. 客户端回应 做的事情
    1. 验证服务器证书
    2. 取出证书中的公钥
    1. 向服务器发送信息
    2. 一个随机数 用证书中的公钥加密
    3. 编码改变通知 接下来的信息用双方协定的秘钥 加密方法
    4. 客户端握手结束通知
  4. 服务端回应
    1. 编码改变通知 接下来的信息用双方协定的秘钥 加密方法
    2. 服务器握手结束通知

延伸:可以看看volley框架 里面会涉及到这些的