【每日一讲】浏览器

发布时间:2026/8/4 4:15:41
【每日一讲】浏览器 浏览器就像是你在网络世界的“座驾”和“翻译官”。它的核心工作就是两件事**一是根据你下达的指令输入网址通过网络协议去服务器“取货”请求资源二是把取回来的“原材料”HTML、CSS、JS等加工成你眼前看到的漂亮网页渲染页面**。为了完成这个复杂任务现代浏览器如Chrome本身也采用了类似网络分层的思想——**多进程架构**。### ️ 浏览器的“团队协作”多进程架构你可以把浏览器想象成一个公司不同的部门进程各司其职协同工作。* **浏览器主进程 (Browser Process)**公司的“总经理”。负责调配资源管理其他部门的创建和销毁以及处理用户界面地址栏、书签等。* **网络进程 (Network Process)**公司的“采购部”。专门负责处理所有网络通信比如发起HTTP请求、接收服务器数据等。我们下面要讲的网络请求大部分就是由它来执行的。* **渲染进程 (Renderer Process)**公司的“生产车间”。负责将网络进程取回的HTML、CSS、JS等“原材料”加工成最终的网页。为了安全和效率每个标签页通常都有一个独立的渲染进程。* **GPU进程 (GPU Process)**公司的“美工设计部”。专门负责处理图形相关的计算让网页的绘制和动画更流畅。分工明确后我们来详细看看“采购部”网络进程是如何完成一次“采购任务”的。### 一次完整的“采购任务”从URL到网页当你在地址栏输入网址并按下回车就启动了一次完整的“采购任务”。#### 第一步解析“采购清单” (URL解析)网络进程首先会解析你输入的URL搞清楚需要什么* **协议 (Protocol)**用什么规矩沟通比如 http 或 https加密版。* **域名 (Host)**去哪个公司采购比如 www.example.com。* **端口 (Port)**找公司的哪个部门HTTP默认是80HTTPS默认是443。* **资源路径 (Path)**具体要买什么商品比如 /index.html。#### 第二步查询“内部库存” (缓存检查)在出门采购前网络进程会先查查浏览器内部的“仓库”缓存。如果有就直接从本地取货速度飞快。#### 第三步锁定“供应商地址” (DNS解析)如果仓库没有就需要去“供应商”目标服务器那里取货。浏览器只知道人类易记的域名www.example.com但网络世界需要的是IP地址如 192.0.2.1。这个过程就需要**DNS域名系统** 这个“通讯录”来帮忙把域名翻译成IP地址。#### 第四步建立“专用运输通道” (TCP连接)拿到IP地址后浏览器会通过**TCP协议**与服务器建立一条可靠的连接。这个建立过程就是著名的**三次握手**。如果是HTTPS还需要在此之后进行**TLS握手**来加密通信。#### 第五步发送“采购订单” (发送HTTP请求)通道建立后网络进程会按照HTTP协议的格式向服务器发送一个“采购订单”也就是**HTTP请求报文**。这个订单包含* **请求行**例如 GET /index.html HTTP/1.1说明了“方法”GET表示获取、“商品路径”和“协议版本”。* **请求头 (Headers)**一系列的附加信息例如* Host: www.example.com告诉服务器你要访问哪个网站。* User-Agent: Chrome/...告诉服务器你是谁浏览器类型。* Accept: text/html告诉服务器你能接受什么类型的“货物”。* **请求体 (Body)**如果是提交表单如登录这里会包含具体的用户名和密码等数据。#### 第六步等待“到货通知” (接收HTTP响应)服务器收到订单后会进行处理并返回一个“到货通知”即**HTTP响应报文**。它包含* **状态行**例如 HTTP/1.1 200 OK其中200是状态码表示“订单成功”。* **响应头 (Headers)**例如 Content-Type: text/html告诉你“货物”是HTML网页。* **响应体 (Body)**里面装着的就是网页的“原材料”比如HTML代码。网络进程收到响应后会根据状态码和响应头做判断。如果是200 OK且内容是HTML它就会把数据交给渲染进程去处理如果是301/302重定向则会根据新地址重新发起请求。### “生产车间”的工序页面渲染渲染进程拿到HTML“原材料”后会开始一系列复杂的加工1. **构建DOM树**解析HTML代码在内存中构建一棵“文档对象模型树”DOM树它描述了网页的结构。2. **构建CSSOM树**解析CSS代码构建“CSS对象模型树”CSSOM树它描述了网页的样式。3. **生成渲染树 (Render Tree)**将DOM树和CSSOM树合并生成只包含可见元素及其样式的“渲染树”。4. **布局 (Layout)**计算每个可见元素在屏幕上的确切位置和大小。5. **绘制 (Paint)**将每个元素绘制出来这个过程可能还会涉及GPU进程来加速。6. **合成 (Composite)**将各个图层合并最终在屏幕上显示出完整的、可交互的网页。在这个过程中如果HTML引用了外部资源如CSS、JS、图片浏览器会再次发起HTTP请求去获取它们。### 总结浏览器就是一个精密的“客户端”系统。它通过**多进程架构**高效协作利用**DNS、TCP、HTTP**等一系列网络协议完成资源获取再通过**页面渲染**将代码转化为可视化的网页。整个过程完美体现了网络分层和协议栈协作的价值。如果你对“三次握手”、“TLS加密”或者“页面渲染”的具体细节感兴趣我们可以随时再深入聊聊。