OSI七层模型


版权声明


一、引言

在软件开发中,经常会听到"四层负载均衡""七层负载均衡""Nginx 七层反向代理""HTTP 工作在应用层""TCP 工作在传输层"等说法。这些说法都涉及网络分层模型。其中最常见、最经典的理论模型,就是 OSI 七层模型。

OSI七层模型是国际标准化组织提出的网络通信参考模型。它并不是互联网实际使用的协议栈,而是一个用于理解和划分网络通信职责的理论框架。对于 程序员而言,不需要死记每一层的全部协议,但理解每一层的大致职责、常见介质、常见设备,有助于理解 HTTP、TCP、IP、Nginx、负载均衡、API 网关、服务网格等技术分别位于什么位置。

本文将从基本概念出发,逐层介绍 OSI 七层模型,并在每一层中说明常见协议、传输介质和设备,最后结合 Java Web 开发中的常见技术进行说明。

二、为什么需要网络分层

网络通信是一个复杂过程。浏览器访问服务器时,中间可能经过网卡、交换机、路由器、防火墙、代理服务器、负载均衡器等多个环节。如果把这些事情全部放在一个整体中处理,设计、实现和排查问题都会非常困难。

分层的基本思想是:把复杂的网络通信拆成多个层次,每一层只负责一部分职责,并向上层提供服务。这样带来的好处包括:

  • 降低复杂度,每一层只需关注自己的任务;
  • 便于标准化,不同厂商可以按照同一层协议实现互操作;
  • 便于排查问题,可以根据层次判断问题出在物理连接、IP、端口还是应用;
  • 便于替换实现,例如底层用有线还是无线,上层 HTTP 应用通常不需要关心。

可以这样理解:网络通信像寄快递。你只需要写好信、填好地址,剩下的打包、运输、中转、派送由不同环节负责。每个环节各司其职,最终把信件送到对方手中。

三、OSI 七层模型总览

OSI 七层模型从下到上依次为:

层次 名称 主要职责 典型协议 常见介质 常见设备或软件
7 应用层 面向应用,处理 HTTP、邮件、文件传输等 HTTP、HTTPS、FTP、SMTP、DNS、SSH 无独立物理介质 七层负载均衡、反向代理、API 网关、WAF、CDN、Web 服务器
6 表示层 数据格式转换、编码、压缩、加密 TLS/SSL、JPEG、ASCII、MIME 无独立物理介质 TLS/SSL 加速卡、加密机、编码压缩库
5 会话层 建立、管理、终止会话 RPC、NetBIOS、SOCKS 无独立物理介质 SOCKS 代理、RPC 中间件、会话边界控制器
4 传输层 端到端通信、端口、可靠传输、流量控制 TCP、UDP 无独立物理介质 四层负载均衡器、四层防火墙、NAT 设备、LVS
3 网络层 逻辑寻址、路由选择 IP、ICMP、ARP、路由协议 无独立物理介质 路由器、三层交换机、防火墙、网关
2 数据链路层 相邻节点传输、MAC 地址、差错检测 Ethernet、PPP、VLAN 依赖物理层介质 网卡、交换机、网桥、无线 AP
1 物理层 传输比特流,定义物理接口 RS-232、RJ45、IEEE 802.3 物理部分 双绞线、同轴电缆、光纤、无线电波 中继器、集线器、调制解调器、光模块、网卡物理接口

从下到上的记忆口诀是:

物、数、网、传、会、表、应。

从上到下则是:

应、表、会、传、网、数、物。

四、逐层详解

1. 物理层

物理层位于最底层,负责在物理介质上传输原始比特流。它关心的是电压、光信号、无线频率、接口形状、线缆规格等。

常见介质包括:

  • 双绞线:最常见的以太网网线,例如 Cat5e、Cat6,接口通常为 RJ45,成本低,适合短距离;
  • 同轴电缆:早期以太网和有线电视使用,现在较少用于局域网;
  • 光纤:分为单模和多模,带宽高、传输距离远,常用于机房、数据中心和骨干网;
  • 无线电波:Wi-Fi、4G、5G 等无线通信的介质。

常见设备包括:

  • 中继器:放大和再生信号,延长传输距离;
  • 集线器:多端口中继器,收到数据后向所有端口广播,已基本被交换机取代;
  • 调制解调器:进行信号调制与解调,例如光猫、宽带 Modem;
  • 光模块:把电信号转换为光信号,用于光纤通信;
  • 网卡的物理接口部分:负责发送和接收物理信号。

生活化比喻:物理层相当于公路、铁路、航线,双绞线和光纤就是具体的道路和轨道。

与 Java 开发的关系:Java 程序员通常不直接处理物理层,但服务器网卡、交换机、机房线路出现问题,会表现为网络不通。

2. 数据链路层

数据链路层负责在相邻节点之间传输数据帧。它处理 MAC 地址、差错检测、介质访问控制等。

常见协议包括 Ethernet、PPP、VLAN 等。

常见设备包括:

  • 网卡:拥有 MAC 地址,负责组帧、发送和接收数据帧;
  • 交换机:根据 MAC 地址表转发数据帧,是局域网的核心设备;
  • 网桥:连接两个网段,根据 MAC 地址转发;
  • 无线接入点:即 AP,负责 Wi-Fi 终端接入;
  • 二层交换机:普通交换机,工作在这一层。

数据链路层本身没有独立的物理介质,它依赖物理层的双绞线、光纤或无线电波。

生活化比喻:数据链路层相当于从你家到快递点、从快递点到收件人这一段运输,交换机像小区快递站,根据门牌号把包裹分到不同楼栋。

与 Java 开发的关系:通常由操作系统和网卡处理。开发中较少直接接触,但 MAC 地址、交换机、VLAN 等概念属于这一层。

3. 网络层

网络层负责逻辑寻址和路由选择。它决定数据包从源主机到目标主机经过哪些路径。

核心协议是 IP,辅助协议包括 ICMP、ARP、路由协议等。

常见设备包括:

  • 路由器:根据 IP 地址和路由表转发数据包,连接不同网络;
  • 三层交换机:具备路由功能的交换机,常用于局域网内高速转发;
  • 防火墙:可工作在网络层到应用层,常见防火墙至少能过滤 IP 和端口;
  • 网关:广义概念,可以是网络层网关,也可以是应用层网关。

网络层同样没有独立的物理介质,它依赖下层的数据链路层和物理层。

生活化比喻:网络层相当于跨城市运输的路线规划,路由器像高速公路上的立交桥和导航系统。

与 Java 开发的关系:

  • IP 地址属于网络层;
  • ping 命令使用 ICMP,通常用于测试网络层是否连通;
  • NAT、路由、子网等概念属于网络层;
  • 服务器之间能否互相访问,首先取决于网络层是否连通。

4. 传输层

传输层负责端到端通信。它通过端口区分不同应用,通过 TCP 或 UDP 提供不同的传输能力。

  • TCP:面向连接、可靠传输、有流量控制和拥塞控制;
  • UDP:无连接、不保证可靠,但开销小、速度快。

常见概念包括端口号、连接、三次握手、四次挥手。

常见设备或软件包括:

  • 四层负载均衡器:根据 IP 和端口转发,不解析 HTTP;
  • 四层防火墙:根据 TCP/UDP 端口做访问控制;
  • NAT 设备:网络地址转换,常集成在路由器或防火墙中;
  • LVS:常见的四层负载均衡软件。

传输层没有独立的物理介质,它依赖网络层及以下各层。

生活化比喻:传输层相当于快递公司。它负责把包裹从寄件人送到收件人,并决定是否要签收、是否重发、是否按顺序送达。

与 Java 开发的关系:

  • Spring Boot 内嵌 Tomcat 监听 8080 端口,属于传输层;
  • 浏览器通过 TCP 连接访问服务器;
  • 四层负载均衡工作在传输层,根据 IP 和端口转发;
  • telnet IP 端口 或 nc -zv IP 端口 测试的是传输层端口是否可达。

5. 会话层

会话层负责建立、管理和终止会话。它关注通信双方如何开始一次对话、如何保持会话、如何结束会话。

常见概念包括 RPC、NetBIOS、SOCKS 等。在现代互联网中,会话层往往与应用层合并实现,独立会话层协议不如传输层和应用层常见。

常见设备或软件包括:

  • SOCKS 代理:不解析 HTTP,只转发连接,常被归到会话层附近;
  • 会话边界控制器:用于 VoIP 等场景,管理会话;
  • RPC 中间件:负责远程调用的会话管理。

会话层没有独立的物理介质。

生活化比喻:会话层相当于打电话时先拨号、建立通话、维持通话、最后挂断。它管理的是"这次对话"本身。

与 Java 开发的关系:

  • HTTP Session 是应用层概念,不是 OSI 会话层协议;
  • SOCKS 代理常被归到会话层附近,因为它不解析 HTTP,只转发连接;
  • 大多数 Java 开发者不会直接编写会话层协议。

6. 表示层

表示层负责数据格式转换、编码、压缩和加密。它确保不同系统之间能够理解彼此的数据表示。

常见例子包括:

  • 字符编码,如 ASCII、UTF-8;
  • 数据格式,如 JPEG、MPEG;
  • 加密协议,如 TLS/SSL;
  • 数据压缩。

常见设备或软件包括:

  • TLS/SSL 加速卡:专用硬件加速 HTTPS 加密解密;
  • 加密机:用于密码运算和设备密钥管理;
  • 编码、压缩、序列化库:例如 JSON、XML、Protobuf、JPEG;
  • Nginx 的 TLS 终止能力:在软件层面完成 HTTPS 解密。

表示层没有独立的物理介质。

生活化比喻:表示层相当于翻译和打包。你写的是中文,对方只懂英文,就需要翻译;包裹需要压缩或加密,也在这里处理。

与 Java 开发的关系:

  • HTTPS 中的 TLS 通常被归入表示层,或视为位于传输层与应用层之间;
  • Nginx 做 TLS 终止,就是在入口层解密 HTTPS,再把 HTTP 请求转发给 Spring Boot;
  • JSON、XML 的序列化与反序列化,在工程中通常由应用层框架处理,但涉及数据表示问题;
  • 字符编码乱码问题,本质上与表示层职责相关。

7. 应用层

应用层是最靠近用户和应用的一层。它直接面向具体应用,处理 HTTP、HTTPS、FTP、SMTP、DNS、SSH 等协议。

典型软件包括浏览器、Web 服务器、邮件客户端、DNS 客户端等。

常见设备或软件包括:

  • 七层负载均衡器:根据 HTTP 路径、Host、Header 转发;
  • 反向代理服务器:例如 Nginx,作为统一入口;
  • API 网关:负责鉴权、限流、路由、聚合;
  • Web 应用防火墙:即 WAF,防护 HTTP 攻击;
  • CDN 边缘节点:缓存和分发静态资源;
  • Web 服务器:例如 Nginx、Apache、Tomcat;
  • 代理服务器:例如正向代理、HTTP 代理。

应用层没有独立的物理介质,它依赖下层所有层次提供的通信能力。

生活化比喻:应用层相当于你写的信的内容,Nginx、API 网关、WAF 像公司前台和安检。

与 Java 开发的关系:

  • HTTP、HTTPS 属于应用层;
  • Spring Boot 提供 REST API,属于应用层;
  • Nginx 作为七层反向代理,能解析 HTTP,属于应用层;
  • API 网关、Kubernetes Ingress、服务网格七层能力,通常工作在应用层;
  • CORS、JWT、OAuth2 等也属于应用层概念;
  • CDN 缓存静态资源,通常也涉及应用层。

五、TCP/IP 模型与 OSI 的对应

OSI 是理论参考模型,实际互联网更常用 TCP/IP 模型。常见有四层模型和五层模型。

OSI 七层 TCP/IP 四层 TCP/IP 五层
应用层、表示层、会话层 应用层 应用层
传输层 传输层 传输层
网络层 网络层 网络层
数据链路层、物理层 网络接口层 数据链路层、物理层

也就是说,在实际开发中,表示层和会话层通常被并入应用层。HTTP、TLS、JSON、Session 等,在 TCP/IP 视角下大多归入应用层处理。

六、一次 HTTP 请求的分层视角

以浏览器访问 Spring Boot 应用为例:

text 复制代码
浏览器 -> Nginx -> Spring Boot

从分层角度看:

  • 应用层:浏览器生成 HTTP 请求,包含方法、路径、请求头、请求体;
  • 表示层:如果使用 HTTPS,TLS 负责加密;
  • 会话层:建立和管理通信会话;
  • 传输层:TCP 建立连接,使用端口,例如 443、80、8080;
  • 网络层:IP 负责寻址和路由;
  • 数据链路层:以太网等负责相邻节点传输;
  • 物理层:通过双绞线、光纤或无线电波传输比特。

到达服务器后,过程反向进行:

  • 物理层接收信号;
  • 数据链路层解析帧;
  • 网络层解析 IP;
  • 传输层交给对应端口;
  • Nginx 在应用层解析 HTTP;
  • 如果是静态资源,Nginx 直接返回;
  • 如果是 /api 请求,Nginx 通过反向代理转发给 Spring Boot;
  • Spring Boot 处理业务后返回 JSON;
  • Nginx 再把响应返回给浏览器。

七、Java 开发常见技术所在层次

技术或概念 主要层次 说明
HTTP、HTTPS 应用层 Java Web 最常接触的协议
Spring Boot REST API 应用层 提供业务接口
Nginx 七层反向代理 应用层 能解析 HTTP,按路径、域名转发
Nginx 四层代理 传输层 根据 IP、端口转发,不解析 HTTP
四层负载均衡 传输层 典型如 LVS
七层负载均衡 应用层 典型如 Nginx、HAProxy
API 网关 应用层 鉴权、限流、路由、聚合
Kubernetes Ingress 应用层 定义 HTTP 入口规则
服务网格 Sidecar 四层或七层 治理服务间通信
CDN 应用层 缓存和分发静态资源
TCP、UDP 传输层 端口、连接、可靠传输
IP、ICMP 网络层 地址、路由、ping
MAC、Ethernet 数据链路层 局域网传输
TLS/SSL 表示层附近 加密、HTTPS
SOCKS 代理 会话层附近 更底层的代理
CORS、JWT、OAuth2 应用层 浏览器安全、认证授权
双绞线、光纤 物理层 传输介质
交换机 数据链路层 根据 MAC 转发
路由器 网络层 根据 IP 转发

八、常见误解

1. OSI 七层模型不是实际协议栈

OSI 是理论参考模型。实际互联网使用 TCP/IP 协议栈。学习 OSI 是为了理解分层职责,而不是要求每个协议严格对应七层。

2. 表示层和会话层在现代互联网中弱化

在 TCP/IP 中,表示层和会话层通常并入应用层。TLS、JSON、Session 等,工程中往往由应用层框架处理。

3. HTTPS 不是独立一层

HTTPS 是 HTTP over TLS。HTTP 仍在应用层,TLS 通常被归入表示层或位于传输层与应用层之间。

4. 四层和七层负载均衡不同

  • 四层负载均衡工作在传输层,看 IP 和端口;
  • 七层负载均衡工作在应用层,看 HTTP 路径、Host、Header。

因此,四层负载均衡不能根据 /api 路径分流,七层可以。

5. ping、telnet、curl 测试的层次不同

  • ping 使用 ICMP,主要测试网络层;
  • telnet IP 端口 或 nc -zv IP 端口 测试传输层端口是否可达;
  • curl 测试应用层 HTTP 是否正常。

6. Nginx 既能做四层,也能做七层

Nginx 常见用法是七层反向代理,但它也可以通过 stream 模块做四层代理。说"Nginx 是七层反向代理"时,通常指其 HTTP 反向代理能力。

九、总结

OSI 七层模型从下到上为:

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

对 Java 开发者来说,最重要的是建立以下认知:

  • 物理层看介质,例如双绞线、光纤、无线电波;
  • 数据链路层看 MAC 和交换机;
  • 网络层看 IP 和路由器;
  • 传输层看端口和四层负载均衡;
  • 会话层、表示层在现代互联网中通常并入应用层处理;
  • 应用层看 HTTP 和七层代理,例如 Nginx、API 网关、WAF、CDN;
  • 四层负载均衡在传输层,七层负载均衡在应用层。

可以用一个生活化比喻总结:

应用层是你写的信,表示层负责翻译和加密,会话层负责建立通话,传输层是快递公司,网络层负责跨城市路由,数据链路层负责相邻节点运输,物理层是公路、铁路和航线。双绞线和光纤是具体道路,交换机和路由器是路口和立交桥。

理解分层模型的价值,不在于背诵协议名称,而在于遇到问题时能判断问题大致出在哪一层。例如,ping 不通偏网络层,端口不通偏传输层,HTTP 返回 502 偏应用层和反向代理转发。掌握这种分层思维,再理解正向代理、反向代理、Nginx、负载均衡、API 网关和服务网格,就会更加清晰。

相关推荐
纵有疾風起2 个月前
从OSI到TCP/IP——分层架构的思想根源与模型之争
tcp/ip·计算机网络·架构·osi·408·体系结构·分层
j7~4 个月前
【Linux】网络基础(1)--之局域网、广域网、OSI,网络协议、TCP/IP结构模型、网络传输等知识详解
网络·网络协议·tcp/ip·协议·osi·mac地址·报头
2401_841495641 年前
【计算机网络】计算机网络体系结构与参考模型
网络·计算机网络·ip·tcp·osi·分层结构·协议数据单元
autism_cx1 年前
TCP/IP协议栈
服务器·网络·笔记·网络协议·tcp/ip·ios·osi
_星辰大海乀1 年前
初识网络原理
java·网络·协议·tcp协议·osi·ip协议·封装分用
A.sir啊1 年前
计算机网络知识点梳理(一)概述:组成、发展、性能、体系结构等
tcp/ip·计算机网络·osi·计算机网络体系结构·分组交换·时延·互联网发展的三个阶段
ZNineSun1 年前
什么是负载均衡,有哪些常见算法?
负载均衡·osi·七层网络模型
kse_music2 年前
OSI 七层模型和四层模型(TCP/IP 模型)
网络·tcp/ip·osi
网络安全筑盾者-燕子2 年前
计算机网络-OSI七层参考模型与数据封装,网络安全零基础入门到精通实战教程!
网络·计算机网络·安全·web安全·网络安全·osi