一次完整的 HTTPS 通信流程
HTTPS = HTTP + TLS/SSL,通信过程包括:
- 建立 TCP 连接(三次握手)
- TLS/SSL 握手
- 客户端和服务器协商 TLS 版本与加密算法(客户端发送第一个随机数)
- 服务器发送数字证书(包含公钥)(服务器发送第二个随机数)
- 客户端核实数字证书的真实性,若为真,则取出公钥,用公钥加密后传输数据(包含第三个随机数)
- 服务器和客户端根据三个随机数与协商好的加密算法计算出最终会话密钥
- 双方确认握手完成
- HTTP 传输加密数据:用会话密钥加密 HTTP 请求和响应
在浏览器中输入URL后👉
- 解析URL:输⼊URL后,浏览器会解析出协议、主机、端⼝、路径等信息,并构造⼀个HTTP请求。浏览器会根据请求头判断是否有HTTP缓存,并根据是否有缓存决定是从服务器获取资源还是使⽤缓存资源。
- DNS域名解析:在发送HTTP请求之前,浏览器需要知道url对应的IP地址,因此需要DNS服务将域名解析成对应的IP地址。
- 建立TCP连接:客户端和服务器之间进⾏HTTP请求和HTTP响应的过程中,需要进⾏三次握⼿建立起TCP连接。
- 浏览器发送HTTP/HTTPS请求到web服务器
- 服务器处理HTTP请求并返回HTTP报文:服务器会接受请求并将其传递给请求处理程序,然后将HTTP响应报文发送给浏览器,⼀般响应报⽂包含:请求的网页、状态码、压缩类型、如何缓存的页面、设置的cookie等。
- 浏览器渲染页面
- TCP四次挥⼿断开连接