公告

微信

欢迎大家私信交流

Skip to content

输入网址到网页显示

1. 应用层(Application Layer)

  1. 用户输入网址

    • 在浏览器地址栏输入 https://www.example.com/index.html
    • 浏览器会解析出:
      • 协议(https
      • 主机名(www.example.com
      • 资源路径(/index.html
  2. 浏览器缓存检查

    • 浏览器先看自己本地缓存(Memory Cache、Disk Cache、Service Worker 等), 如果命中且没过期,可以直接返回内容(整个过程甚至不会走网络)。
    • 如果没有命中缓存 → 进入下一步。
  3. DNS 查询(应用层协议:DNS)

    • 如果本地(浏览器 DNS Cache、操作系统 DNS Cache、hosts 文件)没有缓存该域名的 IP 地址:
      • 浏览器调用系统的 DNS 解析接口
      • DNS 查询过程(通常是递归查询):
        1. 客户端向本地 DNS 服务器(ISP 提供)发送查询请求
        2. 如果本地 DNS 服务器没有缓存,则向根域名服务器查询
        3. 根域名服务器返回顶级域名服务器地址(如 .com 服务器)
        4. 本地 DNS 服务器向顶级域名服务器查询
        5. 顶级域名服务器返回权威域名服务器地址(管理 example.com 的服务器)
        6. 本地 DNS 服务器向权威域名服务器查询
        7. 权威域名服务器返回 www.example.com 的 IP 地址
        8. 本地 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 协议。

2. 传输层(Transport Layer)

协议:TCP(HTTP/HTTPS 基于 TCP) 如果是 HTTPS,还会加一层 TLS(SSL)。

  1. 建立 TCP 连接(三次握手)

    • 客户端 → SYN → 服务器
    • 服务器 → SYN-ACK → 客户端
    • 客户端 → ACK → 服务器 完成后,双方可以可靠通信。
  2. TLS 握手(仅 HTTPS)

    • 客户端发送支持的加密套件列表
    • 服务器返回证书和选择的加密方式
    • 客户端验证证书(CA 验签,可能还会走 OCSP/CRL 检查)
    • 双方协商生成对称密钥(基于非对称加密)
    • 从此 HTTP 数据会被加密传输

3. 网络层(Network Layer)

协议:IP(IPv4 / IPv6)

  • 传输层生成的 TCP 段会加上 IP 头,指定源 IP(你的机器)和目标 IP(服务器)
  • 路由器根据目标 IP 地址查找路由表,把数据包送向下一跳
  • 可能经过多个路由器(ISP → 骨干网 → 数据中心入口)

协议:Ethernet / Wi-Fi / PPP / …

  • IP 包被封装在数据帧里
  • MAC 地址用于局域网内寻址
  • 交换机通过 MAC 表把数据帧发给正确的端口
  • MAC 地址在网络传输过程中可能发生的变化:
    • 当数据包经过路由器时,源MAC和目标MAC会被替换:
      • 源MAC变为路由器出口接口的MAC地址
      • 目标MAC变为下一跳设备(路由器或目标主机)的MAC地址
    • 在不同网段间传输时,每经过一个路由器,MAC地址就会更新一次
    • 而IP地址在整个传输过程中保持不变(除非使用NAT技术)
    • 这种MAC地址的变化是因为MAC地址只负责点对点通信,而IP地址负责端到端通信

5. 物理层(Physical Layer)

  • 电信号、光信号、无线电波等物理传输媒介
  • 实际承载数据比特流的“硬件部分”

6. 服务器处理

  1. Web 服务器接收请求

    • TCP 层解包 → HTTP 层解析请求行、头部、Body
    • 可能经过 Nginx / Apache / 负载均衡器
    • 后端应用(如 Node.js、Java、PHP、Go)读取资源或访问数据库
  2. 生成响应

    • 返回 HTML / JSON / 二进制文件等
    • 添加 HTTP 响应头(Content-Type、Cache-Control 等)
    • 通过 TCP → IP → 数据链路 → 物理层发回客户端

7. 浏览器渲染

  1. 解析 HTML

    • 生成 DOM 树
    • 遇到 CSS → 下载并构建 CSSOM
    • 遇到 JS → 下载并执行(可能阻塞解析)
  2. 构建渲染树

    • DOM + CSSOM → Render Tree
    • 计算布局(Layout)
    • 绘制像素(Painting) 并交给 GPU 合成(Compositing)
  3. 显示到屏幕

    • 显卡输出到显示器
    • 你就看到网页了

分层映射表

OSI模型层具体过程
应用层浏览器输入网址、DNS 查询、HTTP 请求、HTML 解析
表示层TLS 加密/解密、字符编码转换
会话层HTTPS 会话管理、Cookie/Session 处理
传输层TCP 三次握手、分段重组
网络层IP 寻址、路由选择
数据链路层以太网/Wi-Fi MAC 寻址
物理层电信号、光信号、无线电波传输

上次更新于: