用全栈项目解析OSI七层模型:Vue前端 + SpringBoot后端的请求全流程

36 阅读2分钟

用全栈项目解析OSI七层模型:Vue前端 + SpringBoot后端的请求全流程

场景描述

用户在前端点击「查询订单」按钮 → Vue发起HTTP请求 → SpringBoot后端处理并返回数据 → 前端渲染结果

OSI各层在项目中的具体实现

1. 应用层:定义业务规则

  • 前端axios.get('/api/orders') 发起HTTP GET请求
  • 后端@GetMapping("/api/orders") 声明接口路由
  • 核心作用约定数据语义(HTTP协议定义请求/响应格式)

2. 表示层:数据格式翻译

  • 前端:JS对象 → JSON字符串(JSON.stringify()
  • 后端:Java对象 → JSON(@RestController自动序列化)
  • 核心作用跨语言数据兼容(统一使用JSON作为中间格式)

3. 会话层:维持交互状态

  • 前端:请求头自动携带 Cookie: session_id=xxx
  • 后端:通过Session ID验证用户权限
  • 核心作用保持连续对话(类似通话保持不中断)

4. 传输层:端到端可靠传输

  • 协议:TCP(axios默认协议)

  • 端口:Tomcat监听8080端口

  • 关键能力

    • 三次握手建立连接
    • 丢包重传机制(确保订单数据完整)

5. 网络层:跨网络路由寻址

  • 寻址依据:目标服务器IP(如 192.168.1.100

  • 核心设备:路由器

  • 关键能力

    • 选择最优网络路径(如电信/联通线路)
    • IP协议封装数据包(贴目的地标签)

6. 数据链路层:局域网精准投递

  • 寻址依据:MAC地址(物理设备标识)
  • 核心设备:交换机
  • 工作示例: 前端MAC: AA:BB:CC:11:22:33 → 后端MAC: AA:BB:CC:99:88:77
  • 关键能力同网络设备直连通信(类似快递员精准配送至小区楼栋)

7. 物理层:比特流传输

  • 载体:网线/光纤
  • 转换过程: 网卡将二进制数据 → 电信号/光信号
  • 核心作用物理介质传输(承载所有数据的公路系统)

数据流全景图

[应用层] Vue点击按钮 →

[表示层] 请求转JSON →

[会话层] 携带Session ID →

[传输层] TCP封装发往8080端口 →

[网络层] IP协议路由寻址 →

[数据链路层] 交换机MAC寻址 →

[物理层] 网卡发送比特流

为什么需要分层? 在Vue中调用 axios.get() 时,就不用关心以下问题:

1.数据如何被路由器跨城传输(网络层)

2.交换机如何通过MAC地址找到服务器(数据链路层)

3.网线如何传输电信号(物理层)