Appearance
输入 URL 并 enter 时,到底发生了什么?
示意图

DNS(Domain Name System)服务器解析过程
当你在浏览器中输入一个 URL 比如
www.example.com时,我们需要先找到它对应的IP地址:这个过程被称为DNS解析,域名系统解析。缓存查找过程
- 浏览器缓存: 首先,浏览器会检查它的缓存中是否有这个域名的记录,因为之前访问的网址的解析结果可能会储存在浏览器缓存中。
- 操作系统缓存: 如果浏览器缓存中没有找到,浏览器会询问操作系统,因为操作系统也可能有自己的 DNS 缓存。
- 路由器缓存: 如果操作系统中也没有找到,请求会发送到本地网络中的路由器,它同样可能有自己的 DNS 缓存。
- ISP(Internet service provider)缓存: 如果以上都没有缓存记录,请求最终会发送到你的互联网服务提供商,他们通常会有更大范围的 DNS 缓存。
DNS 递归解析: 如果所有本地缓存查找都失败,DNS 查询就变成了一个递归查询过程,涉及到多个 DNS 服务器:
- 根域名服务器: 首先,你的 DNS 查询会被发送到根域名服务器。根服务器是最高级别的 DNS 服务器,负责重定向到负责管理顶级域名(如
.com,.net等)的顶级域名服务器。 - 顶级域名服务器(TLD 服务器): 根服务器会告诉你的 ISP 的 DNS 服务器去查询哪个顶级域名服务器来找到
.com域的信息。这个服务器掌握所有.com域名及其相应的服务器的信息。 - 权威域名服务器: 一旦你的 DNS 查询到达了正确的顶级域名服务器,它会进一步定向到负责
example.com的权威服务器。权威服务器有该域名对应的具体IP地址。
- 根域名服务器: 首先,你的 DNS 查询会被发送到根域名服务器。根服务器是最高级别的 DNS 服务器,负责重定向到负责管理顶级域名(如
IP 地址获取和缓存
IP 地址的获取: 最终,权威域名服务器会提供www.example.com域名对应的IP地址(如图中的93.184.216.34),这个信息会被发送回用户的电脑。

缓存结果: 一旦 IP 地址被找到,它通常会被存储在浏览器、操作系统、路由器或 ISP 的 DNS 缓存中,以便未来的查询可以更快得到解析。
建立 TCP 连接
- TCP (Transmission Control Protocol, 传输控制协议),TCP 是一种面向连接的协议,用于在网络中的两个端点之间建立可靠的会话。
- 以下是 TCP 连接建立过程,通常称为三次握手(TCP 3-way handshake):
- SYN(Synchronize):
- 客户端发送一个 SYN 包到服务器以初始化一个连接。
- 客户端设置一个随机的序列号,告诉服务器它准备开始发送数据。
- 序列号不仅仅是在握手期间使用的,后续传输数据也会用到,用来保证数据的完整性和顺序。
- SYN-ACK(Synchronize-Acknowledgment):
- 服务器接收到客户端的
SYN包后,会发送一个SYN-ACK包作为响应。 -服务器同样设置一个随机的序列号,并将客户端的序列号加一,发送回给客户端,确认已经收到了客户端的同步请求(+1 表示服务器确认收到)
- 服务器接收到客户端的
- ACK(Acknowledgment):
- 客户端收到服务器的
SYN-ACK后,发送一个ACK包作为回应。 - 这个 ACK 包将服务器的序列号加一,并可能包含客户端准备发送的数据的开始部分(比如
HTTP请求行GET/HTTP/1.1和请求头,这个被称之为 TCP 快速打开)。 - 此时,TCP 连接已经建立,双方可以开始数据传输。
- 客户端收到服务器的
发送 HTTP 请求
- HTTP (Hypertext Transfer Protocol, 超文本传输协议)
- 它是建立在 TCP 连接之上的应用层协议。(这里不展开网络的分层架构)
HTTP 工作流程如下:

- 客户端请求:
- 一旦 TCP 连接建立,客户端(通常是 Web 浏览器)就可以通过这个连接发送一个
HTTP请求到服务器。 - 这个请求包含了方法(GET、POST 等)、URI(统一资源标识符)和协议版本,以及可能包含的请求头和请求体。
- 一旦 TCP 连接建立,客户端(通常是 Web 浏览器)就可以通过这个连接发送一个
- 服务器响应:
- 服务器接收到 HTTP 请求后,会处理这个请求并返回一个
HTTP响应。 - 响应通常包括一个状态码(如 200 表示成功,404 表示未找到),响应头,以及任何响应内容(如请求的 HTML 文件)。
- 服务器接收到 HTTP 请求后,会处理这个请求并返回一个
TCP 为 HTTP 提供了一个可靠的通道,确保数据正确、完整地从服务器传输到客户端。