在对浏览器运行原理的认知过程中我们首先需要精细的了解一些“概念”
这些“概念”也许理解起来很容易,但没有精细理解的时候很容易忽视
而在没有精细了解这些“概念”的前提下去初步认知浏览器的运行原理,很容易有一种雾里看花的感觉
什么是浏览器?
网页浏览器(英语:web browser),常被简称为浏览器,是一种用于检索并展示万维网信息资源的应用程序。这些信息资源可为网页、图片、影音或其他内容,它们由统一资源标志符标志。信息资源中的超链接可使用户方便地浏览相关信息。
网页浏览器虽然主要用于使用万维网,但也可用于获取专用网络中网页服务器之信息或文件系统内之文件。 ——《百度百科》
在外行看来浏览器是查询资料,搜索网站的一款好用的软件
而在内行看来浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件
浏览器的主要组件
(1)可见的用户界面:包括地址栏、 前进/后退按钮、 书签菜单等。 除了浏览器主窗口显示的请求的页面外,其他显示的各个部分都属于用户界面
(2)浏览器引擎 - 在用户界面和呈现引擎之间传送指令
(3)渲染引擎 - 负责显示请求的内容。 如果请求的内容是 HTML,它就负责解析 HTML 和 CSS 内容,并将解析后的内容显示在屏幕上
(4)网络 - 用于网络调用,如 HTTP 请求。 其接口与平台无关,为所有平台提供底层实现
(5)用户界面后端 - 用于绘制基本的窗口小部件,比如组合框和窗口。 其公开了与平台无关的通用接口,而在底层使用操作系统的用户界面方法
(6)JavaScript 解释器 - 用于解析和执行 JavaScript 代码
(7)数据存储 - 这是持久层。 浏览器需要在硬盘上保存各种数据,例如 Cookie。 新的 HTML 规范(HTML5) 定义了“网络数据库” ,这是一个完整的浏览器内数据库
浏览器的主要功能
浏览器的主要功能是将用户选择的web资源呈现出来,它需要从服务器请求资源,并将其显示在浏览器窗口中
而这些资源的格式通常是HTML,也包括PDF、image及其他浏览器可以识别并解释出来的格式(js有一种加密的说法,加密后直接放进js文件,人读不懂,但是浏览器读的懂,并不需要解密算法)
浏览器的处理流程
1、输入url
2、查看浏览器缓存,看是否有缓存,如果有缓存,继续查看缓存是否过期,如果没有过期,直接返回缓存页面,如果没有缓存或者缓存过期,发送一个请求。
3、浏览器解析url地址,获取协议、主机名、端口号和路径。
4、获取主机ip地址过程
(1)浏览器缓存
(2)主机缓存
(3)hosts文件
(4)路由器缓存
(5)DNS缓存
(6)DNS递归查询
5、浏览器发起和服务器的TCP连接,执行三次握手
6、三次握手连接后,浏览器发送一个http请求
7、服务器收到请求,转到相关的服务程序,期间可能需要连接并操作数据库(主要分get和post请求)。
8、服务器看是否需要缓存,服务器处理完请求,发出一个响应
9、服务器并根据请求头包含信息决定是否需要关闭TCP连接(如需关闭,则需要四次挥手过程)
10、浏览器对接收到的响应进行解码
11、浏览器解析收到的响应并根据响应的内容(假如是HTML文件)进行构建DOM树,构建render树,渲染render树等过程
12、处理嵌入的其他资源如css文件、js文件、图片文件、音视频等文件,处理过程类似上面的步骤
对浏览器运行原理的初步认知
在了解以上内容之后,我们就很容易对浏览器的运行原理进行初步的认知
获取url–>获取可解释的资源文件–>解释–>渲染显示可视化页面
尽管这个初步认知的说法有些笼统,但详细分一下我们都可以从上面的内容找的到每一步的稍
具体方法,而这只是初步认知