页面加载过程(url->页面)

article/2025/10/16 14:13:48
当我们在浏览器输入URL地址开始,到web页面加载完毕,这个过程称作网页加载过程。具体如下:
  • 在浏览器地址栏输入URL
  • DNS域名解析
  • 发送HTTP请求
  • 服务器接收请求做出响应
  • 浏览器解析渲染页面

1.浏览器接受URL开启网络请求线程(涉及到:浏览器机制,线程与进程等)

2.开启网络线程到发出一个完整的http请求(涉及到:DNS解析,TCP/IP请求,5层网络协议等)

3.从服务器接收到请求到对应后台接受到请求(涉及到:负载均衡,安全拦截,后台内部处理等)

4.后台与前台的http交互(涉及到:http头,响应码,报文结构,cookie等)

5.缓存问题(涉及到:http强缓存与协商缓存等)

6.浏览器接受到http数据包后的解析流程(涉及到html词法分析,解析成DOM树,解析CSS生成CSSOM树,合并生成render渲染树。然后layout布局,painting渲染,复合图层合成,GPU绘制,等)

1.在浏览器地址栏输入URL

当我们在浏览器地址栏输入URL地址后,浏览器会开一个线程来对我们输入的URL进行解析处理。

2.DNS域名解析

我们在浏览器中输入的URL通常是一个域名,并不会直接去输入IP地址(纯粹因为域名比IP好记),但我们的计算机并不认识域名,它只知道IP,所以就需要这一步操作将域名解析成IP。

URL组成部分

protocol:协议头,比如http,https,ftp等;
host:主机域名或者IP地址;
port:端口号;
path:目录路径;
query:查询的参数;
hash:#后边的hash值,用来定位某一个位置。

解析过程

1.首先会查看浏览器DNS缓存,有的话直接使用浏览器缓存
2.没有的话就查询计算机本地DNS缓存(localhost)
3.还没有就询问递归式DNS服务器(就是网络提供商,一般这个服务器都会有自己的缓存)
4.如果依然没有缓存,那就需要通过 根域名服务器 和 TLD域名服务器 再到对应的 权威DNS服务器 找记录,并缓存到 递归式服务器,然后递归服务器 再将记录返回给本地。

注:DNS解析是非常耗时的,如果页面中需要解析的域名过多,是非常影响页面性能的。考虑使用dns与加载或减少DNS解析进行优化。

3.发送HTTP请求

获取到IP地址后,就可以发起HTTP请求了。HTTP请求的本质就是TCP/IP的请求构建。建立连接时需要3次握手进行验证,断开链接也同样需要4次挥手进行验证,保证传输的可靠性。

//建立TCP连接的过程就是三次握手过程
这里简述一下三次握手的过程:
1.客户端向服务器端发送连接请求的报文;
2.服务器端收到请求后,同意建立连接,向客户端发送确认报文;
3.客户端收到服务器端的确认报文后,再次向服务器端发出报文,确认已收到确认报文。
至此,浏览器与服务器已经建立了TCP连接,开始进行通信。

//断开TCP连接的过程就是四次挥手过程
这里简述一下四次挥手过程:
1.浏览器向服务器发送释放连接报文;
2.服务器收到释放报文后,发出确认报文,然后将服务器上未传送完的数据发送完;
3.服务器数据传输完成后,向浏览器发送释放连接请求;
4.浏览器收到报文后,发出确认,然后等待一段时间后,释放TCP连接。

负载均衡: 当一台服务器无法支持大量的用户访问时,将用户分摊到两个或多个服务器上的方法叫负载均衡。

  1. 一般,如果我们的平台配备了负载均衡的话,前一步DNS解析获得的IP地址应该是我们Nginx负载均衡服务器的IP地址。所以,我们的浏览器将我们的网页请求发送到了Nginx负载均衡服务器上。
  2. Nginx根据我们设定的分配算法和规则,选择一台后端的真实Web服务器,与之建立TCP连接、并转发我们浏览器发出去的网页请求。
  3. Web服务器收到请求,产生响应,并将网页发送给Nginx负载均衡服务器。
  4. Nginx负载均衡服务器将网页传递给filters链处理,之后发回给我们的浏览器。

五层网络协议:

1、应用层(DNS,HTTP):DNS解析成IP并发送http请求;

2、传输层(TCP,UDP):建立TCP连接(3次握手);

3、网络层(IP,ARP):IP寻址;

4、数据链路层(PPP):封装成帧;

5、物理层(利用物理介质传输比特流):物理传输(通过双绞线,电磁波等各种介质)

OSI七层框架:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

4.服务器接收请求做出响应

HTTP 请求到达服务器,服务器进行对应的处理。 最后要把数据传给浏览器,也就是返回网络响应。

请求成功后,服务器会返回相应的网页,浏览器接收到响应成功的报文后便开始下载网页,至此,网络通信结束。

5.浏览器解析渲染页面

浏览器在接收到HTML,CSS,JS文件之后,它是如何将页面渲染在屏幕上的?
在这里插入图片描述
(1)浏览器根据页面(HTML)内容,生成DOM Tree。根据CSS内容,生成CSS Rule Tree(规则树)。调用JS执行引擎执行JS代码。
(2)根据DOM Tree和CSS Rule Tree生成Render Tree(呈现树)
(3)根据Render Tree渲染网页

附:浏览器面试题


http://chatgpt.dhexx.cn/article/mvw4Gnv9.shtml

相关文章

登录校验总结1.0

登录校验 问题分析 基础的登录功能: 接受前端请求传递的用户名和密码,然后再根据用户名和密码查询用户信息,如果用户信息存在,则说明用户输入的用户名和密码正确。如果查询的用户不存在,则说明输入的用户名和密码错误…

java 令牌解析_Java JWT的令牌机制

JWT 简单介绍 全称 Json Web Token 致力于网络安全的一套Json开放标准 主要流程 将用户部分信息进行加密,生成一套令牌,存放于客户端 客户端发起请求时,带入此令牌,交由服务端识别令牌真伪 服务端校验完成,开放部分权限…

JWT令牌

1.普通令牌的问题 客户端申请到令牌,接下来客户端携带令牌去访问资源,到资源服务器将会校验令牌的合法性。 从第4步开始说明: 1、客户端携带令牌访问资源服务获取资源。 2、资源服务远程请求认证服务校验令牌的合法性 3、如果令牌合…

Openresty(十五)通过lua实现令牌校验

一 模块地址 (1)插件安装 "安装方式"1.opm安装 -->默认安装的位置opm get SkyLothar/lua-resty-jwt2.源码安装,进行copy -->不建议 参考博客 网关权限控制 (2)常用方法介绍 ① sign 功能&#xff1a…

JWT(JSON WEB TOKEN)

JSON WEB TOKEN简称JWT,是用于对应程序上的用户进行身份验证的标记。也就是说,使用JWTS的应用程序不再需要保存有关其用户的cookie和session数据。此特性便于可伸缩性,同时保证应用程序的安全。 格式 JWT就是一个字符串,经过加密…

JWT令牌技术

JWT令牌 全称:JOSN Web Token(https://jwt.io/) 定义了一种简介的、自包含的格式,用于在通信双方以JSON数据格式安全的传输信息。犹豫数字签名的存在,这些信息是可靠的。 通过base64编码 JWT的组成: (JWT令牌由三个…

2 Go语言JSON与XML解析与表单操作

2 Go语言JSON与XML解析与表单操作 1 数据交互的格式2 JSON方式2.1 JSON序列化2.2 JSON反序列化2.3 解析到interface 3 XML方式3.1 解析XML3.2 生成XML 4 字段校验5 文件上传2.1 前后端模拟上传2.2 go客户端模拟上传 3 防止重复提交 1 数据交互的格式 常见的数据交互格式有&…

C++中json解析开源库收集,支持json5

文章目录 zpl-c 库HJSONcJSONRapidJSON (推荐)DAW JSON Link v2JSON ,这库稳定,文档齐全。(推荐)json-c (c实现)json_dto (一个小的头文件助手)json11 ( C11 的小型 JSON 库 )json_spirit (开发中&#xff…

SpringBoot之JWT令牌

目录 介绍 生成和校验 登录下发令牌 介绍 JWT全称:JSON Web Token (官网:https://jwt.io/) 定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信…

七 微服务网关gateWay和Jwt令牌

之前写过一篇微服务网关Zuul,今天介绍gateWay,二者大同小异,但各有优势,大家可以都了解一下,拓展自己的知识面; 一 微服务网关 主要作用 整合各个微服务功能,形成一套系统在微服务网关中实现…

登录校验-会话技术/JWT令牌

登录校验 会话技术 会话: 用户打开浏览器,访问web资源的时候,会话建立。直到一方断开连接,会话结束,一次会话中包含多次响应 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来…

服务的校验Content-Type,只接收application/json格式的CSRF绕过方法

如何在JSON端点上利用CSRF漏洞 转载自:https://www.freebuf.com/articles/web/164234.html Alpha_h4ck (CSRF Flash HTTP 307)别说了,你已经“死”了! 如果你想通过第三方攻击者控制的服务器在JSON端点利用一个CS…

nginx 限流,以及nginx直接返回json格式数据

高并发系统有三把利器用来保护系统:缓存、降级和限流 今天我们这里说说限流。一般会在应用层配合redis做限流策略,这里我们聊聊nginx层限流。 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达…

JWT-JSON Web令牌的深入介绍

JWT-JSON Web令牌的深入介绍 从桌面应用程序到Web应用程序或移动应用程序,身份验证是几乎所有应用程序中最重要的部分之一。 本教程是JWT(JSON Web令牌)的深入介绍,可帮助您了解: 基于会话的身份验证与基于令牌的身份…

JSON Web Token原理深入理解

什么是JWT JWT全称Json Web Token,翻译为JSON格式的网络令牌,很多时候又简称为Token(JWT是Token的一种实现方式)。它要解决的问题,就是为多种终端设备,提供统一的、安全的令牌格式。因此,JWT只是一个令牌格式而已&…

【JWT】jwt令牌研究

一、JWT介绍 在介绍JWT之前先看一下传统校验令牌的方法,如下图: 问题: 传统授权方法的问题是用户每次请求资源服务,资源服务都需要携带令牌访问认证服务去校验令牌的合法性,并根据令牌获取用户的相关信息&#xff0c…

JWT令牌验证

JWT令牌验证 jwt的由来及解决的问题JWT的工作原理JWT组成重点:JWT实现验证:4.1 首先前后端跨域配置:4.2 jwt配置:4.3 web.xml配置:4.4 登录成功时生成jwt令牌前端NodeJs服务器配置拦截器,配置在http目录下4…

如何使用JSON Web令牌(JWT)保护您的文档

如何使用JSON Web令牌(JWT)保护您的文档 在本文中,我们讲解如何使用JSON网络令牌JWT来保护在线文档免受未经授权的访问,从而可以更安全的把在线文档编辑器开发集成进您自己的网络应用中去。 这里将集成开源的办公套件ONLYOFFICE …

day13 SpringBoot案例3 令牌技术、登录校验

登录校验的实现思路是怎样的? 项目中访问核心资源,通常都要进行登录校验,访问京东商城的订单,必须要先登录才能访问查询 实现思路: 可以在访问资源前进行访问的拦截,判断你当前会话是否有登录,如果没有登…

pythonjson数据解析失败_json解析失败是什么意思

因为代码的不美观等因素,我们会使用一些解析工具进行处理,有些人在解析时出现了报错。解析失败需要考虑多方面的因素,如格式、String类型、boolean类型等原因,在格式上分为格式错误和格式正确两种讨论。下面就json解析失败的原因为…