一、前言
浏览器工作原理的实质就是实现http协议的通讯,具体过程如下:(HTTP通信的流程,大体分为三个阶段)
- 连接,服务器通过一个ServerSocket类对象对某端口进行监听,监听之后进行连接,打开一个socket虚拟文件。
- 请求,创建与监理socket连接相关的流对象后浏览器获取请求,为get请求,则从请求信息中获取所访问的html文件名,向服务器发送请求。
- 响应,服务器收到请求后搜索相关的目录文件,若不存在则返回错误的信息;若存在则读取html文件,进行加http头等处理响应给浏览器,浏览器解析html文件,若其中还包含图片,视频等资源,则浏览器再次访问web服务器,获取图片视频等,并对其进行组装显示给用户。
二、浏览器简介
浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件。
浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件。
浏览器的主要功能就是向服务器发出请求,在浏览器窗口中展示您选择的网络资源。这里所说的资源一般是指 HTML 文档,也可以是 PDF、 图片或其他的类型。 资源的位置由用户使用URI(统一资源标符)指定。
浏览器解释并显示 HTML 文件的方式是在 HTML 和 CSS 规范中指定的。这些规范由网络标准化组织 W3C(万维网联盟)进行维护。
目前使用的主流浏览器有五个:Internet Explorer、 Firefox、 Safari、 Chrome 和 Opera。
浏览器按照引擎分类:
(1)Trident引擎:Internet Explorer
(2)Webkit引擎:Chrome(28版本后基于blink,blink是webkit的一个分支)和Safari
(3)Gecko引擎:Firefox
(4)Presto引擎:早期Opera采用,后用webkit引擎。
三、浏览器的主要构成
浏览器的主要组件包括:
-
用户界面: 浏览器的用户界面有很多彼此相同的元素,其中包括用来输入 URI 的地址栏、前进和后退按钮、书签菜单设置选项、用于刷新和停止加载当前文档的刷新和停止按钮、用于返回主页的主页按钮。
-
浏览器引擎:在用户界面和呈现引擎之间传送指令,用来查询及操作渲染引擎的接口。
-
渲染引擎:在浏览器中用来显示请求的内容,例如,如果请求内容为html,它负责解析html及css,并将解析后的结果显示出来。渲染引擎一开始会从网络层获取请求文档的内容,通常以8K分块的方式完成。渲染引擎工作原理如下:
-
网络:用来完成网络调用,例如http请求,它具有平台无关的接口,可以在不同平台上工作。
-
UI后端(用户界面后端):用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口。
-
JS解释器:用来解释执行JS代码。
-
数据存储:属于持久层,浏览器需要在硬盘中保存类似cookie的各种数据,HTML5定义了web database技术,这是一种轻量级完整的客户端存储技术。
图1:浏览器主要组件
注意: 不同于大部分浏览器,Chrome为每个Tab分配了各自的渲染引擎实例,每个Tab就是一个独立的进程。
四、浏览器内核
浏览器内核分成两部分:渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎,负责请求网络页面资源加以解析排版并呈现给用户。
1、渲染引擎使用:
(1)firefox使用gecko引擎 ;
(2)IE使用Trident引擎,2015年微软推出自己新的浏览器,原名叫斯巴达,后改名edge, 使用edge引擎;
(3)opera最早使用Presto引擎,后来弃用;
(4)chrome\safari\opera使用webkit引擎,13年chrome和opera开始使用Blink引擎;
(5)UC使用U3引擎;
(6)QQ浏览器和微信内核使用X5引擎,16年开始使用Blink引擎。
2、js引擎
(1)老版本IE使用Jscript引擎,IE9之后使用Chakra引擎,edge浏览器仍然使用Chakra引擎;
(2)firefox使用monkey系列引擎;
(3)safari使用的SquirrelFish系列引擎;
(4)Opera使用Carakan引擎;
(5)chrome使用V8引擎。nodeJs其实就是封装了V8引擎。