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 模型的最高层,直接为用户的应用程序提供服务。它定义了应用程序之间通信的协议和接口。
主要功能:
- 提供网络服务接口:为应用程序提供访问网络的接口
- 定义应用协议:规定应用程序之间交换消息的格式和语义
- 处理用户数据:处理用户输入输出,呈现数据给用户
常见应用层协议:
| 协议 | 端口 | 用途 |
|---|---|---|
| HTTP | 80 | Web 网页传输 |
| HTTPS | 443 | 加密的 Web 传输 |
| FTP | 20/21 | 文件传输 |
| SMTP | 25 | 邮件发送 |
| POP3 | 110 | 邮件接收 |
| IMAP | 143 | 邮件访问 |
| DNS | 53 | 域名解析 |
| SSH | 22 | 安全远程登录 |
| Telnet | 23 | 远程登录(不安全) |
数据封装与解封
数据在网络中的传输过程涉及各层的封装和解封。
发送过程(封装):
当用户发送数据时,数据从应用层向下传递,每经过一层都会添加该层的协议头部(和尾部):
应用层:数据
表示层:表示层头部 + 数据
会话层:会话层头部 + 表示层头部 + 数据
传输层:TCP/UDP头部 + 会话层头部 + 表示层头部 + 数据
网络层:IP头部 + TCP/UDP头部 + 会话层头部 + 表示层头部 + 数据
数据链路层:以太网帧头 + IP头部 + TCP/UDP头部 + 数据 + 以太网帧尾
物理层:比特流
接收过程(解封):
接收方收到数据后,从物理层向上传递,每经过一层都会去掉该层的协议头部(和尾部),最终将原始数据传递给应用层。
这个过程就像寄快递:你把物品(数据)装进盒子,写上地址(网络层),放进快递袋(数据链路层),交给快递员(物理层)。收件人收到后,依次拆开,最终拿到物品。
OSI 模型与 TCP/IP 模型的对比
TCP/IP 模型是互联网实际使用的协议模型,它将 OSI 模型简化为四层:
| OSI 模型 | TCP/IP 模型 | 对应关系 |
|---|---|---|
| 应用层 | 应用层 | 应用层 |
| 表示层 | 应用层 | 应用层 |
| 会话层 | 应用层 | 应用层 |
| 传输层 | 传输层 | 传输层 |
| 网络层 | 网际层 | 网络层 |
| 数据链路层 | 网络接口层 | 链路层 |
| 物理层 | 网络接口层 | 物理层 |
TCP/IP 模型更加实用,OSI 模型更加理论化。在实际学习中,通常结合两种模型理解:用 OSI 模型理解分层思想,用 TCP/IP 模型理解实际协议。
小结
OSI 七层模型是理解网络通信的基础框架:
- 物理层:传输比特流,定义电气和物理特性
- 数据链路层:组装帧,处理差错,MAC 地址寻址
- 网络层:IP 地址寻址,路由选择,分片重组
- 传输层:端到端传输,端口寻址,TCP/UDP 协议
- 会话层:会话管理,同步检查点
- 表示层:数据格式转换,加密解密
- 应用层:提供网络服务,定义应用协议
理解 OSI 模型有助于系统地学习网络协议,快速定位网络问题。下一章我们将学习 TCP/IP 协议族,了解互联网实际使用的协议栈。
练习
- 解释为什么网络通信需要分层设计
- 比较 MAC 地址和 IP 地址的区别
- 说明数据从应用层到物理层的封装过程
- 列举你日常使用的应用层协议及其端口号