HTTPS 请求流程
一、流程简介
二、流程分析
1、Socket连接
客户端发起请求时,首先通过DNS服务器进行域名解析获取对应的IP地址,然后委托给协议栈(TCP/IP),携带IP地址和端口号通过网卡转换成电信号与对应的服务器进行Socket的连接。
2、TCP三次握手
在Socket连接的过程中,客户端和服务端必须通过三次握手才能成功建立连接。
- 客户端的TCP头部携带SYN=1的同步请求连接控制位,同时生成一个随机序列号初始值X写入到服务端的Socket中
- 服务端收到信息后,自己的TCP头部会携带一个SYN=1的同步请求连接控制位,同时生成一个随机序列号初始值Y,并且通过客户端发送的随机序列号X计算出ACK号,最后返回给客户端
- 客户端收到信息后,通过服务端发送的随机序列号Y计算出ACK号在发送给服务端
至此连接就建立成功了。
客户端和服务端的随机序列号作用:双方通信过程中对于接收发送数据的拆包、粘包必须通过它们来确定顺序
3、CA证书校验
3.1、TSL部分
- 首先从服务获取到证书,证书中包含公钥
- 通过公钥对证书签名进行解密获取Hash-H1
- 通过Hash算法对证书中信息进行加密获取Hash-H2
- 对比Hash-H1和Hash-H2,相等证书合法、否则证书不合法 3.2、SSL部分
- 客户端获取证书后会生成一个随机字符串,并通过公钥对其进行加密,并发送给服务端。双方把该字符串作为通信数据加解密的密钥。
转载自:https://juejin.cn/post/7026375183451570206