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

B/S 架构通信原理详解

B/S 架构通信原理详解

一、核心架构

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

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

二、完整通信流程

sequenceDiagramparticipant 用户participant 浏览器participant DNSparticipant 服务器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请求组成

POST /login HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded
Cookie: session_id=abc123username=admin&password=123456
  • 请求行:方法(POST/GET) + 路径 + 协议版本
  • 请求头:Host/User-Agent/Cookie等元数据
  • 请求体:表单数据/JSON等有效载荷

5. 服务器处理流程

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

6. 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.0QUIC协议(基于UDP)解决队头阻塞问题

3. 安全机制

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

四、B/S架构优劣势

优势劣势
✅ 零客户端安装(跨平台)❌ 依赖网络连接
✅ 集中式升级维护❌ 服务器性能瓶颈
✅ 天然跨平台兼容❌ 复杂交互体验受限
✅ 数据安全可控❌ 首次加载性能低

文章转载自:
http://chemnitz.lbooon.cn
http://beppu.lbooon.cn
http://andrology.lbooon.cn
http://algid.lbooon.cn
http://casey.lbooon.cn
http://centremost.lbooon.cn
http://chilian.lbooon.cn
http://carat.lbooon.cn
http://ceremony.lbooon.cn
http://astarboard.lbooon.cn
http://barton.lbooon.cn
http://agued.lbooon.cn
http://baremeter.lbooon.cn
http://biomathematics.lbooon.cn
http://brecknockshire.lbooon.cn
http://calligraphic.lbooon.cn
http://afflict.lbooon.cn
http://chemisorb.lbooon.cn
http://anthelix.lbooon.cn
http://centigrade.lbooon.cn
http://ambassadorship.lbooon.cn
http://californiate.lbooon.cn
http://actinogram.lbooon.cn
http://centum.lbooon.cn
http://admensuration.lbooon.cn
http://bombload.lbooon.cn
http://budapest.lbooon.cn
http://bode.lbooon.cn
http://cheerless.lbooon.cn
http://acidimeter.lbooon.cn
http://www.dtcms.com/a/280471.html

相关文章:

  • sqli-labs靶场通关笔记:第17关 POST请求的密码重置
  • 如何配置maven
  • 【Linux手册】重定向是如何实现的?Linux下为什么一切皆文件?
  • flutter下的webview适配rem问题
  • 【NBA】75 Greatest NBA Players of All Time
  • 春秋云镜 initial
  • Uniapp动态切换主题与老年模式详解
  • 12.6 Google黑科技GShard:6000亿参数MoE模型如何突破显存限制?
  • Zen:一款简洁高效、注重隐私的开源浏览器
  • 小白学HTML,操作HTML网页篇(1)
  • 密码工程原理与技术——总复习
  • 灰度图像,RGB图像和二值图像
  • 从OSI到TCP/IP:Linux网络架构深度解析
  • react - 根据路由生成菜单
  • 多模态大模型研究每日简报(2025-07-14)
  • AI应用服务
  • 整除分块练习题
  • 某地金属矿山自动化监测服务项目
  • Python 数据建模与分析项目实战预备 Day 6 - 多模型对比与交叉验证验证策略
  • 2.【C# in .NET】探秘数据类型:从底层机制到实战启示
  • MySQL高级篇(二):深入理解数据库事务与MySQL锁机制
  • 农村养老模式:乡土智慧与时代创新的共生之路
  • 【每日算法】专题十_字符串
  • PySpark Standalone 集群
  • react native学习record one month
  • Flink SQL 性能优化实战
  • 使用Dify+fastmcp 实现mcp服务,内含详细步骤与源码
  • Windows远程FX的编解码器性能优化
  • 算法在前端框架中的集成
  • 三十二、【核心功能改造】数据驱动:重构仪表盘与关键指标可视化