浏览器输入网址后进行的操作:
-
浏览器会解析网址,提取协议(例如 HTTP、HTTPS)和域名(例如 www.example.com)。
-
DNS 解析:
-
浏览器会进行 DNS 解析,将域名解析为对应的 IP 地址。解析过程包括以下步骤:
- 浏览器检查本地 DNS 缓存,如果找到对应的 IP 地址,则跳过后续的 DNS 查询步骤。
- 如果本地 DNS 缓存中没有对应的 IP 地址,浏览器向操作系统发起 DNS 查询请求。
- 操作系统将查询请求发送给预配置的 DNS 服务器。
- DNS 服务器进行递归查询,依次向根域名服务器、顶级域名服务器和权威域名服务器发起查询请求,直到获取到目标域名的 IP 地址。
- DNS 服务器将 IP 地址返回给操作系统,然后传递给浏览器。
-
-
建立 TCP 连接(三次握手):
如果使用的是 HTTP 或 HTTPS 协议,浏览器会与服务器进行 TCP 连接的三次握手,确保双方能够正常通信。
- 客户端向服务器发送一个带有 SYN(同步)标志的数据包,表示请求建立连接。
- 服务器收到请求后,回复一个带有 SYN/ACK(同步/确认)标志的数据包,表示同意建立连接。
- 客户端收到服务器的回复后,发送一个带有 ACK(确认)标志的数据包,表示连接建立完成。
-
发送网络请求:
- 浏览器向服务器发送网络请求,请求可以包含 HTTP 方法(例如 GET、POST)、请求头(例如 User-Agent、Cookie)和请求体(例如表单数据、JSON 数据)等信息。
-
服务器处理请求:
- 服务器接收到请求后,会根据请求的内容进行相应的处理,可能包括处理业务逻辑、查询数据库、生成响应等操作。
-
服务器返回响应:
- 服务器生成响应数据,可以是 HTML 字符串、JSON 数据、图像等,并将响应发送回浏览器。
- 响应包括状态码、响应头和响应体等信息。
-
浏览器渲染页面:
- 如果返回的是 HTML 页面,浏览器会解析 HTML,构建 DOM 树和 CSSOM 树,然后将其合并成渲染树,并进行布局、绘制和渲染等操作,最终将页面内容呈现给用户。
- JavaScript 代码的执行可能会修改 DOM 结构、样式和页面内容,从而触发重新渲染。
- 具体信息查看浏览器渲染页面过程 - 掘金 (juejin.cn)
8 关闭 TCP 连接(四次挥手):
当请求响应完成后,浏览器和服务器会进行 TCP 连接的四次挥手,逐步关闭连接。
挥手过程包括以下步骤:
- 客户端发送一个带有 FIN(结束)标志的数据包,表示请求关闭连接。
- 服务器收到请求后,回复一个带有 ACK(确认)标志的数据包,表示收到关闭请求。
- 服务器发送一个带有 FIN(结束)标志的数据包,表示准备关闭连接。
- 客户端收到请求后,回复一个带有 ACK(确认)标志的数据包,表示同意关闭连接