目录

TCP/IP-HTTPS

TCP/IP

  1. 是什么: 一系列协议组成的网络分层模型
  2. 分层原因: 网络会不稳定, 交给下层让下层去处理这些事情, 让下层去做失败重请求等操作

具体分层

客户端 传输 服务端
应用层(HTTP/FTP/DNS…) 应用层
传输层(TCP: 失败重连/UDP: 不重连<直播>) 传输层
网络层(IP): 路由, 寻址 网络层
数据链路层(物理层: 以太网/Wifi/光纤) <————> 数据链路层

连接

  1. 是什么: 通信双方表明接受通信, 不将对方消息丢弃, 即为建立连接(使用端口)

    建立: 三次握手, 断开: 四次挥手(要双方都表明都无消息可发才会断开)

  2. 长连接: 利用四次挥手的原理, 发送心跳包, 阻止TCP连接断开

HTTPS

  1. 定义: HTTP (Secure / over SSL / over TLS)

    在 HTTP 之下增加一个安全层

  2. 原理: 刚开始通过非对称加密协商出一套对称加密密钥, 之后采用对称加密达到加密传输

  3. 为什么不直接非对称加密: 非对称加密性能差

TLS 建立过程

  1. Client Hello

  2. Server Hello (包含加密套件<对称/非对称/hash> / 客户端随机数 / 服务端随机数)

  3. 服务器证书 信任建立 为了保证公钥的可信性会进行以下验证:

    • 服务器公钥 (事实上还会包含 主机名/地区 等信息)

    • 服务器公钥的签名

    • 证书签发机构的公钥

    • 证书签发机构的公钥的签名

    • 证书签发机构的签发机构的公钥

    • 证书签发机构的签发机构的公钥的签名

    • …..

    • 根证书 (由系统自带)

  4. Secret 使用随机数使用服务端公钥加密

    生成 Master secrect / 客户端加密密钥 / 服务端加密密钥 / 客户端 MAC secrect / 服务端 MAC secrect

    • 为什么不直接用公钥加密

      目的: 防止中间人拦截后多次发送给服务端

    • 客户端用服务端密钥加密发给服务端, 服务端用客户端密钥加密发给客户端

      目的: 防止中间人将消息直接扔回

  5. 客户端通知:将使用加密通信

  6. 客户端发送:Finished

  7. 服务器通知:将使用加密通信

  8. 服务器发送:Finished