【b站vue教程】1 宏观视角下的浏览器——前端大厂面试必刷:前后端必学的网络安全浏览器工作原理:从入门到精通全套【附带所有源码】

课程地址:【前端大厂面试必刷:前后端必学的网络安全浏览器工作原理:从入门到精通全套【附带所有源码】】 https://www.bilibili.com/video/BV1UL41157hP/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155

目录

1、宏观视角下的浏览器

1.1 浏览器简介

1.2 进程和线程起步

1.2.1 进程和线程的概念

1.2.2 浏览器进程

1.3 计算机网络的七层模型

1.3.1 物理层

1.3.2 数据链路层

1.3.3 网络层

1.3.4 传输层

1 UDP协议

2 TCP协议

3 端口

1.3.5 会话层

1.3.6 表示层

1.3.7 应用层

1.3.8 四层模型

1.4 TCP协议如何保证页面文件能被完整送达浏览器

1.5 HTTP请求流程

1.5.1 浏览器发送HTTP请求

1 构造请求行

2 查找缓存

3 准备IP地址

4 等待TCP队列

5 建立TCP连接

6 发送HTTP请求

1.5.2 服务器处理HTTP请求

1 返回请求内容

2 断开连接

1.6 输入url地址到浏览器显示页面发生了什么(进程角度)

1.6.1 浏览器主进程

1.6.2 网络进程

1.6.3 渲染进程


1、宏观视角下的浏览器

首先装一个抓包工具wireshark(联想商店可以安装)。

抓包工具:可以看到计算机网络的7层模型。

1.1 浏览器简介

本课程以Chrome浏览器进行研究和分析。

选择Chrome浏览器的原因,是Chrome,微软的edge以及国内的大部分浏览器都是基于Chrominum二次开发的。Chrome浏览器是Google官方发行的版本,是目前全球使用率最高的浏览器。Chrome最具代表性。

为什么要学习浏览器? 随着云计算的普及和HTML5技术的快速发展,越来越多的应用从c/s架构转化b/s架构。这种改变让浏览器的重要性与日俱增。

c/s架构,clinet --server,(王者荣耀,英雄联盟)

b/s架构,browser --server,(语雀)

为什么要学习浏览器工作原理?

1、准确地评估Web项目的可行性

2、从更高的维度审视页面

3、在快速迭代的技术中把握本质

1.2 进程和线程起步

ctrl+alt+delete,任务管理器。

1.2.1 进程和线程的概念

进程:在内存中正在运行的应用程序。

1、在内存中独占一个内存空间

2、进程和进程之间的隔离的。

王者荣耀在手机上运行时就是一个进程,如果此进程崩溃后,他对微信进程是没有影响的。

以下都是一个进程。

线程:进程的最小执行单位。

1、一个进程是由多个线程组成。

2、每个线程之间是相互隔离的(从内存角度上讲)。

1.2.2 浏览器进程

一个页面启动时到底启动了几个进程。

至少启动了4个进程:

1、浏览器主进程。负责界面显示、用户交互、子进程管理,同时提供存储(本地缓存)等功能。

2、渲染进程。负责渲染html页面。

3、网络进程。负责网络资源下载。

4、GPU进程。GPU图形处理器,使用初衷是为了实现3D CSS的效果。随后网页、Chrome的ui界面都选择采用GPU来绘制,这使得GPU成为浏览器的普遍需求。因此,Chrome在架构中,将GPU进程作为单独的进程列出来。

5、插件进程(如果Chrome安装插件的话)

浏览器任务管理器的打开方式

1.3 计算机网络的七层模型

1.3.1 物理层

1、物理层。

① 使用一定的物理介质(光纤、网线、wifi)进行计算机的连接。

② 数据是以0和1(电信号形式)传输的。

1.3.2 数据链路层

2、数据链路层。

① MAC地址(物理地址),在数据链路层。包括本机的MAC和目标机的MAC地址。

② 对物理层的数据进行封装,封装成byte的形式。

1.3.3 网络层

3、网络层。

① IP协议,解决数据传输的问题。主机A将数据传输给主机B,A需要知道B的IP地址。IP地址就在网络层。

1.3.4 传输层

4、传输层。

主机A将数据传递给主机B,涉及以下2个协议。

UDP(用户数据包协议)/TCP(传输控制协议)。

端口。

1 UDP协议

UDP的特点:只负责发送,不负责接收。例如,DNS解析使用了UDP协议(下面有案例)。此外还有微信电话,流媒体。

这里打开wireshark不显示WLAN(或以太网),安装npcap即可解决。wireshark捕获时找不到任何接口,无法开始捕获_win11 wireshark找不到网络接口-CSDN博客

命令行窗口

回到wireshark

双击百度主机地址

用抓包工具可以验证,这里做的是DNS解析,使用的是UDP协议。

2 TCP协议

TCP协议的特点:

1、重传机制

2、排序机制——根据数据包的编号对数据进行排序,重组数据包,保证数据包的完整性和准确性

3、三次握手(主机A向主机B发送消息,B回复消息,A确认收到回复消息)

3 端口

IP协议解决的是数据传输的问题,但是他不能保证数据被发送到目的主机的应用上。有TCP协议和端口的概念,就可以保证数据被准确派发到目的应用上。

在传输层,UDP协议和TCP协议都有对应的端口。

1.3.5 会话层

5、会话层

① 断点续传,没有协议

计算机网络里没有协议的层,都不重要。

1.3.6 表示层

6、表示层

① 翻译,解决不同系统之间数据传输的问题。

1.3.7 应用层

7、应用层

① HTTP协议,主要是客户端请求数据的格式,和服务端响应数据的格式。

示例

发送一个简单的http请求

http://47.108.197.28:4000/api/article已失效。

https://ku.qingnian8.com/dataApi/qingKu/getList.php用这个

http由请求和响应两部分组成。

请求部分

响应部分

以上,重点牢记IP协议、UDP协议、TCP协议和HTTP协议,以及发生在哪一层。

1.3.8 四层模型

1 物理层:物理层、数据链路层

2 网络层:网络层

3 传输层:传输层

4 应用层:会话层,表示层,应用层

1.4 TCP协议如何保证页面文件能被完整送达浏览器

1.5 HTTP请求流程

HTTP请求,包含请求和响应两部分。

1.5.1 浏览器发送HTTP请求

浏览器发生http请求的流程,共分为以下6步。

1 构造请求行

GET /gchatpic_new/5E793AD68916BE8EFC3A1F0059FAB4F13A92A287E9C6799A7CF962DCE228CAAA69AC2B04CFA3019107C613D618AFC4B49A5BD035F51E3C5B5F0A44F05811380BC3EF00FAEF9E06A276A7D3820A9ED43F7740559703977E79/0?vuin=2908030901&is_origin=140720308486145&term=1&srvver=27411&rf=naio HTTP/1.1 

2 查找缓存

浏览器缓存中有相关文件,则直接使用本地文件。如果没有,则发送http请求。

好处:可以缓解服务器压力。

总结:有缓存则取缓存,无缓存则发送http请求。

3 准备IP地址

准备IP地址(网络层)和端口号(传输层)。

HTTP协议和TCP协议的关系:有了TCP协议才会有HTTP协议。

4 等待TCP队列

IP地址和端口号准备好后,不会马上建立TCP连接。

因为Chrome机制:一个域名最多只能建立6个TCP连接。如果请求少于6个,可以立即建立连接。如果多于6个,需要等待。

5 建立TCP连接

6 发送HTTP请求

建立TCP连接后才能发送HTTP请求。

以上就是浏览器发送http请求的全部流程,共6步。

1.5.2 服务器处理HTTP请求

主要分为2步。

1 返回请求内容
2 断开连接

1.6 输入url地址到浏览器显示页面发生了什么(进程角度)

从输入url地址,到浏览器显示页面,主要是调用了3个进程:浏览器主进程、网络进程、渲染进程。

注意:① 这里的url请求,其实就是在搜索框里输入“url”内容,不要误解。

② 浏览器主进程只负责显示页面和用户交互,他不能处理网络请求。

③ 提交文档消息:浏览器主进程中将网络进程接收到的html数据提交给渲染进程。

④ 浏览器主进程起到派发任务的角色。

总结:

① 浏览器主进程输入url请求(浏览器主进程负责用户交互);

② 浏览器主进程将url请求派发给网络进程(浏览器主进程只负责显示页面和用户交互,不能处理网络请求)

③ 网络进程发送url请求,获取响应头数据,解析响应头数据,之后将数据转发给浏览器主进程

④ 浏览器主进程接收到网络进程的响应数据后,发送“提交文档”消息给渲染进程。

⑤ 渲染进程中接收到浏览器主进程的提交信息后,准备接收html数据。如何接收html数据?直接与网络进程建立数据管道进行接收

⑥ 文档数据传输完毕,渲染进程会返回“确认提交x消息”到浏览器主进程。

⑦ 浏览器主进程中,收到渲染进程“确认提交x消息”后,开始移除旧的文档,更新浏览器主进程的页面状态

以上就是从3个进程的角度讨论从输入url地址到浏览器显示页面间发生了什么。

(如果加上计算机网络的7层模型进行描述,步骤会更加复杂。)

1.6.1 浏览器主进程

1.6.2 网络进程

1.6.3 渲染进程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/6417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3中使用crypto-js库进行加密/解密

使用crypto-js库进行加密/解密 安装 npm install crypto-js 基本使用 <template><div>使用crypto-js库进行加密/解密</div> </template><script setup> import CryptoJS from crypto-js; import { onMounted } from vue;// 加密函数 const encr…

记某APP登录逆向解密过程

最近在学习APP逆向相关的知识&#xff0c;刚好拿到了一个APP目标&#xff0c;该APP登录过程存在加密&#xff0c;所以记录下逆向破解的过程。流程 先介绍下拿到该APP后续所做的一些工作流程 选择相应版本安装到测试机当中进行抓包&#xff0c;查看数据包分析登录请求包&#x…

中国目前比较有影响力的人物颜廷利:不能升命, 活着何用?

不能‘升命’&#xff0c; 活着何用&#xff1f;…&#xff08;升命学说&#xff09; 21世纪东方哲学家思想家、科学家、当代中国教育界知名教授、专业周易起名改名字、易经姓名学专家、目前比较有影响力的人物、现代国学大师泰斗杰出代表颜廷利教授在《升命学说》‘净化论’里…

Java 类与对象

目录 1 类是什么 1.1 面向对象 1.2 面向对象与面向过程 2 类定义和使用 2.1 类的定义格式 2.2 练习定义一个狗类 3 类的实例化 4 this引用 5 对象的构造与初始化 5.1 构造方法与初始化 5.2 默认初始化 5.3 就地初始化 1 类是什么 关于类是什么&#xff0c;我们需要对…

开源版本管理系统的搭建一:SVN服务端安装

作者&#xff1a;私语茶馆 1.Windows搭建SVN版本管理系统 点评&#xff1a;SVN本身非常简洁易用&#xff0c;VisualSVN文档支撑非常好&#xff0c;客户端TortoiseSVN非常专业。5星好评。 1.1.SVN概要和组成 背景介绍 Svn是一个开源版本管理系统&#xff0c;由CollabNet公司…

一、Mysql索引的底层数据结构与算法

Mysql索引的底层数据结构与算法 前言一、索引数据结构为什么 MySQL 的索引要使用 B 树而不是其他树形结构?比如 B 树?为什么InnoDB存储引擎选择使用Btree索引结构&#xff1f; 二、索引分类思考&#xff1a;以下SQL语句&#xff0c;那个执行效率高&#xff1f;为什么&#xf…

SQL如何利用Bitmap思想优化array_contains()函数

目录 0 问题描述 1 位图思想 2 案例实战 3 小结 0 问题描述 在工作中&#xff0c;我们往往使用array_contains()函数来进行存在性问题分析&#xff0c;如判断某个数是否在某个数组中&#xff0c;但是当表数据量过多&#xff0c;存在大量array_contains()函数时&#xff0c;…

【软件测试】测试用例设计方法

1. 等价类划分法1.1. 等价类划分法的定义1.2. 有效等价类和无效等价类1.3. 等价类划分法实例分析 2. 边界值分析法2.1. 边界值分析法的定义2.2. 边界点2.3. 边界值法实例分析 3. 判定表法3.1. 如何用判定表法设计测试用例3.2. 判定表法实例分析 4. 正交表法4.1. 什么是正交表4.…

批量美化图片,轻松实现多张图片描边,让图片瞬间焕发新生!

图片已成为我们日常生活中不可或缺的一部分。无论是社交媒体上的个人分享&#xff0c;还是商业宣传中的产品展示&#xff0c;高质量、精美的图片都扮演着至关重要的角色。然而&#xff0c;对于许多人来说&#xff0c;图片处理仍然是一个令人头疼的问题。现在&#xff0c;我们为…

商超物联网方案-Hotspot Service和客流分析方案概述

商超物联网方案-Hotspot Service和客流分析方案概述 场景概述 大型商场、大型综合体在相互竞争及线上消费的影响下&#xff0c;利润增长缓慢&#xff0c;迫切需要通过提供个性化服务提升顾客购物体验&#xff0c;促进利润增长。 向不同顾客推送其感兴趣的广告&#xff0c;不仅…

c++游戏小技巧16:实例1(地牢生成算法)

1.前言 (头图) &#xff08;其实最开始是想写恶魔轮盘的&#xff0c;但没想到它竟然更新了&#xff09; &#xff08;等我有时间在更&#xff0c;最近很忙&#xff0c;玩第五玩的&#xff09; 想法来源&#xff1a;房间和迷宫&#xff1a;一个地牢生成算法https://indienova…

机器学习(五)之损失函数

上面几节讲了监督学习和非监督学习的一些算法&#xff08;目前还不完整&#xff0c;会慢慢补充哒) 如果文章内容有错误&#xff0c;欢迎小伙伴在评论区指出! 前言&#xff1a; 损失函数在机器学习中非常重要&#xff0c;直接关乎模型的好坏&#xff08;so?学好它&#xff09;…

STM32G474 CMAKE VSCODE 开发环境搭建

本篇博文尝试搭建 stm32g474 的开发环境 一. 工具安装 1. 关于 MinGW、OpenOCD、Zadig 这些工具的下载和安装见 JlinkOpenOCDSTM32 Vscode 下载和调试环境搭建_vscode openocd stm32 jlink-CSDN博客 2. 导出一个 STM32 的 CMAKE 工程&#xff0c;这里略过。 3. 安装 ninja …

matlab期末知识

1.期末考什么&#xff1f; 1.1 matlab操作界面 &#xff08;1&#xff09;matlab主界面 &#xff08;2&#xff09;命令行窗口 &#xff08;3&#xff09;当前文件夹窗口 &#xff08;4&#xff09;工作区窗口 &#xff08;5&#xff09;命令历史记录窗口 1.2 matlab搜索…

Elasticsearch:对 Java 对象的 ES|QL 查询

作者&#xff1a;Laura Trotta ES|QL 是 Elasticsearch 引入的一种新的查询语言&#xff0c;它将简化的语法与管道操作符结合起来&#xff0c;使用户能够直观地推断和操作数据。官方 Java 客户端的新版本 8.13.0 引入了对 ES|QL 查询的支持&#xff0c;提供了一个新的 API&…

Redis 实战2

系列文章目录 本文将从字典的实现、哈希算法、解决键冲突、rehash、渐进式rehash几方面来阐述 Redis 实战Ⅱ 系列文章目录字典的实现哈希算法解决键冲突rehash渐进式 rehash渐进式 rehash 执行期间的哈希表操作 字典 API总结 字典的实现 Redis 的字典使用哈希表作为底层实现&…

【大数据】学习笔记

文章目录 [toc]NAT配置IP配置SecureCRT配置PropertiesTerminal Java安装环境变量配置 Hadoop安装修改配置文件hadoop-env.shyarn-env.shslavescore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml 环境变量配置 IP与主机名映射关系配置hostname配置映射关系配置 关闭防火墙…

分层图像金字塔变压器

文章来源&#xff1a;hierarchical-image-pyramid-transformers 2024 年 2 月 5 日 本文介绍了分层图像金字塔变换器 (HIPT)&#xff0c;这是一种新颖的视觉变换器 (ViT) 架构&#xff0c;设计用于分析计算病理学中的十亿像素全幻灯片图像 (WSI)。 HIPT 利用 WSI 固有的层次结…

【matlab基础知识】(三)二维曲线绘制plot

x[-pi:0.0001:pi]; 选择较小步距 ysin(tan(x))-tan(sin(x));plot(x,y) 条件和函数值做一个点乘 x[-2:0.02:2];y1.1*sign(x).*(abs(x)>1.1)x.*(abs(x)<1.1);plot(x,y) 颜色&#xff0c;线形&#xff0c;曲线上的标志 由于0.01cosx波动太小&#xff0c;所以plotyy绘制多…

正在载入qrc文件 指定的qrc文件无法找到。您想更新这个文件的位置么?

打开Qt的ui文件&#xff0c;弹出提示框 如果需要用到qrc文件&#xff0c;选择Yes&#xff0c;再选择qrc文件所在的位置&#xff1b;如果不需要qrc文件&#xff0c;可以选择No&#xff0c;然后用普通文本编辑器打开&#xff0c;将“ <resources> <include location&q…