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架构优劣势

优势 劣势
✅ 零客户端安装(跨平台) ❌ 依赖网络连接
✅ 集中式升级维护 ❌ 服务器性能瓶颈
✅ 天然跨平台兼容 ❌ 复杂交互体验受限
✅ 数据安全可控 ❌ 首次加载性能低
相关推荐
用户84913717547162 小时前
JustAuth实战系列(第3期):接口设计艺术 - AuthRequest核心接口拆解
java·后端·架构
qb2 小时前
vue3.5.18源码:组件树的递归渲染
前端·vue.js·架构
DemonAvenger2 小时前
网络性能优化:Go编程视角
网络协议·架构·go
右手嘚温暖10 小时前
分布式事务Seata、LCN的原理深度剖析
spring boot·分布式·后端·spring·spring cloud·中间件·架构
Wgllss14 小时前
完整案例:Kotlin+Compose+Multiplatform之桌面端音乐播放器,数据库使用实现(三)
android·架构·android jetpack
曾经的三心草15 小时前
微服务的编程测评系统10-竞赛删除发布-用户管理-登录注册
微服务·云原生·架构
爷_15 小时前
用 Python 打造你的专属 IOC 容器
后端·python·架构
极客奇点17 小时前
存储成本深度优化:冷热分层与生命周期管理——从视频平台年省200万实践解析智能存储架构
阿里云·架构·降本增效·云存储·云成本优化
helloworld工程师17 小时前
Dubbo应用开发之架构的演进之路
架构·dubbo
启山智软17 小时前
什么是单体架构?什么是微服务架构?
微服务·架构