访问网址流程


1. 用户输入与本地预处理

  • URL 解析:浏览器接收到 URL(www.baidu.com),会解析出协议(通常是 HTTPS)、域名、端口(默认 443 对于 HTTPS)和路径(主页通常为 "/")。
  • 缓存检查:浏览器首先检查内部缓存、操作系统的 DNS 缓存和本地 Hosts 文件,看是否已有 www.baidu.com 的 IP 映射。

2. DNS 解析

如果本地没有缓存,浏览器会发起 DNS 查询:

  1. 向本地 DNS 解析器请求
    浏览器通过操作系统将查询请求发送给配置的本地 DNS 解析器(通常由 ISP 或局域网提供)。

  2. 递归查询过程

    • 根服务器查询:本地解析器先向 DNS 根服务器请求,根服务器返回负责 .com 顶级域的服务器地址。
    • TLD 服务器查询:解析器再向 .com 的顶级域服务器请求,获取 baidu.com 的权威名称服务器地址。
    • 权威服务器查询:最后,解析器向 baidu.com 的权威服务器发送查询请求,获得该域名对应的 A 记录(IPv4 地址)或 AAAA 记录(IPv6 地址)。
  3. 缓存与返回
    查询结果被 DNS 解析器缓存(根据 TTL),并返回给操作系统,再传递给浏览器。


3. 建立 TCP/TLS 连接

假设 www.baidu.com 使用 HTTPS(实际情况如此):

  1. TCP 连接建立
    浏览器根据获得的 IP 地址和端口 443 建立 TCP 连接。该过程包括三次握手(SYN、SYN-ACK、ACK)。

  2. TLS 握手
    在 TCP 连接建立后,浏览器与服务器进行 TLS 握手,协商加密算法,验证服务器证书,生成会话密钥。只有握手成功后,数据才能通过加密通道传输。


4. 发送 HTTP 请求

在安全连接建立后,浏览器构造并发送 HTTP 请求:

  • 请求报文:通常是 HTTP GET 请求,请求头中包含 User-Agent、Accept、Cookie、Host 等信息。
  • 请求路径:一般为 "/"(主页),也可能携带查询参数。

5. 服务器处理请求

  1. 服务器接收请求
    服务器(百度前端服务器)收到请求后,会进行负载均衡、身份验证等处理。
  2. 业务逻辑处理
    根据请求信息,服务器从缓存或后端系统获取对应的 HTML、CSS、JavaScript 等资源。
  3. 构造响应
    服务器将处理结果封装为 HTTP 响应,包含状态码(200 OK)、响应头和响应体(HTML 页面)。

6. 浏览器接收与渲染页面

  1. 接收响应
    浏览器接收到响应后,首先读取 HTTP 头信息,检查状态码和内容类型。

  2. 缓存响应
    根据响应头中的 Cache-Control、Expires 等信息,浏览器将部分资源缓存到本地。

  3. HTML 解析与构建 DOM
    浏览器解析 HTML 构建 DOM 树,同时解析 CSS 构建 CSSOM 树。

  4. 页面渲染
    浏览器根据 DOM 和 CSSOM 树生成渲染树,然后进行布局和绘制,将页面显示在屏幕上。

  5. 加载附属资源
    页面中引用的外部资源(如图片、脚本、样式表)会触发新的 HTTP 请求,异步加载后依次处理。

  6. JavaScript 执行
    如果页面包含 JavaScript,浏览器会解析并执行代码,这可能会引发 DOM 操作和页面更新。


7. 综合优化与缓存策略

  • 全局缓存:DNS 缓存、浏览器缓存和 CDN 缓存都能大幅提高解析速度和页面加载性能。
  • 持久连接:HTTP/2 协议支持多路复用和持久连接,减少建立连接的开销。
  • 异步加载:现代页面通常采用异步加载脚本和懒加载图片,提升用户体验。

8. 总结

从用户输入 www.baidu.com 到浏览器显示主页,整个流程包含以下关键步骤:

  1. 浏览器解析 URL,检查本地缓存和 Hosts 文件。
  2. 通过 DNS 解析获取域名对应的 IP 地址。
  3. 建立 TCP 连接并完成 TLS 握手,确保安全传输。
  4. 发送 HTTP 请求,服务器处理并返回响应。
  5. 浏览器接收响应,解析 HTML、加载资源,并渲染最终页面。

这些环节各自涉及网络协议、缓存策略、安全验证和页面渲染技术,构成了现代 Web 应用高效且安全的基础。理解整个过程不仅有助于调试和优化网络性能,还能帮助开发者设计更优的前端架构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值