-
域名解析
- DNS请求与响应:当用户在浏览器中输入URL后,浏览器首先需要解析域名对应的IP地址。这个过程称为域名解析,涉及DNS(Domain Name System)协议。
- 本地缓存检查:浏览器首先检查自己的DNS缓存,如果没有找到对应的条目,再检查操作系统的DNS缓存以及hosts文件。
- 递归查询与迭代查询:如果本地解析不了域名,操作系统会向本地DNS服务器发起递归查询请求。本地DNS服务器通过迭代查询的方式,先向根域名服务器查询,然后依次向顶级域名服务器、权限域名服务器查询,最终获得域名对应的IP地址并返回给用户。
-
建立TCP连接
- 三次握手:得到目标IP地址后,浏览器会尝试与服务器建立TCP(Transmission Control Protocol)连接,这个过程需要进行TCP三次握手来同步双方的序列号和确认号,确保数据可靠传输。
-
发送HTTP请求
- HTTP请求构建:TCP连接建立之后,浏览器会根据HTTP(HyperText Transfer Protocol)协议构建并发送HTTP请求报文至服务器。
- 请求方法与路径:HTTP请求包含了方法(如GET)、路径、HTTP版本等信息,以及请求头和可选的请求体。
-
接收HTTP响应
- 服务器处理请求:服务器接收到HTTP请求后,处理该请求,并生成一个HTTP响应报文。
- 响应状态码与消息体:HTTP响应包含状态码、消息头和消息体。状态码指示了请求的处理结果,如200表示成功,消息体则包含了请求的具体内容,如HTML文档。
-
页面渲染
- 浏览器解析HTML:浏览器接收到HTTP响应后,会解析HTML文档,并请求其中的图片、CSS和JavaScript等资源。
- 页面构造与显示:浏览器根据HTML和关联资源构建DOM树,渲染页面,并将最终效果呈现给用户。
-
关闭TCP连接
- 四次挥手:页面渲染完成后,浏览器与服务器之间的TCP连接会被关闭,这通常涉及到TCP四次挥手的过程。