本文将详细拆解OSI七层模型的每一层核心作用、传输格式(PDU)、核心协议,结合前后端文件上传场景,还原数据从前端到后端的完整传输过程,让你直观理解数据在每一层的打包、传输、拆包全过程,贴合实际开发场景(SpringBoot3+前端文件上传)。

一、OSI七层模型核心总览

OSI(Open Systems Interconnection,开放系统互连)模型是国际标准化组织(ISO)制定的网络通信分层标准,将网络通信从低到高分为7层,每层仅负责自身核心职责,上层依赖下层提供的服务,下层不干预上层的业务逻辑,实现“分层解耦”。

核心原则:逐层打包、反向拆包——数据发送时,从上层(应用层)到下层(物理层),每一层都会给数据添加“头部信息”(用于标识、校验、寻址);数据接收时,从下层到上层,每一层都会剥离自身添加的头部,最终还原原始数据。

1.1 七层模型(从上到下,7→1)
  1. 应用层:用户与网络的接口,提供应用程序所需的网络服务(如HTTP接口);
  2. 表示层:负责数据的格式转换、加密、压缩,确保双方能“看懂”数据;
  3. 会话层:负责建立、管理、断开应用之间的通信会话(如一次文件上传会话);
  4. 传输层:负责端到端的可靠传输,控制两台主机的应用程序之间的通信(如TCP拆包、重组);
  5. 网络层:负责寻址、路由,将数据从一个主机传递到另一个主机(跨网段传输);
  6. 数据链路层:负责同一局域网内相邻设备的通信,用MAC地址寻址;
  7. 物理层:负责将二进制比特流(0/1)转换为物理信号(电信号、光信号),实现原始数据的物理传输。
1.2 七层模型核心汇总表

层级(从高到低)

层名称

传输单位(PDU)

核心协议/标准

核心作用

关键细节(贴合文件上传)

7

应用层

报文(Message)

HTTP、HTTPS、FTP

给应用程序提供网络接口,定义通信规则

前端构建HTTP POST请求(multipart/form-data格式),后端接收HTTP请求

6

表示层

表示数据(Presentation Data)

SSL/TLS、UTF-8、JPEG/MP4

数据格式转换、加密、压缩

HTTPS上传时,对文件字节流加密;图片/视频按对应格式编码

5

会话层

会话数据(Session Data)

RPC、SQL连接

建立、管理、断开会话,支持断点续传

建立文件上传会话,标记本次上传的唯一标识,支持大文件断点续传

4

传输层

TCP:数据段(Segment);UDP:数据报(Datagram)

TCP、UDP

端到端可靠传输,拆包/重组,端口区分应用

用TCP协议,将大文件(视频/图片)拆成小数据段,添加端口信息

3

网络层

数据包(Packet)

IP(IPv4/IPv6)、ICMP

IP寻址、路由选择,跨网段传输

添加源IP(前端设备)、目标IP(后端服务器),选择传输路由

2

数据链路层

数据帧(Frame)

以太网、Wi-Fi、ARP

局域网内通信,MAC地址寻址,差错检测

添加源MAC(前端网卡)、目标MAC(路由器),检测数据帧是否损坏

1

物理层

比特流(Bit)

网线、光纤、Wi-Fi信号标准

将二进制比特流转换为物理信号,实现物理传输

将数据帧转换为电信号/光信号,通过网线/Wi-Fi传输

二、OSI七层模型与TCP/IP模型对应关系

实际互联网中,我们常用的是TCP/IP四层模型(简化版OSI模型),两者对应关系如下(便于结合实际开发理解):

  • OSI 7层(应用层)+ 6层(表示层)+ 5层(会话层) → TCP/IP 应用层
  • OSI 4层(传输层) → TCP/IP 传输层
  • OSI 3层(网络层) → TCP/IP 网络层
  • OSI 2层(数据链路层)+ 1层(物理层) → TCP/IP 网络接口层

开发中重点关注:应用层(HTTP)、传输层(TCP)、网络层(IP),对应文件上传的核心流程。

三、文件上传(图片/视频)完整流程(OSI七层视角)

以下以「前端(Vue3)上传一张图片到后端(SpringBoot3)」为例,还原数据在OSI七层中“打包→传输→拆包”的完整过程,每一步都对应七层模型,直观易懂,可理解为“数据一步步穿衣服、再一步步脱衣服”。

前提:前端已选择图片(File对象,本质是字节流),准备发送上传请求;后端已启动,监听8080端口,等待接收请求。

完整流程(从前端发送 → 后端接收,按OSI七层从上到下打包,再从下到上拆包)

第一步:前端应用层(OSI第7层)—— 构建HTTP请求报文(打包第一步)

前端通过axios发送POST请求,构建HTTP应用层报文(Message):

  • 请求行:POST /api/upload HTTP/1.1(请求方法、接口路径、HTTP版本);
  • 请求头:Content-Type: multipart/form-data(文件上传格式)、Host: localhost:8080(后端服务器地址);
  • 请求体:FormData包装的内容(包含文件原始字节流、文件名、文件类型)。

此时,数据格式为「应用层报文(Message)」,包含完整的HTTP请求信息,准备向下传递到表示层。

第二步:前端表示层(OSI第6层)—— 数据加密、格式转换(打包第二步)

表示层对应用层传递的报文进行处理:

  • 若为HTTPS上传:对HTTP请求体(含文件字节流)进行加密(TLS加密),防止传输过程中被窃取;
  • 格式校验:确认图片格式(如JPEG),确保编码正确(UTF-8),无需压缩(若为大视频,可在此层压缩);
  • 添加表示层头部:标记加密方式、数据编码格式。

此时,数据格式为「表示层数据(Presentation Data)」,包含加密后的HTTP报文+表示层头部,向下传递到会话层。

第三步:前端会话层(OSI第5层)—— 建立上传会话(打包第三步)

会话层建立前端与后端的“文件上传会话”:

  • 生成会话ID:标记本次文件上传的唯一会话(便于后端区分不同的上传请求);
  • 建立会话连接:确认后端已准备接收,约定会话超时时间(防止上传中断后无响应);
  • 添加会话层头部:标记会话ID、会话状态(建立中)。

此时,数据格式为「会话数据(Session Data)」,包含表示层数据+会话层头部,向下传递到传输层。

第四步:前端传输层(OSI第4层)—— TCP拆包、添加端口(打包第四步)

传输层(TCP协议)对会话层数据进行拆分和包装:

  • 拆包:若图片较大(如10MB),将会话数据拆成多个小数据段(Segment),每个数据段大小约1-2KB(TCP MSS限制);
  • 添加TCP头部:每个数据段都添加头部,包含源端口(前端随机端口,如54321)、目标端口(后端8080端口)、数据段序号(用于后端重组)、校验和(用于校验数据完整性);
  • 建立TCP连接:通过“三次握手”确认前端与后端的TCP连接已建立(确保可靠传输)。

此时,数据格式为「TCP数据段(Segment)」,包含多个带序号的小数据段,每个数据段都有TCP头部,向下传递到网络层。

第五步:前端网络层(OSI第3层)—— 添加IP地址、选择路由(打包第五步)

网络层(IP协议)对TCP数据段进行包装,实现寻址:

  • 添加IP头部:给每个TCP数据段添加IP头部,包含源IP地址(前端设备IP,如192.168.1.100)、目标IP地址(后端服务器IP,如192.168.1.200)、IP版本(IPv4);
  • 路由选择:通过路由器确定传输路径(前端→路由器→后端服务器),标记路由信息。

此时,数据格式为「IP数据包(Packet)」,包含TCP数据段+IP头部,向下传递到数据链路层。

第六步:前端数据链路层(OSI第2层)—— 添加MAC地址、封装帧(打包第六步)

数据链路层对IP数据包进行封装,实现局域网内传输:

  • 添加MAC头部:给每个IP数据包添加MAC头部,包含源MAC地址(前端网卡MAC地址)、目标MAC地址(路由器MAC地址);
  • 添加帧尾:包含校验码(CRC),用于检测数据帧在传输过程中是否损坏;
  • 封装为数据帧(Frame):将IP数据包+MAC头部+帧尾封装成数据帧,适配局域网传输。

此时,数据格式为「数据帧(Frame)」,包含IP数据包+MAC头部+帧尾,向下传递到物理层。

第七步:前端物理层(OSI第1层)—— 转换为物理信号,传输(打包第七步)

物理层将数据帧转换为物理信号,通过传输介质(网线/Wi-Fi)发送:

  • 格式转换:将数据帧(二进制0/1比特流)转换为电信号(网线)或光信号(光纤)、无线电波(Wi-Fi);
  • 物理传输:信号通过传输介质(如网线)发送,经过路由器转发,最终到达后端服务器的物理层。

此时,数据以「比特流(Bit)」对应的物理信号形式,在网络中传输,完成前端的“打包+发送”过程。

第八步:后端物理层(OSI第1层)—— 接收物理信号,转换为比特流(拆包第一步)

后端服务器物理层接收前端发送的物理信号:

  • 信号转换:将电信号/光信号转换为二进制比特流(0/1);
  • 传递数据:将比特流向上传递到数据链路层,完成物理层的拆包(剥离物理信号,还原比特流)。
第九步:后端数据链路层(OSI第2层)—— 校验帧、剥离MAC头部(拆包第二步)

后端数据链路层接收比特流,进行校验和拆包:

  • 帧校验:通过帧尾的CRC校验码,检测数据帧是否损坏(若损坏,请求前端重发);
  • 剥离头部:剥离MAC头部和帧尾,还原IP数据包;
  • 传递数据:将IP数据包向上传递到网络层。
第十步:后端网络层(OSI第3层)—— 校验IP、剥离IP头部(拆包第三步)

后端网络层接收IP数据包,进行寻址校验和拆包:

  • IP校验:校验目标IP地址是否为自身(后端服务器IP),若不是,转发到其他设备;
  • 剥离头部:剥离IP头部,还原TCP数据段;
  • 传递数据:将TCP数据段向上传递到传输层。
第十一步:后端传输层(OSI第4层)—— TCP重组、剥离TCP头部(拆包第四步)

后端传输层(TCP协议)接收TCP数据段,进行重组和拆包:

  • 数据重组:根据TCP头部的序号,将多个小数据段重组为完整的会话数据;
  • 校验确认:通过校验和确认数据完整,发送“确认应答”给前端(若有数据丢失,请求重发);
  • 剥离头部:剥离TCP头部,还原会话数据;
  • 传递数据:将会话数据向上传递到会话层。
第十二步:后端会话层(OSI第5层)—— 管理会话、剥离会话头部(拆包第五步)

后端会话层接收会话数据,进行会话管理和拆包:

  • 会话校验:通过会话ID,确认是本次文件上传会话,更新会话状态(传输中);
  • 剥离头部:剥离会话层头部,还原表示层数据;
  • 传递数据:将表示层数据向上传递到表示层。
第十三步:后端表示层(OSI第6层)—— 解密、格式转换(拆包第六步)

后端表示层接收表示层数据,进行解密和格式转换:

  • 解密:若为HTTPS上传,对数据进行TLS解密,还原原始HTTP请求报文;
  • 格式解析:解析数据编码格式(UTF-8),确认文件格式(JPEG);
  • 剥离头部:剥离表示层头部,还原应用层报文;
  • 传递数据:将应用层报文向上传递到应用层。
第十四步:后端应用层(OSI第7层)—— 解析HTTP请求,处理文件(拆包第七步)

后端应用层(SpringBoot3)接收HTTP请求报文,进行解析和处理:

  • 解析HTTP请求:Tomcat解析multipart/form-data格式,提取文件字节流、文件名、文件类型;
  • 封装为MultipartFile:SpringBoot将文件字节流封装为MultipartFile对象,交给Controller处理;
  • 文件处理:Controller校验文件(类型、大小),将文件字节流存储(本地/OSS),生成访问URL;
  • 返回响应:构建HTTP响应报文(状态码200,响应体包含文件访问URL),按上述流程反向打包,发送回前端。

流程结束

前端接收后端的HTTP响应,解析出文件访问URL,用于展示图片/视频,整个文件上传的OSI七层传输流程完成。

四、核心总结

  1. OSI七层模型的核心是“分层打包、反向拆包”,每一层都有自己的传输格式(PDU)和核心职责;
  2. 文件上传(图片/视频)的本质:文件字节流在OSI七层中,从上到下逐层添加头部,转换为物理信号传输,后端从下到上逐层剥离头部,还原字节流并处理;
  3. 实际开发中,我们关注的核心层:应用层(HTTP)、传输层(TCP)、网络层(IP),对应接口开发、可靠传输、寻址路由;
  4. TCP/IP模型是OSI模型的简化版,实际互联网中广泛使用,两者的对应关系需牢记,便于理解网络通信原理。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐