我们上个网,浏览器到底干了啥?

写在前面:
如何使用浏览器大家都不需要教,但是问到具体到底是怎么工作的呢?那就很懵了。
如果要完整地讲,这还得从最开始我们输入URL开始讲,这里涉及到电容、电路、CPU内部处理等等等,头秃。所以本文就简单理一下浏览器是怎么工作的,本胖也是一知半解,全当做个了解,后面学习过程中慢慢完善就好。


使用浏览器上网,通常有以下几个步骤:

一、输入URL

  1. 使用键盘、触屏等方式输入URL,这里就需要硬件与CPU的连接;
  2. 既然与CPU连接了,第二步就是CPU内部处理信号;
  3. CPU处理完,将信号传送到操作系统;
  4. 操作系统GUI将输入事件传递到浏览器。

这一步输入URL涉及到了计算机体系结构、计算机组成等专业知识,本胖已经没几根头发了就不在这里秃头了。

二、浏览器发送数据到网卡

这里需要注意,浏览器浏览器内核是不一样的。
浏览器指Firefox、Chrome等,浏览器内核指的是Trident、Gecko、Presto等。
浏览器负责GUI以及跨平台工作(例如网络连接等),而浏览器内核负责解释网页语法渲染/显示网页

  1. 输入URL并按下回车键并且浏览器检查URL完成后,调用浏览器内核中相应方法;
  2. 浏览器内核首先擦看缓存,然后设置HTTP信息,再调用不同平台下网络请求的方法;
  3. 发送HTTP请求。首先DNS查询IP,得到IP地址之后,通过Socket发送数据。

这里涉及到计算机网络的知识,具体底层网络协议的例子,等之后写到流量分析题的时候再提一下吧。

三、本机网卡发送数据到服务器

  1. 浏览器内核现在是完事儿了,这请求得出去才行吧,那就轮到了网络适配器工作了呗;
  2. 通俗点,网络适配器就是网卡。你有了网卡没网咋行,那是不是还得有路由的活儿,那就给安排上;
  3. 家里路由工作完了,数据这就到了运营商网络里去了,传啊传就传到了服务器所在的IDC机房,进入IDC内网,反正得进到服务器网卡里面,具体咋整我也不清楚。网络工程真的不学拉网线啊QAQ
  4. 到了网卡里,那就得去服务器端的CPU转转才行吖,这样这一段也差不多完成了。

神奇的数据旅程,涉及到计算机网络、无线通信等内容,我也搞不太清,先大概知道个过程吧。

四、服务器处理接收到的数据

  1. 负载均衡。将请求分配到多个应用服务器中,可以防攻击;
  2. 反向代理。这货能理解HTTP协议,能做应用层的分流策略,能监控后端服务是否异常等等,就差能上天了hhh;
  3. 进入服务器中的Web Server,处理HTTP请求。常见的Web Server有Apache、Tomcat等。

还有一些步骤,写不动了...【真的很头秃啊,摔】

五、浏览器渲染页面
这个是本文重点要讲的内容,在后面详细写。

六、浏览器展现页面
浏览器把页面渲染完之后,就要通过硬件把它展现在屏幕上,这里我是真的一点都搞不拎清了,就不写了。

前面就是一个大概的从我们输入URL到得到想要的信息的过程,下面我们从浏览器内部来看看,到底它干了啥。

先导

CPU,中央处理器。解释计算机指令及处理计算机软件中的数据;
GPU,图形处理器。可同时跨多个核心,处理简单任务;
线程,操作系统能够运算调度的最小单位;
进程,程序的基本执行实体,是系统进行资源分配和调度的基本单位。

进程和线程的包含关系

浏览器结构

浏览器基本架构如下

不同的架构是实现细节上的不同,如何构建Web浏览器并没有标准的规范。
本文以Chrome为例,展开介绍。

Chrome多进程架构

架构图

浏览器进程(Browser Process):包括用户界面,并且处理用户不可见的操作,例如网络请求、文件访问等;
渲染进程(Renderer Process):显示渲染引擎解析出来的请求内容;
插件进程(Plugin Process):控制显示网站所使用的所有插件,例如Flash等;
GPU进程:独立于其他进程处理GPU任务,处理来自多个应用程序的请求,并绘制在同一页面中;
其他进程(Utility Process):各司其职吧。

指向浏览器UI不同部分的不同进程

导航

这一部分指的是用户请求网站以及浏览器准备呈现页面的部分,在参考文章里面,作者称之为导航,我们也可以理解为进行一次网页访问的过程。
看完参考文章,我觉得写得非常的通俗易懂,我再转述过来差不多就是翻译一下了,看官们可以自行戳文末参考的第二个链接去看哦~
这里列一个大致流程:

  1. UI线程询问地址栏部分输入的是URL还是搜索查询。(这个操作看不明白,可以自己打开Chrome试一下,在地址栏输入URL和直接搜索是不一样的)
  2. 按下回车之后,UI线程启动网络调用获取相应站点内容,网络线程使用相应协议干自己该干的事儿;
  3. 网络线程查看数据类型,将数据传递给相应进程;
  4. 返回数据就绪后,UI线程查找渲染器进程渲染网页;
  5. 浏览器发现渲染器进程已开始,导航就完成,接下来就开始文档加载。

浏览器渲染页面

Chrome的渲染引擎使用的是Blink,是WebKit的一个分支。
渲染器进程主要是讲HTML、CSS、和JavaScript转换为用户可以与之交互的网页。

渲染和解析

WebKit渲染主流程

先来认识一下单词:
Parser:解析器
Attachment:附件
Layout:布局

  1. HTML文件加载后,经HTML解析器解析之后,开始构建DOM Tree;
  2. 样式表文档被加载后,经CSS解析器解析后,开始构建样式规则,也是CSS Rule Tree;
  3. JS脚本文件加载之后,再一起构建Render Tree;
  4. 最后绘制网页画面,显示网页。

后面还没写完,今天有点开心激动过头了,明天继续补hhh

参考:
https://developers.google.com/web/updates/2018/09/inside-browser-part1
https://developers.google.com/web/updates/2018/09/inside-browser-part2
https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/#The_browser_high_level_structure

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容