返回

在浏览器中输入URL会发生什么?

见解分享

  1. DNS查询

当您在浏览器中输入一个URL时,浏览器首先会进行DNS查询,以将URL中的域名解析为对应的IP地址。DNS查询的过程如下:

  1. 浏览器向本地DNS服务器发送查询请求,本地DNS服务器会检查其缓存中是否已经存在该域名的IP地址记录。如果存在,则直接返回给浏览器。
  2. 如果本地DNS服务器缓存中不存在该域名的IP地址记录,则向根DNS服务器发送查询请求。根DNS服务器负责管理互联网顶层域名的解析,会将查询请求转发给负责该顶级域名的授权DNS服务器。
  3. 授权DNS服务器会将查询请求转发给负责该域名的权威DNS服务器。权威DNS服务器拥有该域名的完整解析记录,会直接返回给浏览器。
  4. 浏览器收到权威DNS服务器返回的IP地址记录后,会将其缓存到本地DNS服务器中,以便下次查询时直接从本地DNS服务器获取。

2. TCP连接建立

在获得目标主机的IP地址后,浏览器会与该主机建立TCP连接。TCP连接建立的过程如下:

  1. 浏览器向目标主机发送一个SYN(Synchronize)数据包,其中包含一个随机生成的序列号。
  2. 目标主机收到SYN数据包后,会发送一个SYN-ACK(Synchronize-Acknowledge)数据包,其中包含一个随机生成的序列号和对浏览器序列号的确认。
  3. 浏览器收到SYN-ACK数据包后,会发送一个ACK(Acknowledge)数据包,其中包含对目标主机序列号的确认。
  4. 至此,TCP连接建立成功,浏览器和目标主机可以开始交换数据。

3. HTTP请求发送

TCP连接建立成功后,浏览器会向目标主机发送HTTP请求。HTTP请求包含以下信息:

  • 请求方法(GET、POST、PUT、DELETE等)
  • 请求资源路径(例如,/index.html)
  • HTTP版本(例如,HTTP/1.1)
  • 请求头(例如,Host、User-Agent、Accept等)
  • 请求体(如果请求方法是POST、PUT或DELETE,则包含请求数据)

4. 服务端处理和资源返回

目标主机收到HTTP请求后,会根据请求方法和请求资源路径,对请求进行处理。处理完成后,会将处理结果(例如,HTML页面、JSON数据、图片等)作为HTTP响应返回给浏览器。HTTP响应包含以下信息:

  • 响应状态码(例如,200 OK、404 Not Found、500 Internal Server Error等)
  • 响应头(例如,Content-Type、Content-Length、Date等)
  • 响应体(包含处理结果)

5. 浏览器解析和绘制

浏览器收到HTTP响应后,会对响应体进行解析和绘制。解析过程包括:

  • HTML解析:浏览器将HTML代码解析成DOM树,DOM树是HTML代码的结构化表示。
  • CSS解析:浏览器将CSS代码解析成样式规则树,样式规则树决定了HTML元素的样式。
  • JavaScript解析:浏览器将JavaScript代码解析成抽象语法树,抽象语法树是JavaScript代码的结构化表示。

绘制过程包括:

  • 布局:浏览器根据DOM树和样式规则树,计算每个HTML元素在页面上的位置和大小。
  • 绘制:浏览器根据布局结果,将每个HTML元素绘制到页面上。

6. TCP连接关闭

当页面加载完成后,浏览器会关闭TCP连接。TCP连接关闭的过程如下:

  1. 浏览器向目标主机发送一个FIN(Finish)数据包,表示要关闭连接。
  2. 目标主机收到FIN数据包后,会发送一个ACK(Acknowledge)数据包,表示已收到FIN数据包。
  3. 至此,TCP连接关闭成功。