详解浏览器输入网址后发什么了

当你在浏览器中输入网址后,会发生以下一系列复杂的过程:
一、用户输入网址
你在浏览器地址栏中输入网址,例如 “www.example.com”。浏览器会对这个网址进行解析,判断其是否合法,并准备发起请求。
二、DNS 解析

  1. 浏览器首先检查自身的缓存,看是否有该网址对应的 IP 地址记录。如果有,则直接使用该 IP 地址进行后续步骤。
  2. 如果浏览器缓存中没有,它会查询操作系统的缓存。操作系统也会维护一份 DNS 记录缓存。
  3. 若操作系统缓存中也没有,浏览器会向本地 DNS 服务器发起查询请求。本地 DNS 服务器通常由你的互联网服务提供商(ISP)提供。
  4. 本地 DNS 服务器首先检查自身的缓存。如果找到对应的 IP 地址,就返回给浏览器。
  5. 如果本地 DNS 服务器也没有缓存该记录,它会从根域名服务器开始,逐步查询顶级域名服务器、权威域名服务器,最终获取到网址对应的 IP 地址,并将其返回给浏览器。

三、建立连接

  1. 有了目标服务器的 IP 地址后,浏览器会使用 TCP/IP 协议与服务器建立连接。这个过程首先是通过三次握手来建立 TCP 连接。
    • 第一次握手:浏览器向服务器发送一个带有 SYN 标志的数据包,表示请求建立连接。
    • 第二次握手:服务器收到请求后,返回一个带有 SYN 和 ACK 标志的数据包,表示同意建立连接。
    • 第三次握手:浏览器收到服务器的响应后,再发送一个带有 ACK 标志的数据包,确认连接建立。
  2. 连接建立后,浏览器和服务器就可以进行数据通信了。

四、发送 HTTP 请求

  1. 浏览器构建一个 HTTP 请求报文,其中包含请求方法(如 GET、POST 等)、请求头(如 User-Agent、Accept 等)和请求体(如果有)。
  2. 浏览器将这个请求报文通过已建立的 TCP 连接发送给服务器。

五、服务器处理请求

  1. 服务器接收到浏览器的请求后,根据请求的内容进行处理。
    • 如果是静态资源请求(如 HTML、CSS、JavaScript 文件等),服务器会从文件系统中读取相应的文件,并将其返回给浏览器。
    • 如果是动态请求(如 PHP、JSP、ASP.NET 等),服务器会执行相应的脚本或代码,生成动态内容,并将其返回给浏览器。
  2. 服务器在处理请求的过程中,可能会与数据库进行交互,获取所需的数据。

六、返回 HTTP 响应

  1. 服务器处理完请求后,会构建一个 HTTP 响应报文,其中包含响应状态码(如 200 OK、404 Not Found 等)、响应头(如 Content-Type、Content-Length 等)和响应体(即请求的资源内容)。
  2. 服务器将这个响应报文通过已建立的 TCP 连接发送回浏览器。

七、浏览器处理响应

  1. 浏览器接收到服务器的响应后,首先检查响应状态码。如果是 200 OK,表示请求成功,浏览器开始解析响应内容。
  2. 浏览器根据响应头中的 Content-Type 字段来确定响应内容的类型。例如,如果是 text/html,浏览器就知道这是一个 HTML 文档,并开始解析 HTML 代码。
  3. 浏览器在解析 HTML 代码的过程中,会遇到对其他资源的引用,如 CSS 文件、JavaScript 文件、图片等。浏览器会再次发起请求,获取这些资源。
  4. 当所有资源都加载完成后,浏览器会根据 HTML 代码和 CSS 样式表构建页面的布局,并执行 JavaScript 代码,实现页面的交互效果。

八、显示页面

  1. 浏览器完成页面的构建和渲染后,将页面显示在屏幕上,供你浏览。
  2. 此时,你可以与页面进行交互,如点击链接、填写表单等,浏览器会根据你的操作再次发起请求,重复上述过程。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注