相关名词:
进程、线程、URL、DNS、HTTP
当在浏览器地址栏中输入地址,并且按下回车键时,浏览器会执行以下步骤:
- 解析URL:浏览器会解析地址栏中输入的URL,将其分解为协议、主机名、端口号、路径等信息。
- DNS查询: 浏览器会通过DNS查询将主机名转换成IP地址。如果DNS缓存中已经存在IP地址,则直接使用缓存中的地址。
- 建立TCP连接:浏览器会使用HTTP协议建立与服务器的TCP连接。TCP连接的建立需要进行三次握手,客户端向服务器发送SYN包,服务器回复SYN-ACK包,客户端再回复ACK包。
- 发送HTTP请求:浏览器会向服务器发送HTTP请求,请求中包括请求方法、请求头、请求体等信息。
- 接收HTTP响应:服务器收到浏览器的请求后,会返回HTTP响应,响应中包括状态码、响应头、响应体等信息。
- 解析HTML:浏览器接收到响应后,会根据响应头中的Content-Type字段确定响应体的类型,如果是HTML页面,则开始解析HTML。
- 解析CSS:浏览器解析HTML时,会同时解析其中的CSS样式。
- 解析JavaScript:浏览器解析JavaScript时,会停止解析HTML。
- 渲染页面:浏览器根据HTML、CSS和JavaScript等信息,将页面渲染到屏幕上。
谁在帮浏览器干活(进程和线程):
在打开浏览器后,Chrome浏览器会启动多个进程来执行任务。
- Browser Process:浏览器进程,控制应用中的 'Chrome'部分,包括地址栏,书签,回退与前进按钮,以及网络请求与文件访问。
- Renderer Process: 渲染进程,控制标签页面展示。
- Plugin Process: 插件进程,比如Flash、JSONView等
- GPU Process: GPU进程,用来处理独立于其它进程的GPU任务。浏览器的 GPU 进程用于处理浏览器中与图形相关的任务。可以协助浏览器更加高效地执行图形处理任务,如渲染网页中的图像、视频和动画等。
在Chrome 浏览器中,每个标签页都运行在一个单独的渲染进程中(Renderer Process),而每个进程又包含多个线程。 进程就像一个工厂里面的车间,线程就像车间里的人。
-
解析URL 是在渲染器进程中的网络线程中完成的。
-
DNS查询 ----- 网络线程。
-
发送HTTP请求 ----- 网络线程。
-
接收HTTP请求 ----- 网络线程。 Chrome浏览器的渲染进程中的网络线程负责处理网络请求和响应。它是一个独立的线程,独立于主线程和其它线程。
-
解析HTML、CSS和JavaScritp,然后渲染到屏幕上。
参考资料:
图解浏览器的基本工作原理 zhuanlan.zhihu.com/p/47407398
[译] 现代浏览器内部揭秘 juejin.cn/post/684490…
进程与线程的一个简单解释 www.ruanyifeng.com/blog/2013/0…