OSI 七层模型纵向结构从上到下依次展示应用层、表示层、会话层、传输层、网络层、数据链路层和物理层, 列出每一层的主要职责、数据单元与典型协议,并在相邻层之间说明发送端继续封装前的处理操作。OSI REFERENCE MODEL · ENCAPSULATION TOP TO BOTTOM7应用层APPLICATION为用户应用提供网络服务HTTP · DNS · SMTP · SSH · DHCP · SNMPHTTP · DNS · SMTP · SSH数据单元DATA准备数据表示应用数据形成 → 选择编码、压缩或加密方式编码、压缩或加密6表示层PRESENTATION编码、压缩与加密表示TLS · UTF-8 · JSON · JPEG · BrotliTLS · UTF-8 · JSON · Brotli数据单元DATA准备会话上下文数据表示完成 → 建立、复用或恢复会话建立或恢复会话5会话层SESSION建立、维持与恢复通信会话X.225 · NetBIOS Session · RPC 会话X.225 · NetBIOS · RPC数据单元DATA交给传输层确认会话可用 → 选择协议、端口并准备分段选择协议、端口并分段4传输层TRANSPORT端口、可靠性、流量与拥塞控制TCP · UDP · SCTP · DCCPTCP · UDP · SCTP · DCCP数据单元SEGMENT准备跨网传输形成 Segment/Datagram → 添加 IP 地址并选择路由添加 IP 地址并选路3网络层NETWORK逻辑寻址、路由与跨网络转发IPv4 · IPv6 · ICMP · IPsec · OSPFIPv4 · IPv6 · ICMP · IPsec数据单元PACKET准备链路交付确定下一跳 → 解析链路地址并封装成帧解析 MAC 并封装成帧2数据链路层DATA LINK成帧、MAC 寻址与链路交付Ethernet · Wi-Fi MAC · ARP · VLAN · PPPEthernet · Wi-Fi · ARP · VLAN数据单元FRAME转换为物理信号帧交给网卡 → 编码为电、光或无线信号编码为物理信号1物理层PHYSICAL把比特转换为电、光或无线信号1000BASE-T · 10GBASE-SR · 802.11 PHY1000BASE-T · 光纤 · Wi-Fi PHY数据单元BIT发送端逐层封装 ↓ · 接收端反向解封装 ↑
OSI 七层从应用语义逐步下沉到物理信号;协议归层是分析视角,并非所有实现都有严格边界。

学习计算机网络时,我们常会看到“这个协议工作在第几层”“这是二层交换还是三层路由”“负载均衡运行在四层还是七层”之类的描述。这些说法背后的共同坐标系,就是 OSI 七层模型。

OSI 模型不是互联网真实运行时必须逐层调用的代码框架,也不是所有协议都能严丝合缝地塞进某一层。它更像一张用于交流、设计和排障的地图:每一层关注不同问题,并向上一层隐藏自己的实现细节。

🗺️ 七层模型总览

OSI 从上到下分为七层。发送数据时,信息通常从第七层逐步向第一层封装;接收数据时,则从第一层向第七层解封装。

层级名称核心职责数据单元典型协议与技术
7应用层 Application为应用程序提供网络能力Data / MessageHTTP、DNS、SMTP、SSH、FTP、DHCP、SNMP、NTP
6表示层 Presentation数据格式、编码、压缩与加密表示DataTLS、ASN.1、XDR、UTF-8、JSON、JPEG
5会话层 Session建立、维护和恢复通信会话DataX.225、NetBIOS Session Service、RPC 会话机制
4传输层 Transport端到端传输、端口、可靠性与流量控制Segment / DatagramTCP、UDP、SCTP、DCCP
3网络层 Network跨网络寻址、路由与分组转发PacketIPv4、IPv6、ICMP、IGMP、IPsec、OSPF
2数据链路层 Data Link同一链路上的成帧、MAC 寻址与差错检测FrameEthernet、802.11 MAC、ARP、PPP、VLAN、STP、LLDP
1物理层 Physical把比特转换成电、光或无线信号Bit1000BASE-T、10GBASE-SR、802.11 PHY、DSL、光纤

表格中的归类是便于分析的常见映射,并非所有资料都会完全一致。例如 TLS 经常被放在表示层,但在现代 TCP/IP 实现中,它通常由应用协议与传输层之间的安全库实现;ARP 又同时涉及 IP 地址和 MAC 地址,常被称为“二层半”协议。

7️⃣ 应用层:应用真正使用的网络接口

应用层直接面向用户程序,定义双方交换什么消息、消息具有怎样的语义,以及请求与响应如何组织。

典型协议包括:

  • HTTP / HTTPS: Web 页面、接口和资源传输。严格来说,HTTPS 是 HTTP 与 TLS、传输协议等共同组成的协议栈,而不是一个孤立协议。
  • DNS: 把域名解析为 IP 地址,也能承载邮件服务器、服务发现和协议提示等记录。
  • SMTP、IMAP、POP3: 邮件发送与接收。
  • SSH: 加密的远程登录、命令执行和隧道传输。
  • FTP、SFTP: 文件传输。SFTP 是 SSH 的子系统,与 FTP over TLS 不是一回事。
  • DHCP: 为主机分配 IP 地址、默认网关和 DNS 等网络参数。
  • SNMP: 网络设备监控和管理。
  • NTP: 网络时间同步。
  • WebSocket: 通过 HTTP 握手建立持久的全双工消息通道。

常见的七层设备或组件包括反向代理、API 网关、WAF 和能够理解 HTTP 的负载均衡器。它们可以根据 Host、URL、Header、Cookie 或请求体内容做路由和安全判断。

6️⃣ 表示层:双方怎样理解同一份数据

表示层解决的不是“把数据送到哪里”,而是“收到的字节应该怎样解释”。它关注序列化格式、字符编码、压缩格式和加密表示。

典型技术包括:

  • TLS: 加密应用数据、校验完整性并验证通信对端身份。将 TLS 归入表示层是一种教学映射,而不是现代网络栈中的强制分层。
  • ASN.1、XDR: 定义跨平台的数据表示和序列化规则。
  • UTF-8: 把 Unicode 字符编码为字节序列。
  • JSON、XML、Protocol Buffers: 应用之间交换结构化数据的表示格式。
  • JPEG、PNG、MPEG: 图像和音视频数据的编码格式。
  • gzip、Brotli: HTTP 内容压缩中常见的编码方式。

在 TCP/IP 模型中,表示层通常不会作为独立模块出现,它的职责大多由应用程序、协议库或运行时承担。

5️⃣ 会话层:一次对话如何持续

会话层负责建立、维护、同步和恢复较长时间的通信会话。它可以处理对话控制、检查点和会话恢复等问题。

OSI 体系中的典型协议是 X.225 / ISO 8327;历史网络中还可以看到 NetBIOS Session Service。现代开发里更常遇到的,是由 RPC 框架、数据库驱动、身份认证系统或应用协议自己实现的会话能力,例如:

  • RPC 调用上下文和长连接生命周期。
  • 数据库会话与事务状态。
  • 登录会话、Token 刷新和连接恢复。
  • 音视频会议中的对话建立和状态维护。

因此,会话层是七层模型里最容易“消失”的一层。它的职责仍然存在,只是经常被合并进应用层。

4️⃣ 传输层:进程之间怎样传输数据

网络层负责把数据送到一台主机,传输层进一步通过端口把数据交给主机中的具体进程。它还可能提供可靠传输、排序、重传、拥塞控制和流量控制。

TCP

TCP 是面向连接的可靠字节流协议。它提供序号、确认、重传、按序交付、滑动窗口和拥塞控制,常用于 HTTP/1.1、HTTP/2、SSH 和数据库连接。

TCP 的可靠性也带来队头阻塞:前面的字节丢失时,后面的字节即使到达,也必须等待缺失数据重传。

UDP

UDP 是无连接的数据报协议,只提供端口、长度和校验等基础能力,不负责重传、排序或拥塞控制。它常用于 DNS、实时音视频、在线游戏以及由上层自行实现可靠性的协议。

SCTP 与 DCCP

  • SCTP: 支持多流和多宿主,在电信信令等场景中使用。
  • DCCP: 提供拥塞控制但不保证可靠交付,部署范围相对有限。

QUIC 应该算哪一层

QUIC 在 UDP 之上实现可靠传输、多路复用、拥塞控制和 TLS 1.3,承担了大量传统传输层职责。它由用户态实现,并把安全握手与传输握手结合起来,因此很难用经典 OSI 边界准确描述。

从功能看,QUIC 是传输协议;从封装看,它作为 UDP 负载传输。HTTP/3 则运行在 QUIC 之上,而不是运行在 TCP 之上。

3️⃣ 网络层:数据包怎样跨越多个网络

网络层负责逻辑寻址和路由。路由器读取目标 IP 地址,根据路由表决定下一跳,让数据包经过多个网络最终到达目标主机。

典型协议包括:

  • IPv4 / IPv6: 提供 IP 地址、分组格式和跨网络转发能力。
  • ICMP / ICMPv6: 报告错误和网络状态,ping、IPv6 邻居发现和路径 MTU 发现都会使用它。
  • IGMP / MLD: 管理 IPv4 或 IPv6 多播成员关系。
  • IPsec: 在 IP 层提供认证、完整性保护和加密能力。
  • OSPF: 在自治系统内部交换路由信息。

BGP 经常与三层路由一起讨论,但它本身通过 TCP 179 端口交换路由信息。从协议封装角度看,它属于应用层控制协议;从职责角度看,它控制网络层的路由决策。这正说明“协议运行在哪一层”和“协议影响哪一层”不是同一个问题。

路由器、三层交换机以及部分防火墙主要在这一层工作。NAT 通常同时修改 IP 地址和传输层端口,因此跨越三层与四层边界。

2️⃣ 数据链路层:同一段链路上怎样交付帧

数据链路层负责相邻节点之间的传输。它把网络层数据包封装成帧,通过 MAC 地址标识链路中的发送方和接收方,并使用校验字段检测传输错误。

典型协议和技术包括:

  • Ethernet / IEEE 802.3: 最常见的有线局域网技术。
  • IEEE 802.11 MAC: Wi-Fi 的介质访问与帧格式。
  • ARP: 在 IPv4 网络中查询某个 IP 对应的 MAC 地址。
  • PPP: 常用于点到点链路。
  • 802.1Q VLAN: 在以太网帧中标记虚拟局域网。
  • STP / RSTP: 防止交换网络产生二层环路。
  • LLDP: 发现同一链路上的邻居设备。

交换机、网桥和无线接入点主要根据二层信息转发帧。需要注意,交换机只学习源 MAC 与端口的对应关系,并不通过 DNS 或 IP 地址决定普通二层转发。

1️⃣ 物理层:比特怎样变成信号

物理层定义接口、电压、频率、调制、编码、线缆、光纤、连接器和传输速率等规则。它不理解 IP 地址、端口或 HTTP,只负责发送和接收连续的比特。

典型标准和介质包括:

  • 1000BASE-T: 使用双绞线传输千兆以太网。
  • 10GBASE-SR: 使用多模光纤传输万兆以太网。
  • IEEE 802.11 PHY: Wi-Fi 的无线频段、信道和调制方式。
  • DSL、DOCSIS: 电话线和有线电视网络接入技术。
  • 光纤、双绞线、同轴电缆和无线电波: 承载信号的物理介质。

集线器、中继器、光模块和网线属于典型的一层设备或介质。常见故障包括网线损坏、光功率不足、无线干扰、协商速率异常和接口未连接。

📦 数据是怎样逐层封装的

假设浏览器通过 HTTP/2 请求一个 HTTPS 页面,忽略中间设备和可选扩展后,发送端可以抽象为:

HTTP 请求
  ↓ TLS 加密并生成记录
TLS Record
  ↓ TCP 添加源端口、目标端口和序号
TCP Segment
  ↓ IP 添加源地址、目标地址和生存时间
IP Packet
  ↓ Ethernet 添加源 MAC、目标 MAC 和帧校验
Ethernet Frame
  ↓ 网卡编码为电、光或无线信号
Bits / Signals

这个过程叫做封装。每一层把上一层的数据当作自己的 Payload,并添加本层需要的头部;二层通常还会添加帧尾。接收端执行相反过程:网卡接收信号,链路层验证帧,IP 层确认目标地址,TCP 重组字节流,TLS 解密,最终把 HTTP 消息交给浏览器。

中间路由器不会一路保留完全相同的二层帧。每经过一个三层跳点,旧的链路层帧会被移除,路由器修改必要的 IP 字段,再为下一段链路重新封装二层帧。端到端 IP 数据包与逐跳链路层帧是两个不同范围的概念。

HTTP/3 的封装路径则是:

HTTP/3 → QUIC(包含 TLS 1.3)→ UDP → IP → Ethernet / Wi-Fi → 物理信号

它没有 TCP 层,QUIC 自己提供流、多路复用、可靠性和拥塞控制。

🔄 OSI 七层与 TCP/IP 模型怎样对应

互联网协议并不是按照 OSI 七层设计完成的。工程实践中更常用 TCP/IP 四层或五层模型:

OSI 七层TCP/IP 四层常见实现
应用层、表示层、会话层应用层HTTP、DNS、TLS、SSH、应用序列化与会话逻辑
传输层传输层TCP、UDP、QUIC 的传输能力
网络层网际层IPv4、IPv6、ICMP、IPsec
数据链路层、物理层网络接口层Ethernet、Wi-Fi、PPP 与具体物理介质

教学中常见的五层模型会把 TCP/IP 的网络接口层重新拆成数据链路层和物理层。它既保留了互联网协议栈的现实结构,又方便解释帧、MAC 地址和物理信号。

🧪 按层定位网络故障

OSI 模型最实用的价值,是帮助工程师缩小问题范围。排障时可以从底层向上,也可以从最接近症状的层开始。

层级常见问题观察方式
1 物理层网线、光模块、信号、无线干扰、接口状态网卡状态、交换机端口、光功率、误码计数
2 数据链路层VLAN 错误、MAC 学习异常、二层环路、ARP 异常ARP/邻居表、MAC 地址表、抓包、STP 状态
3 网络层IP、网关、子网掩码、路由或 MTU 错误pingtraceroute、路由表、ICMP 报文
4 传输层端口未监听、连接超时、重传、丢包、拥塞ss / netstat、TCP 状态、抓包
5-6 会话与表示层TLS 证书、加密套件、会话恢复、编码不一致TLS 握手日志、openssl s_client、协议日志
7 应用层DNS 记录、HTTP 状态、鉴权、限流、业务错误digcurl、应用日志、反向代理日志

例如“网站打不开”至少可能意味着:

  1. 无线信号中断,属于物理层问题。
  2. VLAN 配置错误,帧无法到达网关,属于数据链路层问题。
  3. 路由缺失或 IP 配置错误,属于网络层问题。
  4. 目标端口被防火墙阻断,属于传输层问题。
  5. TLS 证书过期,属于安全表示或应用协议问题。
  6. 服务返回 503,属于应用层或服务端处理问题。

只说“网络有问题”没有提供足够信息。更有效的描述是:“DNS 解析正常,TCP 443 端口可以连接,但 TLS 握手在证书验证阶段失败。”这句话已经把问题范围从七层压缩到了一个具体阶段。

⚠️ 常见的分层误区

一个协议只能属于一层

分层是为了隔离职责,但现实协议会跨越抽象边界。TLS 提供表示层式的加密能力,却由应用调用;QUIC 基于 UDP,却实现传输层能力;ARP 同时关联三层地址与二层地址。

判断层级时,最好说明采用哪种视角:协议怎样封装、提供什么功能,还是影响哪部分网络状态。

HTTPS 就是应用层协议

HTTP 是应用层协议,但一次 HTTPS 通信至少涉及 HTTP、TLS、TCP 或 QUIC、IP、链路层和物理层。把整个协议栈简称为“HTTPS”方便交流,却不能代替逐层分析。

交换机永远在二层,负载均衡永远在四层

设备名称不能决定它只能处理哪一层。三层交换机可以路由 IP;多层交换机可以检查更多字段;负载均衡器可以只根据 IP 和端口转发,也可以终止 TLS 并根据 HTTP 内容进行七层路由。

层数越高,性能越差

层级表示职责,不表示性能排名。性能取决于协议开销、实现、硬件加速、连接复用、网络质量和业务处理等因素。七层代理能够读取更多信息,开销通常更高,但也可以通过缓存、连接池和就近处理降低端到端延迟。

🧠 建立可用于工程实践的心智模型

记忆 OSI 七层名称只是起点。更重要的是在遇到协议或故障时连续问四个问题:

  1. 这一层解决什么问题? 是数据表示、进程通信、跨网路由,还是同链路传输?
  2. 本层使用什么标识? 域名、会话、端口、IP 地址还是 MAC 地址?
  3. 数据在这一层叫什么? 消息、段、数据报、包、帧还是比特?
  4. 出现故障时应该观察哪里? 应用日志、TLS 握手、TCP 状态、路由表、抓包还是物理接口?

OSI 七层模型的价值不在于给每个协议贴上唯一标签,而在于把复杂网络拆成可以独立观察的责任边界。当你能沿着“应用消息 → 传输 → 路由 → 链路 → 信号”追踪一次通信,也能沿反方向定位故障时,这套模型才真正从考试知识变成了工程工具。

📚 参考资料