网络协议是计算机网络中通信双方必须遵守的规则和约定集合。
1. 网络拓扑
┌─────────────────────────────────────────────────────────────────┐
│ OSI 七层 vs TCP/IP 四层 vs 五层模型 │
│ │
│ OSI 七层 TCP/IP 四层 五层模型(教学) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 7 应用层 │ │ │ │ 5 应用层 │ │
│ │ 6 表示层 │ ───→ │ 应用层 │ ───→│ │ │
│ │ 5 会话层 │ │ │ │ │ │
│ ├──────────┤ ├──────────┤ ├──────────┤ │
│ │ 4 传输层 │ ───→ │ 传输层 │ ───→│ 4 传输层 │ │
│ ├──────────┤ ├──────────┤ ├──────────┤ │
│ │ 3 网络层 │ ───→ │ 网络层 │ ───→│ 3 网络层 │ │
│ ├──────────┤ │ │ ├──────────┤ │
│ │ 2 链路层 │ ───→ │ 网络接口层│ ───→│ 2 链路层 │ │
│ ├──────────┤ │ │ ├──────────┤ │
│ │ 1 物理层 │ │ │ │ 1 物理层 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ 封装与解封装(洋葱模型): │
│ 发送方: 应用数据 → +TCP头 → +IP头 → +帧头 → 比特流 │
│ 接收方: 比特流 → -帧头 → -IP头 → -TCP头 → 应用数据 │
│ 每层只对同层有意义(TCP头只有收发双方TCP栈能理解) │
└─────────────────────────────────────────────────────────────────┘
2. 协议三要素
| 要素 | 说明 | 类比 |
|---|---|---|
| 语法 | 数据格式与编码 | "信封的格式" |
| 语义 | 各字段的含义与操作 | "收件人地址表示送达目标" |
| 时序 | 事件顺序与同步规则 | "先发请求后等响应" |
3. 分层模型的设计哲学
3.1. 为什么分层?
分层是管理复杂度的核心策略:
- 关注点分离:每层只解决一类问题,不与其他层耦合
- 复用:上层可调用下层提供的多种服务(HTTP 可 over TCP,也可 over QUIC)
- 独立演进:TCP/IP 协议栈升级不影响 HTTP 应用代码
- 透明组合:上层不需要知道下层实现细节
专家视角:分层不是目的,是手段。过度分层是反模式——OSI 七层模型中会话层/表示层在实践中几乎空壳,因为应用层自己处理了会话和编码。TCP/IP 四层模型更务实,把 OSI 5-6-7 合并为应用层。
3.2. 封装与解封装
发送方(封装) 接收方(解封装)
应用层 | HTTP 数据 | HTTP 数据
| ↓ 加 HTTP 头 | ↑ 去 HTTP 头
传输层 | TCP 头 + HTTP 数据 | TCP 头 + HTTP 数据
| ↓ 加 TCP 头 | ↑ 去 TCP 头
网络层 | IP 头 + TCP 头 + HTTP 数据 | IP 头 + TCP 头 + HTTP 数据
| ↓ 加 IP 头 | ↑ 去 IP 头
链路层 | 帧头 + IP 头 + TCP 头 + HTTP 数据 | 帧头 + IP 头 + TCP 头 + HTTP 数据
| ↓ 加帧头/帧尾 | ↑ 去帧头/帧尾
物理层 | 0110100... | 0110100...
专家视角:封装是洋葱模型——每层把自己的头包在数据外面。解封装是剥洋葱——从下往上逐层去头。每层的头只对同层有意义——TCP 头只有收发双方的 TCP 栈能理解。
4. OSI 七层模型
| 层 | 名称 | 典型协议 | 数据单位 | 设备 |
|---|---|---|---|---|
| 7 | 应用层 | HTTP协议/FTP协议/SMTP协议/DNS协议 | 消息 | — |
| 6 | 表示层 | TLS协议/编码/压缩 | 消息 | — |
| 5 | 会话层 | — | 消息 | — |
| 4 | 传输层 | TCP协议/UDP协议 | 段/数据报 | — |
| 3 | 网络层 | IP/ICMP协议/ARP协议 | 包 | 路由器 |
| 2 | 数据链路层 | 以太网/PPP协议 | 帧 | 交换机 |
| 1 | 物理层 | 以太网/光纤/无线 | 比特 | 集线器/中继器 |
5. TCP/IP 四层模型
| 层 | 对应 OSI | 典型协议 | 数据单位 |
|---|---|---|---|
| 应用层 | 5-7 | HTTP/FTP/SMTP/DNS/SSH | 消息 |
| 传输层 | 4 | TCP/UDP | 段/数据报 |
| 网络层 | 3 | IP/ICMP/ARP | 包 |
| 网络接口层 | 1-2 | 以太网/PPP/Wi-Fi | 帧/比特 |
6. OSI vs TCP/IP
| 对比维度 | OSI | TCP/IP |
|---|---|---|
| 层数 | 7 | 4 |
| 设计驱动 | 理论先行 | 实践先行 |
| 会话/表示层 | 独立分层 | 合入应用层 |
| 网络接口层 | 拆为物理+链路 | 合为一层 |
| 实际部署 | 几乎未实现 | 互联网基石 |
专家视角:OSI 模型的价值在于教学和概念框架,TCP/IP 的价值在于实际运行。面试时说"七层模型"是理论素养,工程中用"四层模型"是实践素养。
7. 五层模型(折中)
教学常用五层模型(合并 OSI 5-6-7 为应用层,保留物理/链路分离):
| 层 | 名称 | 典型协议 |
|---|---|---|
| 5 | 应用层 | HTTP/FTP/SMTP/DNS |
| 4 | 传输层 | TCP/UDP |
| 3 | 网络层 | IP/ICMP/ARP |
| 2 | 数据链路层 | 以太网/PPP |
| 1 | 物理层 | 以太网/光纤 |