OSI 七层模型与 TCP/IP 四层模型详解
一、为什么需要分层模型
网络通信涉及硬件、信号、寻址、路由、可靠性等方方面面,极其复杂。分层(Layering)的核心思想是把复杂问题拆解为一组职责单一、相互独立的子问题:
- 解耦:每层只关注自己的功能,通过接口向上层提供服务;
- 标准化:各层协议独立发展,不同厂商的设备只要遵循同一协议即可互通;
- 灵活:某一层的技术升级(如以太网换光纤)不影响其他层;
- 易排错:故障可以按层定位(是链路问题?路由问题?还是应用问题?)。
两大参考模型:OSI 七层模型(ISO 于 1984 年提出的理论标准)与 TCP/IP 四层模型(事实上的工业标准)。
二、OSI 七层模型
OSI:Open Systems Interconnection,开放系统互连参考模型。自下而上依次为:物理层 → 数据链路层 → 网络层 → 传输层 → 会话层 → 表示层 → 应用层。
1. 物理层
- 职责:在物理介质上透明地传输原始比特流
- 关注点:电压/光信号、接口形状与引脚、线缆类型、传输速率、编码与调制
- 传输单位:比特
- 典型设备:中继器、集线器
- 典型规范:RJ45、RS-232、光纤接口标准
2. 数据链路层
- 职责:在相邻两个节点之间无差错地传送以帧为单位的数据
- 主要功能:成帧、物理寻址(MAC 地址)、差错检测(CRC)、流量控制、介质访问控制(CSMA/CD)
- 传输单位:帧
- 典型设备:网桥、交换机
- 典型协议:以太网、PPP、VLAN(802.1Q)
3. 网络层
- 职责:实现主机到主机的通信,解决跨网络的路径选择问题
- 主要功能:逻辑寻址(IP 地址)、路由选择、分组转发、拥塞控制
- 传输单位:分组/包
- 典型设备:路由器、三层交换机
- 典型协议:IPv4/IPv6、ICMP(ping 的基础)、IGMP、路由协议(RIP/OSPF/BGP)
4. 传输层
- 职责:为进程到进程(端到端)提供可靠或不可靠的传输服务
- 主要功能:分段与重组、端口号标识应用、流量控制、���错控制、拥塞控制
- 传输单位:报文段
- 典型协议:TCP(可靠、面向连接)、UDP(不可靠、无连接)
5. 会话层
- 职责:建立、管理、同步和终止进程间的会话
- 主要功能:对话控制(全双工/半双工)、同步(插入检查点,支持断点续传)
- 典型实例:RPC、NetBIOS
6. 表示层
- 职责:处理两个通信系统之间信息交换的表示方式(语法与语义)
- 主要功能:数据格式转换、编码与字符集转换、加解密、压缩解压
- 典型实例:JPEG、ASCII、UTF-8、MPEG
7. 应用层
- 职责:为用户的应用进程直接提供网络服务接口,是离用户最近的一层
- 典型协议:HTTP/HTTPS、FTP、SMTP、POP3/IMAP、DNS、Telnet/SSH、DHCP、SNMP
记忆口诀:物数网传会表应
三、TCP/IP 四层模型
TCP/IP 模型源于实际互联网协议族的工程实践,结构更简洁、更贴近现实。
1. 网络接口层
- 对应 OSI:物理层 + 数据链路层
- 职责:物理传输、MAC 寻址、帧的封装与拆封
- 典型协议/技术:以太网、Wi-Fi(802.11)、PPP
2. 网络层
- 对应 OSI:网络层
- 职责:IP 寻址与路由转发,实现主机到主机的"尽力而为"交付
- 特点:无连接、不可靠
- 典型协议:IP、ICMP、ARP、IGMP
3. 传输层
- 对应 OSI:传输层
- 职责:端到端通信,用端口号区分不同的应用进程
| 对比项 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接(三次握手) | 无连接 |
| 可靠性 | 可靠(确认、重传、排序) | 不可靠、尽力交付 |
| 数据形式 | 字节流 | 数据报 |
| 传输效率 | 较低(头部与交互开销大) | 高(开销小、延迟低) |
| 通信模式 | 仅一对一 | 一对一、一对多、多对多 |
| 典型场景 | HTTP、FTP、邮件、SSH | DNS、视频直播、语音、DHCP |
4. 应用层
- 对应 OSI:会话层 + 表示层 + 应用层
- 职责:为应用软件提供各类网络服务;会话管理与数据表示(加密、压缩、编码)由具体应用协议自行处理(如 HTTPS 中的 TLS)
- 典型协议:HTTP/HTTPS、FTP、SMTP、DNS、SSH、DHCP、SNMP
四、两种模型的对应关系与对比
层次对应关系
OSI 七层 TCP/IP 四层
应用层 ┐
表示层 ├─────────► 应用层
会话层 ┘
传输层 ──────────► 传输层(TCP/UDP)
网络层 ──────────► 网络层(IP/ICMP)
数据链路层 ┐
物理层 ┘─────────► 网络接口层对比总结
| 维度 | OSI 七层模型 | TCP/IP 四层模型 |
|---|---|---|
| 性质 | ISO 制定的理论参考标准 | 工程实践中形成的事实标准 |
| 分层 | 7 层 | 4 层 |
| 网络层服务 | 支持面向连接与无连接两种服务 | 只提供无连接服务(IP) |
| 传输层服务 | 以面向连接为主 | TCP 与 UDP 并存,兼顾可靠与效率 |
| 通用性 | 通用性强,适合教学与分析 | 只覆盖 TCP/IP 协议族,但更实用 |
| 现状 | 理论教学与排错的分析框架 | 互联网的实际运行标准 |
实际学习与面试中常取折中的五层模型:物理层、数据链路层、网络层、传输层、应用层(即将 OSI 下两层合并、上三层合并)。
五、数据封装与解封装
发送方自上而下逐层封装(加头部),接收方自下而上逐层解封装(去头部):
发送方(封装)
应用层: [ 数据 ] → 报文
传输层: [ TCP头 | 数据 ] → 段
网络层: [ IP头 | TCP头 | 数据 ] → 包
链路层: [ 帧头 | IP头 | TCP头 | 数据 | 帧尾 ] → 帧
物理层: 0101101010… → 比特各层协议数据单元(PDU)名称:
| 层次 | PDU |
|---|---|
| 应用层 | 报文 |
| 传输层 | 段 |
| 网络层 | 包 |
| 数据链路层 | 帧 |
| 物理层 | 比特 |
六、常见协议速查表
| 协议 | 所属层次 | 作用 | 底层传输 |
|---|---|---|---|
| HTTP/HTTPS | 应用层 | 网页传输 | TCP |
| FTP | 应用层 | 文件传输 | TCP |
| SMTP/POP3/IMAP | 应用层 | 邮件收发 | TCP |
| DNS | 应用层 | 域名解析 | 以 UDP 为主(区域传送用 TCP) |
| DHCP | 应用层 | 动态分配 IP | UDP |
| SSH/Telnet | 应用层 | 远程登录 | TCP |
| SNMP | 应用层 | 网络设备管理 | UDP |
| TCP/UDP | 传输层 | 端到端传输 | — |
| IP/ICMP/ARP/IGMP | 网络层 | 寻址与路由 | — |
| 以太网/PPP/VLAN | 数据链路层 | 帧传输 | — |
七、面试高频问答
- OSI 与 TCP/IP 的区别? 层数不同(7 vs 4);OSI 是理论标准,TCP/IP 是事实标准;OSI 网络层支持两种服务、传输层以面向连接为主,TCP/IP 网络层仅无连接、传输层两种服务并存。
- 三次握手/四次挥手发生在哪一层? 传输层,属于 TCP 建立与释放连接的过程。
- ping 用的是什么协议? ICMP(网络层),基于 IP 工作但不承载用户数据。
- ARP 的作用? 将同一网段内的 IP 地址解析为 MAC 地址。
- 交换机和路由器的区别? 交换机是二层设备(基于 MAC 转发帧),路由器是三层设备(基于 IP 路由包,并能隔离广播域)。
- 集线器、交换机、路由器分别工作在哪一层? 集线器—物理层;交换机—数据链路层;路由器—网络层。
- 为什么 TCP/IP 模型没有会话层和表示层? 实际应用中,会话管理、加解密、压缩等功能由应用层协议自行解决(如 TLS),独立的会话/表示层在工程上并非必要。
八、记忆技巧
- 七层口诀:物数网传会表应
- PDU 自下而上:比特 → 帧 → 包 → 段 → 报文
- TCP/IP 四层口诀:链网传应(网络接口层、网络层、传输层、应用层)
- 每层回答的核心问题:
- 物理层:信号怎么传?
- 链路层:相邻节点之间怎么传?(MAC)
- 网络层:跨网络怎么找到目标主机?(IP)
- 传输层:数据交给主机上的哪个进程?(端口)
- 应用层:应用如何理解和使用这些数据?(协议语义)