1. DNS解析过程
浏览器向DNS服务器发起请求,分为递归查询和迭代查询两种方式依次请求根域名服务器,顶级域名服务器和权威域名服务器
为了让DNS解析更加精确,客户端还需要在请求包里带上自己的源IP地址。
2. HTTP请求过程
在上一步我们通过 DNS 解析拿到服务器 IP 地址后,浏览器再通过系统调用 Socket 接口与服务器 443 端口进行通信,整个过程可以分解为建立连接、发送 HTTP 请求、返回 HTTP 响应、维持连接、释放连接五个部分。
1、建立连接:在连接建立之前,服务器必须做好接受连接的准备,通过调用 socket、bind、listen 和 accept 四个函数来完成绑定公网 IP、监听 443 端口和接受请求的任务 -> TCP三次握手 -> TLS四次握手
2、发送HTTP请求
3、返回HTTP响应
4、维持连接:HTTP不同版本协议不同,有些是默认长连接的,也可以通过keepalive和心跳包机制来保活
5、断开连接:服务器向客户端发送Alert报文 -> 四次挥手