关于浏览器的周边知识 01(副本)

news2024/11/25 23:40:23

先说两个概念,互联网 internet 泛指具有互通的计算机网络;因特网 Internet 是基于TCP/IP 协议族的最大的计算机网络;万维网 web (word wide web) 是基于互联网,由超链接和统一资源标识符(连接)的文件和其他资源的全球集合

万维网由三个部分构成 :

  1. 统一资源标识符 URI (由一个字符串来表示抽象的或者物理的资源)
  2. 超文本标记语言 html ( 超文本:含有指向其他资源链接的文本;标记语言:通过一些标签包裹的元素,这些标记会被浏览器识别为超链接或者文本段等)
  3. 超文本传输协议 http (传输 html 的一个协议)

URL 和 URI 的区别:

  1. URL 统一资源 定位
  2. URI 统一资源 标识
  • 这样说吧, URI 是一个抽象的地址,URL 是一个具体的地址
    抽象的地址:安徽省亳州市
    具体的地址:安徽省亳州市利辛县汝集镇 223号
  • 所以说 URL 是 URI 的子集
  • 再举个例子:
    http://www.csdn.net 是一个服务器地址,但是没有具体到文件是什么类型 (URI)
    http://www.csdn.net/image/logo.gif 这就是一个很具体的地址 (URL)

一、 浏览器 Chrome


        浏览器可以分为两部分:渲染引擎js引擎 , 渲染引擎 决定了浏览器该如何显示网页内容及页面的格式信息;js 引擎 用来解释网页语法,并渲染到网页上。 由于 js引擎 越来越独立,浏览器内核偏向指向于 渲染引擎

  1. 渲染引擎: 负责HTML解析、布局、渲染等相关的工作
  2. JS引擎: 是一个专门处理JavaScript脚本的虚拟机,一般会附带在网页浏览器之中。
  • 十年前,你说浏览器就是IE , 有人会出来反对
    现在,你说浏览器是Chrome ,最多有人纠正你

  • 那 chrome 浏览器 为什么能占据 60% 的市场呢?
    基于多进程模型V8引擎的高效快速

关于V8引擎的原理 可以看看我 前端 js 之 浏览器工作原理 和 v8引擎 01 这篇文章。

二、 进程


进程是一个程序的运行实例,当我们启动一个程序时,那么操作系统会创建一块内存给代码和运行时的数据使用,并且创建一个线程来处理任务。这个环境就是叫做进程

线程:它是进程的 一个执行任务 或者可以叫做控制单元,负责当前进程中程序的执行。一个进程至少有一个线程,一个进程也可以运行多个线程。

  1. 多个线程之间可以进行数据共享,
  2. 进程关闭后内存会正确回收,
  3. 但是如果一个线程发生崩溃,整个进程就会崩溃,

不同进程之间的内容相互隔离,进程通信需要依靠 IPC ( 进程间通讯机制 )


在这里插入图片描述

在 chrome 浏览器诞生之前,大多数浏览器都是单进程

  1. 单进程的所有功能模块都在同一个进程中运行的,如果有一个产生问题,整个进程都会跟着崩溃,必须对浏览器进行重启;
  2. 因为页面所有的功能都在一个进程中,当一个页面卡住时,所有页面都会卡住,所以卡也是一个问题;
  3. 因为所有页面都在一个进程中,单个页面的数据因为代码编写问题而出现内存泄漏,在关闭页面时,泄露的内存并不会进行回收会导致浏览器会越用越卡;
  4. 插件和渲染线程拥有很高的权限。插件和渲染线程中包括各种脚本代码,而这些脚本代码通常是由第三方编写的,如果有恶意插件或者网站可以通过权限来读取本地数据

所以 chrome 浏览器采用 多进程架构

  1. 每个页面有单独渲染进程和插件进程
  2. 每个页面的渲染进程和插件进程都放进沙箱内,让他们不能获取系统权限
  3. 权限问题统一交给浏览器的主线程来操作
  4. 不同进程之间通过 IPC 来传输数据

请添加图片描述


一个浏览器的进程

请添加图片描述

  • 浏览器进程: 负责页面的展示,用户的交互,管理子进程还有提供存储功能
  • 网络进程 : 下载网络资源
  • GPU进程:绘制网页和UI界面
  • 渲染引擎:js引擎 和 排版引擎
  • 插件引擎: 扶着加载和运行页面上的插件

三、协议

协议:保证了通信双方都可以识别的一种约定的数据格式

通过计算机网络可以使多台计算机实现连接,但是位于同一个网络中的计算机 在进行连接和通信时 必须要遵守一定的 规则,就像比在道路中行驶的汽车要遵守交通规则。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交互。

协议类型

  1. 互联网协议:基于IP协议的一个体系架构,想要进行数据的传输,每个主机都要有特定的 ip 地址
  2. ip协议,通过dns 进行域名解析,找到对应的网址,并进行缓存
  3. http 超文本传输协议:规定传输包的数据格式
  4. 通过tcp/ip 发送到网络中
  5. udp ,通过端口号访问指定程序,但是不能保证对方确定接受到
  6. tcp(传输控制协议) 解决了udp 传输不可靠问题,增加了重传机制,tcp协议是面对连接的,传输前会和目标设备进行连接,传输完成后断开

http 请求流程:

我们通过URL 请求服务器,服务器会返回给我们网页数据文件,那之间的流程是怎样的呢?
在这里插入图片描述

当我们发送请求时,浏览器会找有没有上次请求缓存的文件,如果有且文件没有过期,就会直接使用不再请求,减少了服务器的压力,而且可以快速加载。

如果没有,通过http 做应用层协议( http 协议规定传输包的数据格式),通过 TCP/IP 把他们发送到发送到网络中,发送之前会通过 DNS 通过域名查找到对应的服务器地址,查找到以后对他们进行缓存,如果输入的域名没有加端口号会默认加 80;完成以后为 TCP 建立连接,三次握手四次挥手,就可以正式发送我们的 HTTP ,接下来就是服务端接收到请求并返回数据。

在这里插入图片描述



四、浏览器渲染


渲染流程:

在这里插入图片描述

我们都知道网页的三件套: html css javascript

  1. html 超文本标记语言,由各种标签组成,标签可以代表元素类型,html 是网页的骨架
  2. css 层叠样式表,可以赋予网页各种好看的样式,排版
  3. js 给网页赋予各种逻辑,让网页变得具有交互性
  • 因为网页不能识别html , 需要通过 html 解析器转化为dom树,供后续的步骤使用 (网络进程加载多少数据,解析器就会解析多少数据,网络进程会实时把获取的数据传递给渲染进程,由解析器解析 )
  • 看我正篇吧,比较详细

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

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

相关文章

GE WES13-3控制主板模块

GE WES13-3 控制主板模块通常是工业自动化和控制系统中的关键组件,用于控制和监测各种设备和过程。以下是可能包括在该模块中的一些产品功能: 控制处理器:WES13-3 控制主板模块通常配备控制处理器,用于执行控制逻辑和算法&#xf…

如何打造可视化警务巡防通信解决方案

近年来,科学技术飞速发展,给予了犯罪分子可乘之机。当面临专业化的犯罪分子、高科技的犯罪手段,传统警务模式似乎不能满足警方打击犯罪的需要,因此当今公安工作迫切需要构建智能化、系统化、信息化的警务通信管理模式。 警务人员…

Hi Mainnet 2023,Moonbeam来啦!

Messari一年一度Mainnet大会今年回归!9月20日-23日,来自加密业界专家们满满三天的演讲干货、社交机会、专题工作坊将给予参会者独一无二的体验。 在参与了9月初韩国区块链周、月中Token2049之后,本周Moonbeam Network也将马不停蹄地参加此次…

文字转语音真人发声怎么弄?3款亲测好用的智能配音软件

现在AI人工智能语音技术已经比较发达了,可能很多朋友会发现影视解说经常遇到耳熟的声音,其实就是AI配音效果,才会这么相似。 今天就给大家分享3个好用的AI配音工具,希望对你有所帮助! 一、:悦音配音 悦音…

Android 中手指从按钮 A 平移到 B,会发生什么?为什么?

作者:TechMerger 前言 Touch 相关问题是 Android 面试中常问的点,不一定要求大家都从 InputFlinger 底层开始回答,但起码需要了解 Touch 抵达 App 之后的完整处理。而即便是这段偏上层的链路,也不要局限在老生常谈的过程复述&…

【Linux旅行记】探究操作系统是如何进行管理的!

文章目录 什么是操作系统?操作系统概念操作系统的目的底层硬件驱动程序操作系统理解系统调用接口 操作系统是如何进行管理的?什么是管理?操作系统是如何管理硬件信息呢? 🍀小结🍀 🎉博客主页&am…

权威认可!麒麟信安实力入选中国信通院 2023《高质量数字化转型产品及服务全景图》

日前,中国信息通信研究院(简称“中国信通院”)发布2023《高质量数字化转型产品及服务全景图(8月份新增入图产品)》,麒麟信安实力入选,成为云服务领域的标杆企业。 麒麟信安入选2023 《高质量数字…

激光焊如何更准更稳?维视智造激光焊视觉解决方案助力精密制造

激光焊接是一种高能密度、非接触的焊接技术,它利用激光束对工件进行加热和熔化,然后使其在熔池的情况下形成连接。与传统的焊接方法相比,激光焊具有高密度、熔深小、变形小、焊缝质量高、适用性广、自动化程度高等特点,可以实现焊…

【C语言】自定义类型:结构体【结构体内存具详细】,枚举,联合

目录 一、结构体 1.结构的声明 2.特殊的声明 3.结构的自引用 4.结构体变量的定义和初始化 5.结构体内存对齐(重点来了) 6.为什么会存在内存对齐 7.修改默认对齐数 8.结构体传参 二、位段 1.什么是位段 2.位段的内存分配 3.位段的跨平台问题…

各种存储性能瓶颈如何分析与优化?

【摘要】本文结合实践剖析存储系统的架构及运行原理,深入分析各种存储性能瓶颈场景,并提出相应的性能优化手段,希望对同行有一定的借鉴和参考价值。 【作者】陈萍春,现就职于保险行业,拥有多年的系统、存储以及数据备…

vue3+TS前端JS实现 搜索关键词变红

起初在网上搜索获得的处理方式大都是类似这种: 但是实际使用中发现,对于汉字和数字是没有问题的,但是如果有字母就会出现问题。 1.只有汉字和数字的时候:匹配正常。 2.当有字母的时候:异常替换。 原因:第二…

百度SEO优化技巧(选择、网站结构、内容优化、外链建设、数据分析)

百度关键词SEO优化介绍 SEO是搜索引擎优化的缩写,是指通过优化网站结构、内容和外部链接等方式,提高网站在搜索引擎中的排名,从而获取更多的访问量和流量。百度是中国最大的搜索引擎之一,对于企业来说,优化百度关键词…

千呼万唤openGauss资源池化系列培训来了

应openGauss广大用户要求,社区于近期推出openGauss资源池化培训系列。 关于资源池化 资源池化是openGauss 5.0.0 推出的重点特性,是openGauss基于内存池化和共享存储实现的数据库集群。数据在集群的计算节点内存、共享存储中实现共享。应用可以任意节点…

嵌入式学习攻略

嵌入式软件编程的基础 主要是学习编程语言、开发环境和形成自己的编程逻辑,为嵌入式软件开发打下良好的基础,编程语言建议为C和C语言。书籍中的例子都是比较经典的程序实例,尽量去搞懂,不要觉得太长或者太难了而放弃,…

[正确重装docker] Win10 重装 Docker 提示 Exising installation is up to date 的正确姿势

Win10 重装 Docker 报错 Exising installation is up to date 的一种情况是原来的 docker 没有卸载干净,或者说,没有正确卸载。 巧了,我就是直接删除了,因为一些原因重装了好几次,血泪史留给各位嘲笑。 一条正确的卸…

编程(48)----------网页打开的过程

一个网页的打开大致分为以下几步: 1.DNS查询 在进行网络访问过程中, 实际上所访问的是IP地址. 但输入的却仅仅是域名. 因为IP地址过于复杂不利于记忆. 因此, 需要将IP转换成更具有辨识度的域名. 通过输入域名, 以DNS进行转换为IP, 再发起请求. DNS在得到域名后会进行查询, …

P7075 [CSP-S2020] 儒略日(内附封面)

[CSP-S2020] 儒略日 题目描述 为了简便计算,天文学家们使用儒略日(Julian day)来表达时间。所谓儒略日,其定义为从公元前 4713 年 1 月 1 日正午 12 点到此后某一时刻间所经过的天数,不满一天者用小数表达。若利用这…

得帆信息副总裁——陈明:低代码企业内部推广场景建议

在之前的文章中有介绍过#企业内部如何做低代码的运营推广(☜点击回顾精彩),感兴趣的可以结合之前的文章进行了解。 结合本人这几年的低代码落地推广经验,不论是由得帆主导的低代码平台运营推广,还是由客户自身主导进行…

广通优云完成2亿元C轮融资,加速平台级运维产品的技术创新

广通优云于近期完成2亿元C轮融资,松禾资本领投,朗玛峰创投、奇安投资、舜宇投资、天雅资本等机构跟投,皓石资本担任本轮独家财务顾问。资金将主要应用于公司产品创新研发、团队人才建设及市场生态开拓等方面。 在当前资本市场遇冷的背景下&a…

RSS阅读器

focus:免费、无广告、已停止维护[2020]、开源 也许后面我会维护更新。 Archive: https://www.ihewro.com/archives/948/ 开源代码:https://github.com/ihewro/Focus 🍰借助RSShub开源项目,自带丰富订阅市场,尽可能简…