从输入URL到展示出页面的这个过程~

一、你输入 URL 的那一刻

地址栏处理 :浏览器 UI 进程接收输入。它需要判断:是搜索词还是 URL

如果是搜索词 → 调用默认搜索引擎

如果是 URL → 规范化(补齐协议,去掉多余空格)

浏览器可能提前做 DNS 预解析,TCP/TLS 预连接),甚至 预获取

二、进程与线程准备

现代浏览器是多进程架构:

浏览器进程:负责地址栏、书签、下载、网络请求协调

网络进程:负责 DNS、TCP/TLS、HTTP

渲染进程:负责解析 HTML/CSS/JS、布局、绘制

GPU 进程:负责合成和最终绘制到屏幕

插件进程 / 扩展进程:单独运行 Flash、PDF 等插件或扩展

当你输入一个新域名时,浏览器可能会新开一个 渲染进程(基于 site isolation 策略)

三、浏览器缓存与 Service Worker

浏览器缓存检查: 浏览器首先检查自身缓存(包括内存缓存、磁盘缓存、Service Worker 缓存等),看所需资源(HTML、CSS、图片等)是否已存在且未过期

如果命中缓存且未过期: 直接从缓存中读取资源,跳过后续所有网络请求步骤,直接进入第 7 步渲染页面

如果没有命中缓存或缓存已过期: 继续执行网络请求流程

四、DNS 域名解析

由于网络传输需要使用 IP 地址,而不是域名,所以浏览器需要将域名翻译成 IP 地址。

1. 浏览器缓存: 浏览器先检查自己的 DNS 缓存

2. 操作系统缓存: 如果没有,查询操作系统(Hosts 文件和本地 DNS 缓存)

3. 路由器缓存: 如果还没有,查询路由器缓存

4. 本地 DNS 服务器: 如果仍未找到,向 ISP(互联网服务提供商)配置的本地 DNS 服务器发起一个递归查询

5. DNS 递归查询: LDNS 开始进行迭代查询:

向 根域名服务器 (Root Server) 发送请求。根服务器返回顶级域名服务器(TLD Server,如 .com)的地址。

向 TLD 服务器 发送请求。TLD 服务器返回权威域名服务器(Authoritative Server,如 example.com 的服务器)的地址。

向 权威域名服务器 发送请求。权威服务器返回最终的 IP 地址。

6. 返回结果: 最终 IP 地址返回给本地 DNS 服务器,本地 DNS 服务器将结果缓存并返回给浏览器。

五、建立 TCP

TCP(三次握手)

客户端 → 服务器:SYN

服务器 → 客户端:SYN + ACK

客户端 → 服务器:ACK

之后才能正式传输数据。

操作系统内核负责套接字创建、端口分配,网络驱动把数据打包成 IP 包,发到网卡 → 路由器 → 互联网 → 服务器

六、TLS/SSL 握手

如果 URL 使用的是 https://,那么在 TCP 连接建立后,还需要进行 TLS/SSL 握手,以建立一个安全的加密通道

  1. Client Hello: 客户端发送 TLS 版本、支持的加密套件列表等信息

  2. Server Hello: 服务器选择一个加密套件,并发送自己的数字证书

  3. 证书验证: 客户端验证证书的有效性、是否过期、是否由受信任的机构颁发等

  4. 密钥协商: 客户端生成一个"预主密钥"并用服务器的公钥加密后发送给服务器。服务器用私钥解密得到该密钥

  5. 安全连接建立: 双方利用这个预主密钥生成会话密钥(对称密钥),后续所有应用层数据都将使用这个对称密钥进行加密传输

七、发送 HTTP 请求

示例:

java 复制代码
GET /index.html HTTP/2
Host: www.example.com
User-Agent: Chrome/118.0
Accept: text/html,application/xhtml+xml
Accept-Encoding: gzip, br
Cookie: sessionid=abc123

现在多用HTTP/1.1

特点:单连接并发差(队头阻塞),但支持持久连接

八、服务器处理请求并返回 HTTP 响应

服务器接收到请求后:

  1. 处理请求: 服务器的应用层程序根据请求路径、请求头和请求体进行业务逻辑处理

  2. 生成响应: 服务器生成一个 HTTP 响应报文

  3. 状态行: 例如 HTTP/1.1 200 OK、404 Not Found、301 Moved Permanently 等

  4. 响应头 : 包含 Content-Type(告诉浏览器返回的数据类型,如 text/html)、Content-Length、Set-Cookie、以及缓存控制字段

  5. 响应体 : 包含请求的资源内容,通常是 HTML 文本

九、浏览器渲染页面

构建 DOM 树和构建 CSSOM 树 => 构建渲染树(将 DOM 树和 CSSOM 树合并) => 布局/回流 => 绘制/重绘 => JavaScript 执行

本期内容到此为止,喜欢的话请点个赞,谢谢观看!!!

相关推荐
独行soc3 小时前
2025年渗透测试面试题总结-101(题目+回答)
网络·python·安全·web安全·adb·渗透测试·安全狮
transuperb3 小时前
51单片机AD/DA
网络·嵌入式硬件·51单片机
胎粉仔3 小时前
网络初阶——运输层:TCP 协议(Part1)
网络·网络协议·tcp/ip
Ronin3055 小时前
【Linux网络】网络命令
linux·网络·网络命令
XUE-52113146 小时前
BGP实验-路由反射器
linux·运维·网络
安当加密6 小时前
CAS密钥管理系统在汽车行业的核心密钥管理实践——构建智能网联汽车的可信安全底座
网络·安全·汽车
努力学习的小廉8 小时前
深入了解linux网络—— TCP网络通信(上)
linux·网络·tcp/ip
爱尚你19939 小时前
Nginx proxy_pass 末尾斜杠(/)
服务器·网络·nginx
字节高级特工10 小时前
网络协议分层与Socket编程详解
linux·服务器·开发语言·网络·c++·人工智能·php