![ebbfcb20d5710fe2ee973e31acb58bd6.png](https://i-blog.csdnimg.cn/blog_migrate/33f2a53f188960968548b13a0c7f700c.jpeg)
原文:Inside look at modern web browser (part 2)
网页访问过程中发生了什么
这是揭秘浏览器原理系列的第二篇,在上一篇,我们讲解了浏览器如何利用不同的进程和线程去运作对应功能模块。本文会更深入地探讨不同的进程和线程是如何协作来展示一个网页的。
当你在浏览器输入一个网址,浏览器会从互联网获取倒数据,并将其展示出来。这篇文章将会重点讲用户输入地址到浏览器准备渲染网页的这个过程。
从浏览器主进程开始
在第一篇CPU、GPU、内存和多进程架构中,我们提到tab页以外的一切都在浏览器的主进程中运转。浏览器的主进程里包括有负责绘制导航栏上按钮和输入框等UI的线程,有负责网络数据获取的线程,有控制文件操作权限的存储线程等。当你输入一个URL到地址栏时,这个输入过程是由浏览器主进程中的UI线程来处理。
![b95b2123339af9c515fc30c2763df8ce.png](https://i-blog.csdnimg.cn/blog_migrate/019e349a7e87c8514dedb4ab3b02e46a.jpeg)
网页访问
第一步:处理输入
当用户在地址栏输入时,UI线程需要先知道输入的是搜索关键词还是URL?在谷歌浏览器里,地址栏同时也是搜索框,所以UI线程会先解析输入内容,再决定是跳转搜索引擎还是输入的地址。
![eecb1bc29d28e970f5486aeb883104c8.png](https://i-blog.csdnimg.cn/blog_migrate/eff02a9f54a468846895f857771e642e.jpeg)
第二步:开始跳转
当用户按下回车键,UI线程会将网址传给网络处理线程,让其初始化网络调用准备去拿网页内容。这时当前tab标签的一角会有加载中的菊花动画,网络线程则要通过一系列协议,如DNS查询和建立TLS连