Chrome基础知识

目前的多进程架构

最新的Chrome浏览器包括:1个浏览器(Browser)主进程、1个 GPU 进程、1个⽹络(NetWork)进程、多个渲染进程和多个插件进程。

  • 浏览器进程。主要负责界⾯显⽰、⽤⼾交互、⼦进程管理,同时提供存储等功能。
  • 渲染进程。核⼼任务是将 HTMLCSSJavaScript 转换为⽤⼾可以与之交互的⽹⻚,排版引擎BlinkJavaScript引擎V8都是运⾏在该进程中,默认情况下,Chrome会为每个Tab标签创建⼀个渲染进程。出于安全考虑,渲染进程都是运⾏在沙箱模式下。
  • GPU进程。其实,Chrome刚开始发布的时候是没有GPU进程的。⽽GPU的使⽤初衷是为了实现3D CSS的效果,只是随后⽹⻚、ChromeUI界⾯都选择采⽤GPU来绘制,这使得GPU成为浏览器普遍的需求。最
    后,Chrome在其多进程架构上也引⼊了GPU进程。
  • ⽹络进程。主要负责⻚⾯的⽹络资源加载,之前是作为⼀个模块运⾏在浏览器进程⾥⾯的,直⾄最近才独
    ⽴出来,成为⼀个单独的进程。
  • 插件进程。主要是负责插件的运⾏,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃
    不会对浏览器和⻚⾯造成影响。

如何保证页面文件被完整送达浏览器

IP:把数据包送达目标机

如果想把一个数据包从A送达到B,那么在传输之前数据包应附上主机B的IP信息和主机A的IP信息,为的是传输过程中能正确寻址和B可以回复给A。

UDP:把数据包传给应用程序

IP是非常底层的协议,只负责把数据传到对方电脑,而传到什么应用程序则需要IP之上的能与应用程序打交道的协议,最常⻅的是“用户数据包协议(User Datagram Protocol)”,简称UDP。

UDP中⼀个最重要的信息是端口号,端口号其实就是⼀个数字,每个想访问⽹络的程序都需要绑定⼀个端口
号。通过端口号UDP就能把指定的数据包发送给指定的程序了,所以IP通过IP地址信息把数据包发送给指定
的电脑,⽽UDP通过端口号把数据包分发给正确的程序。和IP头⼀样,端口号会被装进UDP头⾥⾯,UDP头
再和原始数据包合并组成新的UDP数据包。UDP头中除了目的端口,还有源端口号等信息。

TCP:把数据完整地送达应用程序

浏览器请求要求数据传输可靠性,如果使用UDP来传输会存在两个问题:

  • 数据包在传输过程中容易丢失
  • 大文件会被拆分成很多⼩的数据包来传输,这些小的数据包会经过不同的路由,并在不同的时间到达接收
    端,而UDP协议并不知道如何组装这些数据包,从而把这些数据包还原成完整的⽂件。

基于上述两个问题,我们引入了TCP。TCP(Transmission Control Protocol,传输控制协议)是⼀种⾯向
连接的、可靠的、基于字节流的传输层通信协议
。相对于UDP,TCP有下⾯两个特点:

  • 对于数据包丢失的情况,TCP提供重传机制;
  • TCP引⼊了数据包排序机制,⽤来保证把乱序的数据包组合成⼀个完整的⽂件。

浏览器发起HTTP请求流程

如果在浏览器地址栏中输入http://example.com/index.html会发生什么事情呢

构建请求

构建请求行信息,准备发起网络请求

GET /index.html 1.1

查找缓存

在真正发起请求之前,浏览器会在浏览器缓存中查询是否有要请求的文件。当浏览器发现将要请求的文件存在于缓存中,它会拦截请求,返回该资源在缓存中的副本,并结束请求。如果缓存查询失败,则进入请求流程。

DNS解析

浏览器提供了DNS缓存服务,如果某个域名解析过了,则返回缓存解析的结果,拿到IP之后获取端口号。通常情况下,如果url没有指定端口,则HTTP默认80端口。

等待TCP队列

Chrome有个机制,同一个域名只能建立6个TCP连接。如果在同⼀个域名下同时有10个请求发⽣,那么其中4个请求会进⼊排队等待状态,直至进行中的请求完成。当然,如果当前请求数量少于6,会直接进入下一步,建立TCP连接。

建立TCP连接

排队等待结束之后,在HTTP⼯作开始之前,浏览器通过TCP与服务器建⽴连接。

发送HTTP请求

首先浏览器会向服务器发送请求行,它包括了请求⽅法、请求URI(Uniform Resource Identifier)和
HTTP版本协议。在浏览器发送请求⾏命令之后,还要以请求头形式发送其他⼀些信息,把浏览器的⼀些基础信息告诉服务器。⽐如包含了浏览器所使⽤的操作系统、浏览器内核等信息,以及当前请求的域名信息、浏览器端的Cookie信息,等等。

服务器返回请求

⾸先服务器会返回响应⾏,包括协议版本和状态码。随后,正如浏览器会随同请求发送请求头⼀样,服务器也会随同响应向浏览器发送响应头。响应头包含了服
务器⾃⾝的⼀些信息,⽐如服务器⽣成返回数据的时间、返回的数据类型(JSON、HTML、流媒体等类
型),以及服务器要在客⼾端保存的Cookie等信息。发送完响应头后,服务器就可以继续发送响应体的数据,通常,响应体就包含了HTML的实际内容。以上这些就是服务器响应浏览器的具体过程。

全部评论

相关推荐

09-02 17:43
门头沟学院 C++
空๑۩۞۩๑白:学历硬伤,先多看看中厂拿个保底吧
点赞 评论 收藏
分享
精致的小松鼠人狠话不多:哈哈哈 我每次都差点点一下
点赞 评论 收藏
分享
2 1 评论
分享
牛客网
牛客企业服务