当前位置: 首页 > 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://www.lryc.cn/news/589096.html

相关文章:

  • 高标准农田气象站的功能
  • 亚矩阵云手机:破解 Yandex 广告平台多账号风控难题的利器
  • 云服务器如何管理数据库(MySQL/MongoDB)?
  • 《大数据技术原理与应用》实验报告四 MapReduce初级编程实践
  • Keepalived双机热备概述
  • 死锁问题以及读写锁和自旋锁介绍【Linux操作系统】
  • Sersync和Rsync部署
  • 免杀学习篇(1)—— 工具使用
  • Dify的默认端口怎么修改
  • 算法学习day16----Python数据结构--模拟队列
  • Nuxt3宝塔PM2管理器部署
  • linux系统------LVS+KeepAlived+Nginx高可用方案
  • LVS(Linux Virtual Server)详细笔记(理论篇)
  • 李宏毅《生成式人工智能导论》 | 第9讲 AI Agent
  • Jfinal+SQLite java工具类复制mysql表数据到 *.sqlite
  • 设计模式笔记_结构型_适配器模式
  • Redis 中的持久化机制:RDB 与 AOF
  • 基于STM32设计的智能厨房
  • redis快速入门教程
  • JavaScript进阶篇——第四章 解构赋值(完全版)
  • Bash shell用法
  • 轻松管理多个Go版本:g工具安装与使用
  • 【自学linux】计算机体系结构和操作系统第二章
  • OpenCV 伽马校正函数gammaCorrection()
  • PG备份一(逻辑备份)
  • 算法与前端的可访问性
  • Linux系统调优和工具
  • OpenCV-Python Tutorial : A Candy from Official Main Page(三)
  • 【Linux系统】命令行参数和环境变量
  • 涨停板池,跌停板池,炸板池,次新股池,强势股池数据接口