跳到主要内容

OSI 七层模型

OSI(Open System Interconnection,开放系统互连)模型是国际标准化组织(ISO)在 1984 年提出的网络通信参考模型。它将网络通信过程划分为七个层次,每一层负责特定的功能,为理解和设计网络协议提供了清晰的框架。

为什么需要分层?

网络通信是一个极其复杂的过程,涉及数据的封装、传输、路由、错误处理等多个环节。分层设计带来以下好处:

降低复杂度:将复杂的通信过程分解为相对独立的子问题,每一层只需要关注自己的职责。比如传输层只关心端到端的可靠传输,不需要知道数据如何经过路由器转发。

模块化设计:每一层可以独立实现和替换。当某一层的技术进步时,只需要更新这一层,不影响其他层。比如以太网从 10Mbps 升级到 100Mbps,上层协议完全不需要改变。

标准化接口:层与层之间通过标准接口交互,不同厂商的产品只要遵循相同的接口规范就可以互操作。这促进了网络设备的互联互通。

便于学习和排错:分层模型让我们能够系统地理解网络通信。当出现问题时,可以逐层排查,快速定位故障点。

OSI 七层模型概览

OSI 模型从下到上分为七层,数据在发送时从上到下逐层封装,接收时从下到上逐层解封。

层次名称功能描述数据单位典型协议
7应用层提供网络服务接口报文HTTP、FTP、SMTP、DNS
6表示层数据格式转换、加密解密报文SSL/TLS、JPEG、MPEG
5会话层建立、管理和终止会话报文NetBIOS、RPC
4传输层端到端可靠传输段(Segment)TCP、UDP
3网络层路由选择、逻辑寻址包(Packet)IP、ICMP、ARP
2数据链路层物理寻址、帧同步帧(Frame)Ethernet、PPP、HDLC
1物理层比特流传输比特(Bit)RS-232、RJ-45

各层详解

第一层:物理层

物理层是 OSI 模型的最底层,负责在物理介质上传输原始比特流。它定义了电压电平、数据传输速率、最大传输距离、物理连接器等电气和物理特性。

主要功能

  • 定义物理设备的接口标准,如网线的接口类型、针脚定义
  • 规定传输介质上的信号编码方式,如曼彻斯特编码、NRZ 编码
  • 确定数据传输速率,如 10Mbps、100Mbps、1Gbps
  • 定义传输模式,如单工、半双工、全双工

物理介质

  • 双绞线:最常用的传输介质,分为屏蔽(STP)和非屏蔽(UTP)两类。Cat5e 支持 1Gbps,Cat6 支持 10Gbps(短距离)。
  • 光纤:使用光信号传输,带宽大、距离远、抗干扰。单模光纤传输距离可达数十公里,多模光纤适合短距离。
  • 同轴电缆:早期以太网使用,现在主要用于有线电视网络。
  • 无线介质:无线电波、微波、红外线等,无需物理线路。

物理层设备

  • 中继器(Repeater):放大和转发信号,延长传输距离。工作在物理层,不理解帧和地址。
  • 集线器(Hub):多端口中继器,将信号广播到所有端口。现在已被交换机取代。

第二层:数据链路层

数据链路层负责在不可靠的物理介质上提供可靠的数据传输。它将物理层的比特流组装成帧,处理传输中的差错,并控制数据流量。

主要功能

  • 成帧:将比特流划分为有意义的帧,添加帧头和帧尾标识帧的边界
  • 物理寻址:使用 MAC 地址标识网络设备,实现局域网内的通信
  • 差错控制:通过校验和检测传输错误,出错时请求重传或丢弃
  • 流量控制:防止发送方发送过快导致接收方缓冲区溢出
  • 介质访问控制:在共享介质上协调多个设备的发送,避免冲突

MAC 地址

MAC(Media Access Control)地址是数据链路层的地址,烧录在网卡中,理论上是全球唯一的。MAC 地址长度为 48 位(6 字节),通常表示为 12 个十六进制数,如 00:1A:2B:3C:4D:5E。前 3 字节是厂商标识(OUI),后 3 字节是厂商分配的序列号。

以太网帧结构

+----------+----------+----------+----------+----------+----------+
| 前导码 | 目的MAC | 源MAC | 类型/长度| 数据 | FCS校验 |
| 8字节 | 6字节 | 6字节 | 2字节 | 46-1500B | 4字节 |
+----------+----------+----------+----------+----------+----------+

前导码用于同步时钟,目的 MAC 和源 MAC 标识帧的接收者和发送者,类型字段标识上层协议(如 0x0800 表示 IP),数据字段承载上层数据,FCS 用于差错检测。

数据链路层设备

  • 网桥(Bridge):连接两个网段,根据 MAC 地址转发帧,隔离冲突域。
  • 交换机(Switch):多端口网桥,每个端口独立带宽,支持全双工通信。交换机通过学习 MAC 地址表实现智能转发。

第三层:网络层

网络层负责将数据包从源主机传送到目的主机,跨越多个网络进行路由选择。这是实现互联网通信的关键层次。

主要功能

  • 逻辑寻址:使用 IP 地址标识网络中的设备,IP 地址包含网络号和主机号
  • 路由选择:根据路由表选择最佳路径,将数据包转发到目的地
  • 分片与重组:当数据包大于链路 MTU 时进行分片,在目的地重组
  • 拥塞控制:在网络拥塞时调整数据发送,避免网络崩溃

IP 地址

IP 地址是网络层的逻辑地址,不同于 MAC 地址的物理性。IPv4 地址长 32 位,通常表示为点分十进制,如 192.168.1.100。IPv6 地址长 128 位,表示为冒号分隔的十六进制,如 2001:0db8:85a3:0000:0000:8a2e:0370:7334

IP 地址分为网络部分和主机部分,子网掩码用于区分。例如 192.168.1.100/24 表示前 24 位是网络号,后 8 位是主机号。

IP 数据报结构

 0               16                              31
+--------+--------+------------------------------+
| 版本 | 首部长度| 服务类型 | 总长度 |
+--------+--------+------------------------------+
| 标识 | 标志 | 片偏移 |
+-----------------+------------------------------+
| TTL | 协议 | 首部校验和 |
+-----------------+------------------------------+
| 源 IP 地址 |
+-----------------------------------------------+
| 目的 IP 地址 |
+-----------------------------------------------+
| 选项(可选) |
+-----------------------------------------------+
| 数据 |
+-----------------------------------------------+

关键字段解释:TTL(Time To Live)防止数据包在网络中无限循环,每经过一个路由器减 1,为 0 时丢弃;协议字段标识上层协议,如 6 表示 TCP,17 表示 UDP。

网络层设备

  • 路由器(Router):连接不同网络,根据 IP 地址和路由表转发数据包。路由器隔离广播域,实现网络互连。
  • 三层交换机:具有路由功能的交换机,可以同时处理二层和三层转发。

第四层:传输层

传输层负责端到端的数据传输,为应用层提供通信服务。它屏蔽了下层网络的复杂性,向上提供可靠或不可靠的数据传输。

主要功能

  • 端口寻址:使用端口号标识应用进程,实现多路复用和分用
  • 连接管理:建立、维护和终止端到端的连接
  • 流量控制:防止发送方发送过快导致接收方来不及处理
  • 差错控制:检测和恢复传输错误,保证数据完整性
  • 拥塞控制:根据网络状况调整发送速率,避免网络拥塞

端口号

端口号是传输层的地址,用于标识主机上的应用进程。端口号范围是 0-65535,其中 0-1023 是知名端口,由 IANA 分配给常用服务;1024-49151 是注册端口;49152-65535 是动态端口,供临时使用。

常见端口号:HTTP 使用 80,HTTPS 使用 443,SSH 使用 22,DNS 使用 53,SMTP 使用 25。

TCP 与 UDP

传输层有两个主要协议:

  • TCP(Transmission Control Protocol):面向连接、可靠传输、面向字节流。提供流量控制、拥塞控制、差错恢复。适用于对可靠性要求高的应用,如 Web、邮件、文件传输。
  • UDP(User Datagram Protocol):无连接、不可靠传输、面向报文。开销小、速度快。适用于实时性要求高的应用,如视频会议、在线游戏、DNS 查询。

第五层:会话层

会话层负责建立、管理和终止应用程序之间的会话。它提供了会话级别的同步和检查点功能。

主要功能

  • 会话建立与释放:管理通信双方的会话连接
  • 会话同步:在数据流中设置检查点,便于中断后恢复
  • 对话控制:管理通信的方向,如单工、半双工、全双工

实际应用

在现代网络协议栈中,会话层的功能通常被整合到应用层。例如 HTTP 的 Cookie 和 Session 机制、数据库连接池管理,都可以看作会话层功能的体现。

第六层:表示层

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

主要功能

  • 数据格式转换:处理不同系统之间的数据表示差异,如字节序转换(大端/小端)
  • 加密与解密:保护数据安全,如 SSL/TLS 加密
  • 压缩与解压缩:减少数据传输量,如 gzip 压缩

数据表示

不同计算机系统可能使用不同的数据表示方式。例如,x86 架构使用小端字节序,而网络传输使用大端字节序。表示层负责处理这些转换,确保数据在不同系统间正确传输。

第七层:应用层

应用层是 OSI 模型的最高层,直接为用户的应用程序提供服务。它定义了应用程序之间通信的协议和接口。

主要功能

  • 提供网络服务接口:为应用程序提供访问网络的接口
  • 定义应用协议:规定应用程序之间交换消息的格式和语义
  • 处理用户数据:处理用户输入输出,呈现数据给用户

常见应用层协议

协议端口用途
HTTP80Web 网页传输
HTTPS443加密的 Web 传输
FTP20/21文件传输
SMTP25邮件发送
POP3110邮件接收
IMAP143邮件访问
DNS53域名解析
SSH22安全远程登录
Telnet23远程登录(不安全)

数据封装与解封

数据在网络中的传输过程涉及各层的封装和解封。

发送过程(封装)

当用户发送数据时,数据从应用层向下传递,每经过一层都会添加该层的协议头部(和尾部):

应用层:数据
表示层:表示层头部 + 数据
会话层:会话层头部 + 表示层头部 + 数据
传输层:TCP/UDP头部 + 会话层头部 + 表示层头部 + 数据
网络层:IP头部 + TCP/UDP头部 + 会话层头部 + 表示层头部 + 数据
数据链路层:以太网帧头 + IP头部 + TCP/UDP头部 + 数据 + 以太网帧尾
物理层:比特流

接收过程(解封)

接收方收到数据后,从物理层向上传递,每经过一层都会去掉该层的协议头部(和尾部),最终将原始数据传递给应用层。

这个过程就像寄快递:你把物品(数据)装进盒子,写上地址(网络层),放进快递袋(数据链路层),交给快递员(物理层)。收件人收到后,依次拆开,最终拿到物品。

OSI 模型与 TCP/IP 模型的对比

TCP/IP 模型是互联网实际使用的协议模型,它将 OSI 模型简化为四层:

OSI 模型TCP/IP 模型对应关系
应用层应用层应用层
表示层应用层应用层
会话层应用层应用层
传输层传输层传输层
网络层网际层网络层
数据链路层网络接口层链路层
物理层网络接口层物理层

TCP/IP 模型更加实用,OSI 模型更加理论化。在实际学习中,通常结合两种模型理解:用 OSI 模型理解分层思想,用 TCP/IP 模型理解实际协议。

小结

OSI 七层模型是理解网络通信的基础框架:

  1. 物理层:传输比特流,定义电气和物理特性
  2. 数据链路层:组装帧,处理差错,MAC 地址寻址
  3. 网络层:IP 地址寻址,路由选择,分片重组
  4. 传输层:端到端传输,端口寻址,TCP/UDP 协议
  5. 会话层:会话管理,同步检查点
  6. 表示层:数据格式转换,加密解密
  7. 应用层:提供网络服务,定义应用协议

理解 OSI 模型有助于系统地学习网络协议,快速定位网络问题。下一章我们将学习 TCP/IP 协议族,了解互联网实际使用的协议栈。

练习

  1. 解释为什么网络通信需要分层设计
  2. 比较 MAC 地址和 IP 地址的区别
  3. 说明数据从应用层到物理层的封装过程
  4. 列举你日常使用的应用层协议及其端口号