B/S 架构通信原理详解

B/S 架构通信原理详解

一、核心架构

Browser/Server(浏览器/服务器)模型:

  • 前端:浏览器作为统一客户端(Chrome/Firefox/Edge等)
  • 后端:服务器处理业务逻辑+数据存储(Nginx/Apache/Tomcat等)
  • 通信协议:基于 HTTP/HTTPS 的请求-响应模型

二、完整通信流程

sequenceDiagram participant 用户 participant 浏览器 participant DNS participant 服务器 participant 数据库 用户->>浏览器: 输入URL/点击链接 浏览器->>DNS: 域名解析请求 DNS-->>浏览器: 返回IP地址 浏览器->>服务器: TCP三次握手 浏览器->>服务器: 发送HTTP请求 alt 动态资源 服务器->>数据库: 数据查询/更新 数据库-->>服务器: 返回数据 end 服务器->>浏览器: 返回HTTP响应 浏览器->>浏览器: 渲染页面+加载资源 浏览器->>服务器: 断开TCP连接

1. 用户发起请求

  • 触发方式:URL输入/链接点击/表单提交
  • 示例:https://www.example.com/login

2. DNS解析过程

步骤 操作 结果
1 检查浏览器缓存 命中则直接使用
2 检查系统hosts文件 本地静态映射
3 请求本地DNS服务器 ISP提供解析服务
4 递归查询根域名服务器 获得顶级域服务器地址
5 查询权威DNS服务器 最终获取IP地址

3. 建立网络连接

  1. SYN 2. SYN-ACK 3. ACK 浏览器 服务器
  • HTTPS额外进行TLS握手(非对称加密协商会话密钥)

4. HTTP请求组成

http 复制代码
POST /login HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded
Cookie: session_id=abc123

username=admin&password=123456
  • 请求行:方法(POST/GET) + 路径 + 协议版本
  • 请求头:Host/User-Agent/Cookie等元数据
  • 请求体:表单数据/JSON等有效载荷

5. 服务器处理流程

静态资源 动态资源 接收请求 资源类型 直接读取文件 转发到应用服务器 执行业务逻辑 访问数据库 生成响应内容 返回HTTP响应

6. HTTP响应示例

http 复制代码
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Set-Cookie: session_id=xyz789
Cache-Control: max-age=3600

<!DOCTYPE html>
<html>
  <body>登录成功!</body>
</html>
  • 状态行:状态码(200/404/500) + 状态消息
  • 响应头:Content-Type/Set-Cookie等控制信息
  • 响应体:HTML/JSON/图片等实际数据

7. 浏览器渲染关键步骤

  1. 解析HTML构建DOM树
  2. 解析CSS构建CSSOM树
  3. 合并生成渲染树(Render Tree)
  4. 布局计算(Layout)
  5. 绘制显示(Painting)
  6. 执行JavaScript(可能修改DOM/CSSOM)

三、关键技术特性

1. 无状态协议解决方案

技术 实现方式 应用场景
Cookie 服务器Set-Cookie → 浏览器存储 会话标识
Session 服务端存储用户状态 + ID关联Cookie 购物车/登录状态
Token 加密凭证包含用户信息 JWT认证
URL重写 在URL中附加session_id参数 浏览器禁用Cookie

2. 连接管理演进

HTTP版本 特性 性能提升
1.0 短连接(每次请求新建连接) 无
1.1 持久连接(Keep-Alive) 减少TCP握手开销
2.0 多路复用(Multiplexing) 并行传输多个请求/响应
3.0 QUIC协议(基于UDP) 解决队头阻塞问题

3. 安全机制

  • HTTPS加密流程 :
    1. 客户端发送加密套件支持列表
    2. 服务器返回证书+公钥
    3. 验证证书有效性(CA链)
    4. 生成会话密钥(非对称加密保护)
    5. 建立安全通道(对称加密通信)

四、B/S架构优劣势

优势 劣势
✅ 零客户端安装(跨平台) ❌ 依赖网络连接
✅ 集中式升级维护 ❌ 服务器性能瓶颈
✅ 天然跨平台兼容 ❌ 复杂交互体验受限
✅ 数据安全可控 ❌ 首次加载性能低
相关推荐
Erishen20 小时前
Lume A2A 实战:让 Lume 应用接入分布式 Agent 协作网络
架构·开源·agent
斯维赤20 小时前
限流、熔断、降级,你真的分得清吗?
java·后端·架构
微步AICRM21 小时前
一物一码验真的并发链路设计:码段管理、四级关联与异常判定
后端·架构
国科安芯1 天前
人在回路中的总线:商业空间站环境控制与生命保障系统CANFD网络的可靠性与功能安全
网络·嵌入式硬件·安全·架构·php·抗辐射
一条Go1 天前
告警指纹:一次故障为什么只产生一条 FIRING 记录
后端·架构·github
王中阳Go1 天前
你把重试加到 2 次那天,200 条里成功还是 181 条,你回看过吗?
人工智能·后端·架构
Zan1 天前
Tauri 2 实战:为什么一个可靠的桌面应用,应该由 Rust Host 管理生命周期?
前端·架构·rust
神鹰手哥_起飞版1 天前
我是怎么管理 Coding Agent 的:把任务交出去,也把结果验回来
人工智能·架构·产品经理
freejackman1 天前
【工程化】从“单兵作战”到“多引擎架构”:基于门面模式的重构实战
大数据·数据库·hive·sql·测试工具·设计模式·架构
西安小哥1 天前
大厂把大模型做为一层“网关”,比换个框架更值得琢磨
架构·langchain