输入网址到网页显示
1. 应用层(Application Layer)
用户输入网址
- 在浏览器地址栏输入
https://www.example.com/index.html
- 浏览器会解析出:
- 协议(
https
) - 主机名(
www.example.com
) - 资源路径(
/index.html
)
- 协议(
- 在浏览器地址栏输入
浏览器缓存检查
- 浏览器先看自己本地缓存(Memory Cache、Disk Cache、Service Worker 等), 如果命中且没过期,可以直接返回内容(整个过程甚至不会走网络)。
- 如果没有命中缓存 → 进入下一步。
DNS 查询(应用层协议:DNS)
- 如果本地(浏览器 DNS Cache、操作系统 DNS Cache、hosts 文件)没有缓存该域名的 IP 地址:
- 浏览器调用系统的 DNS 解析接口
- DNS 查询过程(通常是递归查询):
- 客户端向本地 DNS 服务器(ISP 提供)发送查询请求
- 如果本地 DNS 服务器没有缓存,则向根域名服务器查询
- 根域名服务器返回顶级域名服务器地址(如 .com 服务器)
- 本地 DNS 服务器向顶级域名服务器查询
- 顶级域名服务器返回权威域名服务器地址(管理 example.com 的服务器)
- 本地 DNS 服务器向权威域名服务器查询
- 权威域名服务器返回
www.example.com
的 IP 地址 - 本地 DNS 服务器将结果返回给客户端并缓存
- 最终获取
www.example.com
对应的 IP(例如93.184.216.34
)
- DNS 记录类型:
- A 记录:域名到 IPv4 地址的映射
- AAAA 记录:域名到 IPv6 地址的映射
- CNAME 记录:域名别名(如果是 HTTPS,可能需要额外解析)
- MX 记录:邮件交换记录
- TXT 记录:文本记录,常用于验证域名所有权
- NS 记录:指定域名由哪些 DNS 服务器负责解析
- DNS 查询使用 UDP 协议(端口 53),因为速度快、开销小;但在响应包过大或需要 TCP 传输安全性时,也可能使用 TCP 协议。
- 如果本地(浏览器 DNS Cache、操作系统 DNS Cache、hosts 文件)没有缓存该域名的 IP 地址:
2. 传输层(Transport Layer)
协议:TCP(HTTP/HTTPS 基于 TCP) 如果是 HTTPS,还会加一层 TLS(SSL)。
建立 TCP 连接(三次握手)
- 客户端 → SYN → 服务器
- 服务器 → SYN-ACK → 客户端
- 客户端 → ACK → 服务器 完成后,双方可以可靠通信。
TLS 握手(仅 HTTPS)
- 客户端发送支持的加密套件列表
- 服务器返回证书和选择的加密方式
- 客户端验证证书(CA 验签,可能还会走 OCSP/CRL 检查)
- 双方协商生成对称密钥(基于非对称加密)
- 从此 HTTP 数据会被加密传输
3. 网络层(Network Layer)
协议:IP(IPv4 / IPv6)
- 传输层生成的 TCP 段会加上 IP 头,指定源 IP(你的机器)和目标 IP(服务器)
- 路由器根据目标 IP 地址查找路由表,把数据包送向下一跳
- 可能经过多个路由器(ISP → 骨干网 → 数据中心入口)
4. 数据链路层(Data Link Layer)
协议:Ethernet / Wi-Fi / PPP / …
- IP 包被封装在数据帧里
- MAC 地址用于局域网内寻址
- 交换机通过 MAC 表把数据帧发给正确的端口
- MAC 地址在网络传输过程中可能发生的变化:
- 当数据包经过路由器时,源MAC和目标MAC会被替换:
- 源MAC变为路由器出口接口的MAC地址
- 目标MAC变为下一跳设备(路由器或目标主机)的MAC地址
- 在不同网段间传输时,每经过一个路由器,MAC地址就会更新一次
- 而IP地址在整个传输过程中保持不变(除非使用NAT技术)
- 这种MAC地址的变化是因为MAC地址只负责点对点通信,而IP地址负责端到端通信
- 当数据包经过路由器时,源MAC和目标MAC会被替换:
5. 物理层(Physical Layer)
- 电信号、光信号、无线电波等物理传输媒介
- 实际承载数据比特流的“硬件部分”
6. 服务器处理
Web 服务器接收请求
- TCP 层解包 → HTTP 层解析请求行、头部、Body
- 可能经过 Nginx / Apache / 负载均衡器
- 后端应用(如 Node.js、Java、PHP、Go)读取资源或访问数据库
生成响应
- 返回 HTML / JSON / 二进制文件等
- 添加 HTTP 响应头(Content-Type、Cache-Control 等)
- 通过 TCP → IP → 数据链路 → 物理层发回客户端
7. 浏览器渲染
解析 HTML
- 生成 DOM 树
- 遇到 CSS → 下载并构建 CSSOM
- 遇到 JS → 下载并执行(可能阻塞解析)
构建渲染树
- DOM + CSSOM → Render Tree
- 计算布局(Layout)
- 绘制像素(Painting) 并交给 GPU 合成(Compositing)
显示到屏幕
- 显卡输出到显示器
- 你就看到网页了
分层映射表
OSI模型层 | 具体过程 |
---|---|
应用层 | 浏览器输入网址、DNS 查询、HTTP 请求、HTML 解析 |
表示层 | TLS 加密/解密、字符编码转换 |
会话层 | HTTPS 会话管理、Cookie/Session 处理 |
传输层 | TCP 三次握手、分段重组 |
网络层 | IP 寻址、路由选择 |
数据链路层 | 以太网/Wi-Fi MAC 寻址 |
物理层 | 电信号、光信号、无线电波传输 |