Skip to content
Hongzzz's Blog
Go back

输入网址后发生了什么

这是一个常见的面试题,涵盖从 URL 输入到页面展示的完整过程。以下是七个关键步骤的详细分解。

1. URL 解析

判断用户输入是否是合法的 URL 并识别对应的协议。如果不合法,则使用浏览器的默认搜索引擎搜索该关键词。

2. 缓存查询

查询浏览器是否缓存了对应的网页(Expires 或 Cache-Control 未过期),如果有缓存则直接使用缓存中的文件。

3. DNS 解析

现在有了网站 URL,浏览器只能通过 IP 地址找到服务器,所以需要 DNS 来获取 IP。首先查询浏览器和操作系统中的 DNS 缓存,然后检查本地 hosts 文件,如果仍然找不到,则查询 DNS 服务器。

4. TCP 连接建立

三次握手:首先客户端发送 SYN=x 数据包,服务器收到后返回 SYN=y, ACK=x+1 数据包,最后客户端发送 ACK=y+1 数据包。

5. HTTP 请求发送

通过已建立的 TCP 连接向服务器发送 HTTP 请求报文。

如果是 HTTPS,则需要 SSL/TLS 层加密。

6. HTTP 响应接收

服务器返回 HTTP 响应报文。

如果是 HTTPS,响应需要先用私钥解密。

7. 浏览器解析渲染

解析 HTML、CSS、JavaScript,构建 CSSOM 和 DOM 树,并进行渲染。

如果有其他资源(如图片),则按相同流程请求它们。


Share this post on:

Previous Post
如何减少 React 重渲染