OSI 与 TCP/IP 分层模型
网络协议繁杂,如果不分层将无从设计与排障。OSI 七层模型与 TCP/IP 四层模型是理解网络的"两把尺子":前者是理论参考模型,后者是互联网真正使用的协议栈。面试高频题是"分层的意义、每层职责、数据在各层叫什么名字"。
为什么要分层
把庞大的网络问题按功能拆成若干层,每层只解决一类问题:
- 每层职责单一,可独立实现与演进;
- 层间通过标准接口通信,替换某一层实现不影响其他层(如换网卡不影响上层应用);
- 排障时可逐层定位,缩小问题范围。
OSI 七层模型
国际标准化组织(ISO)提出的参考模型,自下而上为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
| 层次 | 核心职责 | 代表协议/设备 |
|---|---|---|
| 应用层 | 面向用户的网络服务 | HTTP、FTP、SMTP、DNS |
| 表示层 | 数据格式转换与加密 | JPEG、加密编码 |
| 会话层 | 建立与管理会话 | 会话同步 |
| 传输层 | 端到端可靠传输 | TCP、UDP |
| 网络层 | 寻址与路由选择 | IP、路由器 |
| 数据链路层 | 相邻节点间成帧传输 | 以太网、交换机 |
| 物理层 | 比特流的物理传输 | 网线、集线器 |
OSI 是"理想蓝图",实际并未完全落地,主要价值在理论教学与对照。
TCP/IP 四层模型
TCP/IP 是互联网实际使用的协议栈,自上而下为:应用层、传输层、网络层、网络接口层。它与 OSI 的对应关系如下:
OSI 七层 TCP/IP 四层
应用层 ┐
表示层 ├─> 应用层 应用层(HTTP/DNS…)
会话层 ┘
传输层 传输层(TCP/UDP)
网络层 网络层(IP)
数据链路层 ┐
物理层 ┘─> 网络接口层 网络接口层(以太网)
可见 OSI 的会话层、表示层功能被并入应用层;而传输层独立成层,是 TCP/IP 把"进程到进程的通信"从网络层中抽离出来的关键设计。
数据在各层的名字
同一份用户数据,经过每一层会加上该层的头,称呼也随之变化,这是面试必考点:
| 所在层 | 数据单元名称 |
|---|---|
| 应用层 | 报文(数据,message/data) |
| 传输层 | TCP 段 segment / UDP 数据报 datagram |
| 网络层 | 分组/数据报 packet |
| 链路层 | 帧 frame |
封装与解封装
发送端自顶向下逐层加头(封装),接收端自底向上逐层去头(解封装),如同套信封:
发送过程:
应用数据
→ [TCP头 | 应用数据] 加传输层头
→ [IP头 | TCP头 | 应用数据] 加网络层头
→ [帧头 | IP头 | … | 帧尾] 链路层成帧后发到线缆
接收过程: 逐层剥头,最终把应用数据交给上层进程
各模型怎么选
- 背 OSI:回答"为什么分层"与理论题时引用。
- 用 TCP/IP:分析真实报文、抓包、协议栈工作时以它为准。
- 面试表述:讲清两者对应关系,强调 TCP/IP 更贴近现实即可。
小结:OSI 七层用于理论学习,TCP/IP 四层才是现实标准。记牢每层职责、数据单元名称与"加头/剥头"的封装流程,网络知识就有了清晰骨架。