从浏览器输入网址到展示网页,整个过程可以分解为以下详细步骤:
-
网址输入:用户在浏览器的地址栏中输入URL(统一资源定位符)。
-
URL解析:浏览器解析URL以确定要使用的协议(如HTTP或HTTPS)、服务器地址和路径。 -
DNS解析:
-
浏览器检查缓存中是否有该URL的IP地址记录。
-
如果没找到,浏览器会发起一个DNS查询去将域名转换为可用的IP地址。
-
DNS查询可能涉及联系本地DNS缓存、ISP的DNS服务器,甚至是顶级域名服务器。
-
建立连接:
-
浏览器通过网络向目标IP地址发起TCP三次握手来建立一个TCP连接。
-
对于HTTPS,此时还会进行TLS/SSL握手来建立安全的加密通道。
-
发送HTTP请求:
-
浏览器构造一个HTTP请求消息,包含请求方法(如GET或POST)、路径和版本号等,并添加必要的HTTP头信息。
-
请求被发送到服务器。
-
服务器处理请求:
-
服务器接收到请求并解读。
-
服务器上的服务程序(如Apache、Nginx)响应请求,可能涉及后端语言(PHP、Python等)对数据进行处理。
-
发送HTTP响应:
-
服务器发送一个HTTP响应消息回浏览器,包含状态码、内容类型(MIME Type)、内容长度、实际请求的数据和其他头信息。
-
对于动态内容,服务器可能会与数据库交互来构建HTML。
-
关闭或保持连接:
-
HTTP/1.1默认情况下会尝试复用连接(Keep-Alive)。
-
HTTP/2支持在同一连接上多路复用请求。
-
浏览器处理响应:
-
浏览器检查状态码,如200表示成功。
-
解析响应头,设置如编码、CORS策略等。
-
开始解析HTML文档。
-
构建DOM树:
-
浏览器逐行解析HTML,构建DOM树。
-
遇到外部链接的标签(如link或script),浏览器可能会发起新的HTTP请求加载这些资源。
-
构建CSSOM树:
-
并行于DOM树的构建,浏览器解析所有CSS样式,形成CSSOM树。
-
执行JavaScript:
-
如果HTML文档中包含JavaScript代码,浏览器会按序解析并执行它们。
-
JavaScript可能会修改DOM和CSSOM树。
-
构建渲染树:
-
一旦DOM和CSSOM都准备好了,浏览器将它们合并成渲染树。
-
渲染树只包含页面需要显示的节点和其样式信息。
-
布局(Reflow):
-
浏览器计算渲染树中每个节点的准确位置和大小。
-
绘制(Painting):
-
浏览器在屏幕上绘制内容,包括文本、颜色、图像等元素。
-
合成(Compositing):
-
如果页面包含层叠的复杂元素,浏览器会进行合成层的操作,优化性能。
-
加载子资源:
-
图片、视频、字体等额外资源继续被下载并处理。
-
进一步交互:
-
用户可以开始与页面交互,而随着用户的交互,可能会触发JavaScript事件,导致DOM变更,启动新的更新循环。
-
异步操作:
-
页面可能会进行异步API调用(如Ajax),以获取额外数据并更新页面内容,而不重新加载整个页面。
本篇文章来源于微信公众号: 互联网面试小帮手
微信扫描下方的二维码阅读本文

Comments NOTHING