# 从网络角度来看,用户从输入网址到网页显示,期间发生了什么?
8 min read
Table of Contents
从网络角度来看,用户从输入网址到网页显示,期间发生了什么?
从网络角度看用户输入网址到网页显示的过程
【核心定义】
这是一个典型的HTTP请求响应过程,涉及DNS解析、TCP连接建立、HTTP请求发送、服务器处理、响应接收和浏览器渲染等多个网络协议层的协同工作。
【关键要点】
1. DNS域名解析
- 结论:将域名转换为IP地址
- 原理:浏览器检查本地缓存 → 系统hosts文件 → 本地DNS解析器缓存 → 递归查询DNS服务器(根域名→顶级域名→权威域名服务器)
2. TCP连接建立
- 结论:通过三次握手建立可靠连接
- 原理:客户端发送SYN → 服务器响应SYN+ACK → 客户端发送ACK确认
3. HTTP请求发送
- 结论:构建并发送HTTP请求报文
- 原理:包含请求行(方法+URL+版本)、请求头、请求体,通过TCP连接发送到服务器
4. 服务器处理与响应
- 结论:服务器处理请求并返回响应
- 原理:Web服务器接收请求 → 应用服务器处理 → 数据库查询 → 生成响应(状态码+响应头+响应体)
5. 浏览器渲染
- 结论:解析响应内容并渲染页面
- 原理:解析HTML构建DOM树 → 解析CSS构建CSSOM树 → 合并为渲染树 → 布局 → 绘制
【深度推导/细节】
DNS解析的详细过程
Step 1: 浏览器检查自身缓存(chrome://net-internals/#dns)Step 2: 操作系统检查hosts文件和DNS缓存Step 3: 向配置的本地DNS服务器发起递归查询Step 4: 本地DNS服务器迭代查询: - 查询根域名服务器(获得.com顶级域名服务器地址) - 查询顶级域名服务器(获得权威域名服务器地址) - 查询权威域名服务器(获得目标IP地址)Step 5: 结果缓存并返回给客户端TCP三次握手的必要性
- 解决的根本问题:确保双方都能确认对方的发送和接收能力正常
- 防止历史连接初始化:通过序列号机制避免旧连接的干扰
- 同步初始序列号:为可靠传输奠定基础
HTTPS的TLS握手过程
Step 1: Client Hello(支持的TLS版本、加密套件、随机数)Step 2: Server Hello(选择的版本和套件、服务器随机数、证书)Step 3: 客户端验证证书,生成预主密钥并用公钥加密Step 4: 双方通过预主密钥和随机数生成会话密钥Step 5: 切换为加密通信【关联/对比】
HTTP/1.1 vs HTTP/2 vs HTTP/3
- HTTP/1.1:持久连接但存在队头阻塞,每个域名最多6个并发连接
- HTTP/2:二进制分帧、多路复用、头部压缩、服务器推送
- HTTP/3:基于QUIC(UDP),解决TCP队头阻塞,0-RTT连接建立
DNS查询类型对比
- 递归查询:客户端→本地DNS,要求最终结果
- 迭代查询:本地DNS→各级服务器,只返回下一级地址
渲染引擎差异
- WebKit(Safari):HTML解析 → DOM树 → 渲染树 → 布局 → 绘制
- Blink(Chrome):多进程架构,更复杂的渲染流水线
『面试官追问』
可能追问的问题:
-
DNS解析为什么用UDP而不是TCP?
- 答:UDP无连接、速度快,适合小数据包查询。仅在响应过大(超过512字节)或区域传输时使用TCP。
-
TCP为什么需要三次握手而不是两次?
- 答:两次握手无法防止已失效的连接请求报文突然传送到服务器,导致服务器资源浪费。三次握手确保双方都能确认对方的收发能力。
-
HTTPS的TLS握手具体如何保证安全?
- 答:通过非对称加密交换对称密钥(前向安全),证书链验证身份,数字签名防止篡改。
-
浏览器并发连接数限制是多少?为什么?
- 答:HTTP/1.1下每个域名通常6个(Chrome),防止服务器过载和DoS攻击。HTTP/2通过多路复用突破此限制。
-
从输入URL到页面显示,哪些步骤可以优化?
- 答:DNS预解析、TCP快速打开、HTTP/2、CDN加速、资源压缩、缓存策略、懒加载等。
关键数字与设计合理性:
- DNS TTL(Time to Live):通常300秒,平衡缓存效率与更新及时性
- TCP初始拥塞窗口:10个MSS(约14KB),平衡传输效率与网络友好性
- 浏览器并发连接数:6个(HTTP/1.1),基于RFC规范和实践经验
- TCP Keep-Alive超时:通常2小时,保持连接复用
【性能优化视角】
关键性能指标
- DNS解析时间:平均60-120ms,可通过预解析减少
- TCP连接时间:1-2个RTT,可通过持久连接复用
- TLS握手时间:1-2个RTT(完整握手),会话恢复可减少
- TTFB(首字节时间):反映服务器处理速度
- 内容下载时间:受带宽和资源大小影响
现代优化技术
- HTTP/2服务器推送:主动推送关键资源
- QUIC 0-RTT:重用之前连接的参数快速建立
- Brotli压缩:比gzip更高的压缩率
- 资源提示:preconnect、preload、prefetch
这个过程的每个环节都体现了计算机网络分层架构的设计哲学,从应用层到传输层再到网络层,各司其职又协同工作,最终实现了用户友好的Web体验。