13:URL输入到页面渲染过程

news/2024/10/6 21:50:16 标签: 前端, 网络

从URL输入到页面渲染的过程是一个复杂而精细的流程,它涉及多个步骤和多个参与方(包括浏览器、DNS服务器、服务器等)。以下是这一过程的详细解析:

一、URL解析与DNS查找

  1. URL解析

    • 当用户在浏览器中输入一个URL并按下回车键时,浏览器首先会对URL进行解析。
    • 一个完整的URL包括协议(如http或https)、域名(如www.google.com)、端口(默认为80或443)、路径和查询参数等部分。
  2. DNS查找

    • 浏览器将URL中的域名发送给DNS服务器,以获取对应的IP地址。
    • DNS查找过程可能涉及本地缓存、本机缓存、hosts文件、路由器缓存、ISP DNS缓存以及DNS递归查询(从本地DNS服务器到权限DNS服务器,再到顶级DNS服务器,最后到根DNS服务器)。

二、TCP连接建立

  1. 三次握手

    • 浏览器使用HTTP或HTTPS协议与服务器建立TCP连接。
    • TCP连接建立过程涉及三次握手:客户端发送SYN包请求建立连接,服务器回应SYN-ACK包表示同意连接,最后客户端再发送ACK包确认连接建立。

三、HTTP请求处理

  1. 发送HTTP请求

    • 浏览器向服务器发送一个HTTP请求,包括请求方法(如GET、POST等)、请求头(如User-Agent、Cookie等)和请求体(POST请求时携带的数据)。
  2. 服务器处理请求

    • 服务器接收到HTTP请求后,会根据请求的内容进行处理。这可能涉及动态生成页面、查询数据库、读取文件等操作。

四、接收响应与页面渲染准备

  1. 接收响应

    • 服务器处理完请求后,会生成一个HTTP响应,包括状态码、响应头和响应体。
    • 浏览器接收到服务器的HTTP响应后,开始处理响应内容。
  2. 准备渲染进程

    • 浏览器进程检查当前URL是否与之前打开了渲染进程的页面的根域名相同,如果相同,则复用原来的进程,如果不同,则开启新的渲染进程。

五、页面渲染

  1. 解析HTML与构建DOM树

    • 浏览器解析HTML内容,通过分词器将HTML字节流拆分为一个个Token,然后生成节点Node,最后解析成浏览器识别的DOM树结构。
  2. 解析CSS与构建CSSOM树

    • 浏览器解析CSS样式表,计算出每个元素的样式,并生成CSSOM树。
  3. 构建渲染树

    • 浏览器将DOM树和CSSOM树结合生成渲染树。
  4. 布局与绘制

    • 浏览器计算每个节点的几何信息(位置和大小),然后将渲染树的各个节点绘制到屏幕上。
  5. 下载与执行资源

    • 在页面渲染的过程中,浏览器会解析HTML文档中的链接,如CSS文件、JavaScript文件、图片等,并发送请求下载这些资源。
    • 当浏览器下载并解析完所有的HTML、CSS和JavaScript文件后,会开始执行页面中的JavaScript代码。JavaScript代码可以修改DOM树、处理用户交互等。

六、TCP连接终止

  1. 四次挥手

    • 当所有数据传输完成后,需要终止TCP连接以释放资源。TCP连接终止过程涉及四次挥手:主动关闭方发送FIN包表示数据发送完毕,被动关闭方收到FIN包后发送ACK包确认,然后被动关闭方发送FIN包表示数据也发送完毕,最后主动关闭方发送ACK包确认并等待一定时间后关闭连接。

综上所述,从URL输入到页面渲染的过程是一个涉及多个步骤和多个参与方的复杂流程。了解这一过程有助于我们更好地优化网页性能和提高用户体验。


http://www.niftyadmin.cn/n/5692195.html

相关文章

百度飞桨(paddlepaddle)安装

百度飞桨(paddlepaddle)安装 Anaconda升级 打开 Anaconda Prompt (或者 Mac 下的终端),键入: conda upgrade --all pip 安装 python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/s…

C++——模板进阶、继承

文章目录 一、模板1. 非类型模板参数2. 模板的特化函数模板特化类模板特化1. 全特化2. 偏特化部分特化参数更进一步的限制 二、继承1. 概念2. 定义定义格式 3. 继承基类成员访问⽅式的变化4. 继承类模板5.基类和派⽣类间的转换6. 继承中的作⽤域隐藏规则: 7. 派⽣类…

物理学基础精解【55】

文章目录 函数函数及图形绝对值定义性质公式数学原理例题 区间定义性质公式数学原理例题 领域定义性质数学原理例题 绝对值的定理1. 绝对值的定义2. 非负性定理3. 绝对值的唯一性4. 相反数的绝对值相等5. 绝对值的乘法性质6. 绝对值的三角不等式(或称为绝对值的加法…

【Python】数据可视化之聚类图

目录 clustermap 主要参数 参考实现 clustermap sns.clustermap是Seaborn库中用于创建聚类热图的函数,该函数能够将数据集中的样本按照相似性进行聚类,并将聚类结果以矩阵的形式展示出来。 sns.clustermap主要用于绘制聚类热图,该热图通…

设计模式(3)builder

需求: 对于复杂的对象,我们只需要 通过 设置一些参数,就可以得到相对应的 实例。 简单来说, 需求就是用一个类 通过方法返回一个 新建的对象,而且可以通过方法去设置这个对象 public interface CarBuilder {void se…

无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享

你知道怎么下载无水印视频素材吗?今天小编就给大家推荐十个高清无水印视频素材下载的网站,如果你也是苦于下载高清无水印的短视频素材,赶紧来看看吧~ 1. 稻虎网 首推的是稻虎网。这个网站简直就是短视频创作者的宝库。无论你需要…

人工智能专业就业方向与前景

随着产业结构升级的持续推进,未来行业领域对于人工智能专业人才的需求量会逐渐增加,一部分高校也开始陆续在本科阶段开设人工智能专业,以缓解人工智能领域人才缺口较大的问题。下面是小编整理的人工智能专业就业方向与前景,欢迎阅…

Pytest 使用Pycharm右键直接运行测试脚本正常,控制台命令pytest运行收集不到用例无法正常测试 no tests ran in 0.01s

all.py脚本内容 import pytest if __name__ __main__:pytest.main([-sv, ./testcase,-n3])print(你好世界)说明 这个文件我命名为all.py,内容如上,右键使用pycharm运行all.py时,testcase目录下的3个pytest测试文件的用例均正常运行&#x…