浏览器工作原理学习笔记(一)

131 阅读4分钟

简介:本文主要围绕在学习李兵老师的《浏览器的工作原理与实现》过程中的一些心得体会,会分每一章节进行节选总结,便于自己后续复习以及给别的小伙伴一些技术上的分享,相信对大部分初中级工程师了解浏览器用作原理有很大的作用,由于篇幅可能较长,会分为多篇文章介绍,第一篇主要介绍浏览器的进程架构,网络通信,页面渲染流程等

一.Chrome进程架构

1.单进程到多进程的过度

单进程的缺点:不安全,不稳定,不流畅
多进程的改善:多渲染进程,各个页面间互不干扰;第三方插件及脚本用沙箱隔离,避免不安全的操作,多进程工作互不阻塞,通过IPC进行进程通信,提高浏览器的流畅度

2.浏览器进程架构 通过谷歌浏览器的任务管理器可以看出,打开页面后的进程情况

image.png

从图中我们可以分析出浏览器的进程如下:

  1. 浏览器进程(主进程):用于各个进程的管理,页面文档的呈现,用户交互等

  2. GPU进程:刚开始用于CSS 3D效果的实现,后来逐渐用于渲染进程中栅格化生成位图的加速绘制

  3. 网络进程:主要用于网络资源的请求和加载

  4. 存储进程:主要用于浏览器存储相关的功能

  5. 媒体进程:主要用于浏览器音视频播放等功能

  6. 各个渲染进程(标签页):主要用于HTML,CSS,JS的文本解析,生成用户可见可交互的页面后,提交document到主进程展示给用户,每个渲染进程都有一套完整的Dom,Css,Js解析环境,如Blink排版引擎,V8引擎等

    注意:我们从图中可以看出,有些标签页是共用的同一个渲染进程,这是因为浏览器的一个规则,当AB页面是同一站点(同一域名下)并且是由A页面打开的B页面,这个时候两个页面会共用一个渲染进程

二.浏览器的网络协议

1. IP/TCP/UDP/HTTP之间的关系

IP(Internet Protocol):IP协议是属于网络层的协议,主要用于通过IP地址找到目标主机后,通过该协议将数据包传输到对应主机。注意,该协议只是将数据包传送到对应主机,但是未涉及到任何应用相关

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol):TCP和UDP都是应用层协议,主要作用都是将通过IP协议传来的数据包分发到对应应用,但是两个存在着很大的差异

Http(Hyper Text Transfer Protocol):建立在 TCP 连接基础之上的一种由浏览器向服务器获取资源的协议,是Web应用的基础,也是浏览器中使用最广的协议

2.TCP和UDP的差异:

TCP:

  1. 特点:稳定性强,数据传输的完整性高,有重发机制,但是相对于UDP来说传输速度较慢
  2. 应用场景:对数据包的完整性要求较高的场景,比如邮件发送、接收,Web显示服务器传来的页面数据等

UDP:

  1. 特点:速度快,无重发机制,只保证数据的发送,但是不保证数据包的完整性,可能会出现丢包的情况
  2. 应用场景:对数据的传输及时性要求高,但是对完整性无太高要求的场景,比如游戏对战,视频直播等

TCP的传输过程

  1. 建立连接:客户端和服务端总共要发送3个数据包来确认双方的可发送能力及可接收能力,也就是大家熟知的3次握手,通过SYC包及ACK包确认双方能力后,连接建立成功
  2. 数据传输:在该阶段,客户端需要接收并且对服务端的数据包进行确认,也就是每个从服务端传来的数据包被收到后,客户端都会发送对应的应答包告知服务端,如果服务端在规定时间内未收到应答包,将会触发包的重发机制
  3. 断开连接:客户端和服务端总共要发送4个数据包来确认双方的数据传送以及接收都已经结束,以此来确保本次传输的完整性,俗称4次挥手;

思考:为什么握手是3次,而挥手需要4次,欢迎大家回复讨论