插件窝 干货文章 从输入网址到最后浏览器呈现页面内容的流程分析

从输入网址到最后浏览器呈现页面内容的流程分析

服务器 连接 路径 处理 278    来源:    2025-04-24

从输入URL到页面呈现是一个复杂的多步骤过程,涉及网络协议、服务器交互、渲染引擎等多个技术环节。以下是详细的技术流程分析:

  1. URL解析与处理

    • 浏览器解析URL结构(协议+域名+端口+路径+参数)
    • 检查HSTS预加载列表(强制HTTPS)
    • 处理特殊字符(如空格转义为%20)
    • 非完整URL时补全协议/路径(自动添加http://或https://)
  2. DNS解析(递归查询)

    • 浏览器缓存检查(chrome://net-internals/#dns)
    • 本地hosts文件查询
    • 向配置的DNS服务器发起请求(UDP 53端口)
    • 可能的查询路径:根域名服务器→TLD服务器→权威域名服务器
    • 获得A记录(IPv4)或AAAA记录(IPv6)
  3. TCP连接建立

    • 经典三次握手过程:
      1. SYN=1, seq=x
      2. SYN=1, ACK=1, seq=y, ack=x+1
      3. ACK=1, seq=x+1, ack=y+1
    • 启用TFO(TCP Fast Open)时可减少RTT
    • HTTPS场景下需要额外TLS握手(1-2个RTT)
  4. TLS协商(HTTPS)

    • ClientHello(支持的加密套件+随机数)
    • ServerHello(选定加密套件+随机数+证书)
    • 证书链验证(OCSP/CRL检查)
    • 密钥交换(ECDHE/RSA等)
    • 生成会话密钥(Pre-master secret → master secret → session key)
  5. HTTP请求处理

    • 构造请求报文:
    GET /index.html HTTP/1.1
    Host: example.com
    Connection: keep-alive
    Accept: text/html,application/xhtml+xml
    User-Agent: Mozilla/5.0
    
    • 添加Cookie、缓存相关头部(If-Modified-Since等)
    • 启用HTTP/2时进行二进制分帧
  6. 服务器处理

    • 负载均衡器路由(LVS/Nginx)
    • 反向代理处理(缓存检查、重写规则)
    • 应用服务器处理(PHP/Java/Python等)
    • 可能涉及:
      • 数据库查询(连接池优化)
      • 缓存查询(Redis/Memcached)
      • 静态文件CDN回源
  7. 响应返回

    • 典型成功响应:
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Cache-Control: max-age=3600
    ETag: "xyz123"
    Content-Encoding: gzip
    
    • 错误处理(3xx重定向/4xx客户端错误/5xx服务端错误)
  8. 浏览器渲染关键路径

    • 解析HTML构建DOM树(遇到