HTTPS 请求流程

1,025 阅读2分钟

一、流程简介

HTTPS请求流程 (2).png

二、流程分析

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部分
  • 客户端获取证书后会生成一个随机字符串,并通过公钥对其进行加密,并发送给服务端。双方把该字符串作为通信数据加解密的密钥。