浏览器输入URL加载的全过程都发生了什么事情,你知道?

114 阅读4分钟

浏览器输入URL加载的全过程都发生了什么事情,你知道?

什么是URL

统一资源定位符(URL,英文 Uniform / Universal Reaource Locator 的缩写) 标准的URL由服务类型(协议)、存放资源的主机域名(可以是域名或者ip地址,可以包括端口号)、主机资源路径和文件名

URL请求顺序

当你在浏览器中输入一个URL并按下回车键时,会发生一系列复杂的步骤。以下是这个过程的概述:

  1. 解析URL: 浏览器首先解析输入的URL,确定其协议(如http或https)、主机名、端口(如果有指定)、路径和查询字符串。

  2. DNS查询: 如果浏览器缓存中没有主机名对应的IP地址,它会向DNS服务器发起查询请求,以获取该主机名对应的IP地址。

  3. 建立TCP连接(如果是HTTP/1.1或HTTP/2): 浏览器使用IP地址建立到服务器的TCP连接。这涉及到一个称为“三次握手”的过程,确保连接的可靠性。

  4. 发送HTTP请求: 一旦TCP连接建立,浏览器会构造一个HTTP请求消息,包括请求行(方法、URL、HTTP版本)、请求头和请求体(如果有的话),然后将这个请求发送到服务器。

  5. 服务器处理请求: 服务器接收到请求后,根据请求的类型(如GET、POST等),处理请求并生成响应。

  6. 发送HTTP响应: 服务器将响应消息发送回浏览器,包括状态行(HTTP版本、状态码、状态信息)、响应头和响应体(如HTML文档、图片、JavaScript文件等)。

  7. 浏览器渲染页面: 浏览器接收到响应后,根据响应的状态码进行相应处理。如果是200 OK,浏览器会开始解析响应体中的HTML内容,并开始页面的渲染过程。这包括:

    • 解析HTML,构建DOM树。
    • 解析CSS,构建CSSOM树。
    • 将DOM树和CSSOM树合并成渲染树。
    • 布局渲染树,计算每个节点在页面上的位置。
    • 将渲染树绘制到屏幕上。
  8. 处理JavaScript: 如果页面包含JavaScript,浏览器会解析并执行脚本。这可能会进一步修改DOM,触发重排或重绘。

  9. 加载资源: 浏览器会递归地加载页面中引用的所有资源,如图片、CSS文件、JavaScript文件等。

  10. TCP连接关闭: 对于HTTP/1.1,浏览器和服务器会在数据传输完成后关闭TCP连接,除非请求头中指定了Connection: keep-alive。对于HTTP/2,一个TCP连接可以并行传输多个请求和响应。

  11. 浏览器缓存: 浏览器可能会将页面的某些部分缓存起来,以便在下次访问时加快加载速度。

  12. 安全性检查: 浏览器还会进行安全性检查,如HTTPS证书验证,确保数据传输的安全。

概念解释

  • IP 地址:IP 协议为互联网上的每一个网络和每一台主机分配的一个逻辑地址。IP 地址如同门牌号码,通过 IP 地址才能确定一台主机位置。服务器也是一台主机,想要访问某个服务器,必须先知道它的 IP 地址;
  • 域名(DN):IP 地址由四个数字组成,中间用点号连接,在使用过程中难记忆且易输入错误,所以用我们熟悉的字母和数字组合来代替纯数字的 IP 地址,比如我们只会记住 <www.baidu.com(百度域名)> 而不是 220.181.112.244(百度的其中一个 IP 地址);
  • DNS: 每个域名都对应一个或多个提供相同服务服务器的 IP 地址,只有知道服务器 IP 地址才能建立连接,所以需要通过 DNS 把域名解析成一个 IP 地址。
  • 协议:从该计算机获取资源的方式,常见的是Http、Ftp、Gopher、Telnet、File,不同协议有不同的通讯内容格式;资源路径指示从服务器上获取哪一项资源。

参考: www.cnblogs.com/wyx8891/p/7… 更多公众号: Net分享 www.dotnetshare.com/