当前位置: 首页 > news >正文

当用户在浏览器地址输入栏输入一个url并回车后的过程

. 地址栏预处理与缓存检查
浏览器首先判断输入的内容是否为合法 URL(如 https://www.baidu.com),若为 IP 地址则直接跳过 DNS 解析;若为域名则先检查本地缓存。
缓存优先级:浏览器缓存 > 系统缓存(如 hosts 文件) > 路由器缓存。如果缓存中存在该域名对应的 IP 地址,直接使用该 IP 发起连接,无需后续 DNS 查询。
2. DNS 域名解析(核心:域名 → IP 地址)
若本地缓存无对应记录,浏览器会发起 DNS 解析请求,流程为:
向 本地 DNS 服务器(通常由 ISP 提供,如电信、联通的 DNS)发送查询请求。
本地 DNS 服务器检查自身缓存,有记录则直接返回;无记录则向 根 DNS 服务器 发起请求。
根 DNS 服务器不存储具体域名的 IP,仅返回对应 顶级域 DNS 服务器 地址(如 .com .cn 服务器)。
本地 DNS 服务器向顶级域 DNS 服务器查询,获取 权威 DNS 服务器 地址(该服务器由域名注册商提供,存储域名与 IP 的映射关系)。
本地 DNS 服务器向权威 DNS 服务器查询,得到目标域名的 IP 地址,缓存后返回给浏览器。
3. TCP 三次握手(建立可靠连接)
浏览器通过 IP 地址找到目标服务器后,基于 TCP 协议建立连接(HTTP 基于 TCP,HTTPS 也先建立 TCP 连接),三次握手流程:
第一次握手:客户端(浏览器)向服务器发送 SYN 报文,请求建立连接。
第二次握手:服务器收到 SYN 报文后,回复 SYN+ACK 报文,确认客户端请求并同步自身序列号。
第三次握手:客户端收到 SYN+ACK 报文后,回复 ACK 报文,服务器收到后连接正式建立。
4. HTTPS 额外步骤:TLS/SSL 握手(加密通信)
若 URL 是 https 开头,在 TCP 连接建立后,会额外进行 TLS/SSL 握手,确保通信加密:
客户端向服务器发送支持的 TLS 版本、加密套件列表。
服务器返回数字证书(包含公钥)、选定的加密套件。
客户端验证证书合法性(通过 CA 机构),验证通过后生成随机密钥,用服务器公钥加密后发送给服务器。
服务器用私钥解密得到随机密钥,双方后续使用该密钥进行对称加密通信。
5. 发送 HTTP/HTTPS 请求
连接建立后,浏览器向服务器发送 HTTP 请求报文,报文包含:
请求行:请求方法(GET/POST 等)、URL 路径、HTTP 版本(如 HTTP/1.1)。
请求头:Host(目标域名)、User-Agent(浏览器信息)、Cookie、Accept(支持的响应格式)等。
请求体:GET 请求无请求体,POST 请求包含提交的数据(如表单信息)。
6. 服务器处理请求并返回响应
服务器接收请求后,经以下步骤处理:
Web 服务器(如 Nginx、Apache)接收请求,根据 URL 路径转发给后端应用服务器(如 Tomcat、Node.js)。
应用服务器处理业务逻辑(如查询数据库、生成动态页面),生成响应数据。
服务器向浏览器返回 HTTP 响应报文,包含:
状态行:HTTP 版本、状态码(如 200 成功、404 未找到、500 服务器错误)。
响应头:Content-Type(响应数据类型,如 text/html、image/png)、Content-Length(数据长度)、Set-Cookie 等。
响应体:页面的 HTML 代码、图片、CSS/JS 文件等资源。
7. TCP 四次挥手(断开连接,可选)
若使用 HTTP/1.0 且无 Connection: keep-alive 头,请求响应完成后会断开 TCP 连接,流程为四次挥手:
客户端发送 FIN 报文,请求关闭连接。
服务器回复 ACK 报文,确认关闭请求。
服务器数据传输完毕后,发送 FIN 报文,请求关闭连接。
客户端回复 ACK 报文,服务器收到后连接断开。
注:HTTP/1.1 及以上默认开启长连接,可复用连接处理多个请求,减少握手开销。
8. 浏览器解析与渲染页面
这是用户最终看到页面的关键步骤,分为以下阶段:
HTML 解析:浏览器将响应体的 HTML 代码解析成 DOM 树(文档对象模型,描述页面结构)。
CSS 解析:解析 HTML 中的 或

http://www.jsqmd.com/news/158584/

相关文章:

  • COCO128数据集完整指南:从下载到YOLOv5实战训练
  • PyTorch-CUDA-v2.6镜像是否支持AppDynamics智能运维?
  • 如何快速搭建OpenWrt本地编译环境:新手专属固件定制指南
  • 2025年终GEO优化服务商推荐:聚焦技术实力与行业深耕的5强深度解析 - 十大品牌推荐
  • AI图像生成量化技术终极指南:如何在普通硬件上实现专业级创作
  • 2025年终GEO优化服务商推荐:技术自研实力与可量化效果承诺双维度TOP5对比 - 十大品牌推荐
  • CameraKit-Android终极指南:快速构建稳定相机应用的完整方案
  • Springfox实战指南:从零构建API文档自动化系统
  • 城市仿真软件:UrbanSim_(12).UrbanSim案例研究与实践操作
  • 2025年终GEO优化服务商推荐:基于客户案例与实测数据的TOP5排名揭晓 - 十大品牌推荐
  • Nextcloud文件管理5大实用技巧:从基础操作到高级优化
  • HarmonyOS-Examples:从零开始掌握鸿蒙应用开发的7个关键步骤
  • 2025年终GEO优化公司推荐:多平台优化效果实测与高可靠性服务商盘点 - 十大品牌推荐
  • 机器学习实战指南:从零到精通的完整训练教程
  • Windows系统S-UI代理面板一键部署完全指南
  • 按键精灵脚本开发全攻略:从小白到大神的实战宝典 [特殊字符]
  • 理解xTaskCreate参数在驱动中的意义:一文说清
  • CycleGAN图像风格转换完整指南:从零开始实现季节变换
  • 零基础3步搞定BERT-Large模型:从环境配置到首次推理实战指南
  • 强化学习如何像人类一样学会“趋利避害“
  • 从零到精通:Wan2.1-I2V-14B-480P视频生成完全指南
  • Zonos语音合成系统深度技术指南:从架构解析到实战应用
  • Rizin逆向工程框架:二进制分析终极指南
  • 深入解析 zjkal/time-helper 库中的 ChinaHoliday 类:智能节假日判断工具
  • 智能文档解析实战:MinerU从入门到精通的完整指南
  • PyTorch-CUDA-v2.6镜像是否支持文本摘要生成?BART模型实测
  • Redpill Recovery:5大核心优势解析,打造最稳定的群晖引导环境
  • NapCatQQ开发环境配置全攻略:打造专属QQ机器人开发工作台
  • 斯坦福四足机器人Pupper V3:开启开源机器人技术新纪元
  • PyTorch-CUDA-v2.6镜像是否支持Snowflake数据湖分析?支持连接器