加密
- 对称加密: 即加密的密钥和解密的密钥相同。
- 非对称加密:密钥分为公钥和私钥, 公钥可以公开, 私钥需要保密, 客户端公钥加密的数据,服务端可以用私钥来解密。
三次握手(连接建立)
- 第一次客户端发送SYN包到服务器, 并进入SYN_SEND状态, 等待服务器确认
- 第二次服务器收到SYN包, 并向客户端返回ACK, 同时也发送一个SYN包, 即ACK+SYN包,此时服务器进入SYN_RCVD状态
- 客户端收到服务器SYN+ACK包, 向服务器发送确认包ACK,发送完毕后,客户端和服务器进入连接状态,完成三次握手
- 完成三次握手, 客户端和服务端开始传输数据
**三次握手保证了不会建立无效连接,从而浪费资源
四次挥手(断开连接)
- 客户端发送一个FIN,用来关闭客户端到服务器的数据传输
- 服务器收到FIN, 它返回一个ACK,确认序号为收到的序号+1。和SYN一样,一个FIN将占用一个序号
- 服务器关闭客户端的连接, 发送一个FIN给客户端
- 客户端发回ACK报文确认, 并将确认序号设置为收到序号加1
http协议
基于TCP协议的应用层传输协议,它也是一种无状态的协议,它不会保存请求和响应的通信状态,保持操作的简单性。请求方法,请求版本,请求url, 请求头,请求体等, 响应状态码,响应头,响应体,http版本信息
https的连接过程
- 首先客户端先给服务器发送一个请求。
- 服务器发送一个SSL证书给客户端,内容包括:证书的发布机构,有效期,所有者,签名算法,指纹算法以及公钥。
- 客户端接受后会验证证书的安全性,如果验证通过,会随机生成一个随机数, 用公钥对其加密,发送到服务端
- 服务端接受这个加密后的随机数后,用私钥进行解密,得到真正的随机数,然后用这个随机数当作密钥对需要发送的数据进行对称加密
- 客户端在接受到加密的数据,使用随机值对数据进行解密
- SSL加密建立,开始进行通信