分层把传输、寻址、路由、可靠性、安全等问题拆开:每层只解决自己的问题,向上提供服务、向下屏蔽细节。
OSI 是 ISO 提出的理想参考模型(七层),TCP/IP 是现实中实际运行的协议栈(四层,教学常按五层讲)。
| 层 | OSI(7 层) | TCP/IP(4 层) | 常见协议/设备 |
|---|---|---|---|
| 7 | 应用层 | 应用层 | HTTP、DNS、SMTP、DHCP |
| 6 | 表示层 | (并入应用层) | 加密、编码、压缩 |
| 5 | 会话层 | (并入应用层) | 会话建立/管理 |
| 4 | 传输层 | 传输层 | TCP、UDP |
| 3 | 网络层 | 网络层 | IP、ICMP、路由器 |
| 2 | 数据链路层 | 网络接口层 | 以太网、MAC、交换机 |
| 1 | 物理层 | 网络接口层 | 网线、光纤、集线器 |
对比:OSI 先有模型后有协议,5/6/7 三层几乎从不单独实现;TCP/IP 把它们合并成一层。OSI 胜在概念清晰,TCP/IP 胜在简单落地。
层与层之间是「垂直」调用(服务/接口),对等层之间是「水平」对话(协议)。数据在物理介质上流动,但逻辑上只有对等层在互相理解——这叫对等层通信。
发送端每层加本层头部(可能还有尾部)= 封装(encapsulation);接收端逐层剥掉 = 解封装(decapsulation)。
应用层: [ HTTP 数据 ]
传输层: [ TCP 首部 | HTTP 数据 ] ← 段 segment
网络层: [ IP 首部 | TCP 首部 | HTTP 数据 ] ← 包 packet
链路层: [ 帧头 | IP 首部 | ... | 帧尾 ] ← 帧 frame
物理层: 0101101001...(比特流) ← 比特 bit
代价是冗余与性能损耗——每层加头 + 层间拷贝;极端性能场景(内核旁路、RDMA)会「绕过分层」。