OSI与TCP-IP模型
00:00
OSI与TCP-IP模型深度:协议层次、数据封装、PDU与协议数据单元分析
1. OSI 七层模型详解
1.1 各层功能
| 层级 | 名称 | 功能 | PDU | 设备 |
|---|---|---|---|---|
| 7 | 应用层 | 网络服务接口 | 数据 | 网关 |
| 6 | 表示层 | 数据格式转换 | 数据 | - |
| 5 | 会话层 | 会话管理 | 数据 | - |
| 4 | 传输层 | 端到端通信 | 段(Segment) | 防火墙 |
| 3 | 网络层 | 路由寻址 | 包(Packet) | 路由器 |
| 2 | 数据链路层 | 帧传输 | 帧(Frame) | 交换机 |
| 1 | 物理层 | 比特传输 | 比特(Bit) | 集线器 |
1.2 数据封装过程
应用数据
↓ + 应用层头
表示层PDU
↓ + 表示层头
会话层PDU
↓ + TCP/UDP头
传输层段(Segment)
↓ + IP头
网络层包(Packet)
↓ + 帧头+帧尾
数据链路层帧(Frame)
↓
物理层比特流(Bit)
2. TCP/IP 模型
2.1 四层结构
| TCP/IP 层 | 对应 OSI 层 | 协议 |
|---|---|---|
| 应用层 | 5/6/7 | HTTP, DNS, SMTP, FTP |
| 传输层 | 4 | TCP, UDP, SCTP |
| 网际层 | 3 | IP, ICMP, ARP |
| 网络接口层 | 1/2 | Ethernet, Wi-Fi |
2.2 TCP vs OSI
| 特性 | OSI | TCP/IP |
|---|---|---|
| 层数 | 7 | 4 |
| 先有模型 | 是 | 否 |
| 实用性 | 理论参考 | 实际标准 |
| 严格分层 | 是 | 较灵活 |
3. TCP 协议深度
3.1 TCP 首部格式
0 15 16 31
┌──────────┬──────────┬─────────────────────┐
│ 源端口(16) │ 目标端口(16)│ │
├──────────────────────┤ │
│ 序列号(32) │ │
├──────────────────────┤ │
│ 确认号(32) │ │
├───┬───┬──────┬───────┤ │
│HL │Rsv│Flags │窗口大小 │ │
├──────────┬──────────┤ │
│ 校验和(16)│紧急指针(16)│ │
└──────────┴──────────┴─────────────────────┘
标志位:
| 标志 | 含义 |
|---|---|
| URG | 紧急指针有效 |
| ACK | 确认号有效 |
| PSH | 接收方应尽快交付 |
| RST | 重置连接 |
| SYN | 同步序列号 |
| FIN | 释放连接 |
3.2 三次握手
客户端 服务器
│── SYN, seq=x ────────→│
│←─ SYN+ACK, seq=y, │
│ ack=x+1 ───────────│
│── ACK, seq=x+1, │
│ ack=y+1 ──────────→│
为什么三次:防止已失效的连接请求到达服务器。
3.3 四次挥手
客户端 服务器
│── FIN, seq=u ────────→│ (客户端关闭发送)
│←─ ACK, ack=u+1 ──────│ (服务器确认)
│ │ (服务器继续发送)
│←─ FIN, seq=w ────────│ (服务器关闭发送)
│── ACK, ack=w+1 ─────→│ (客户端确认)
│ [TIME_WAIT 2MSL] │
TIME_WAIT:等待 2MSL(最大报文段生存时间),确保最后一个 ACK 到达。
3.4 滑动窗口
- rwnd:接收方通告窗口
- cwnd:拥塞窗口
3.5 TCP 状态机
CLOSED → SYN_SENT → ESTABLISHED
↓
CLOSED → LISTEN → SYN_RCVD → ESTABLISHED
ESTABLISHED → FIN_WAIT_1 → FIN_WAIT_2 → TIME_WAIT → CLOSED
ESTABLISHED → CLOSE_WAIT → LAST_ACK → CLOSED
4. UDP 协议
4.1 UDP 首部
┌──────────┬──────────┐
│ 源端口(16)│目标端口(16)│
├──────────┬──────────┤
│ 长度(16) │校验和(16) │
└──────────┴──────────┘
仅 8 字节首部,无连接、无确认、无重传。
4.2 TCP vs UDP
| 特性 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接 | 无连接 |
| 可靠性 | 可靠 | 不可靠 |
| 顺序 | 有序 | 无序 |
| 流控 | 有 | 无 |
| 拥塞控制 | 有 | 无 |
| 速度 | 较慢 | 快 |
| 首部 | 20~60字节 | 8字节 |
| 适用 | 文件传输 | 实时音视频 |
5. IP 协议
5.1 IPv4 首部
┌───┬───┬──────┬──────────┐
│VER│IHL│TOS │总长度(16) │
├───┴───┼──────┼──────────┤
│标识(16)│Flags │片偏移(13) │
├───────┼──────┼──────────┤
│TTL(8) │协议(8)│校验和(16) │
├───────┴──────┴──────────┤
│源IP地址(32) │
├─────────────────────────┤
│目标IP地址(32) │
└─────────────────────────┘
5.2 IPv6 改进
| 特性 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32位 | 128位 |
| 首部 | 可变 | 固定40字节 |
| 分片 | 路由器可分片 | 仅源端分片 |
| 安全 | 可选 | 内置IPsec |
| 配置 | 手动/DHCP | 自动配置 |
5.3 子网划分
其中 为借用的位数, 为剩余主机位。
示例:192.168.1.0/24 划分为4个子网:
| 子网 | 网络地址 | 可用范围 | 广播地址 |
|---|---|---|---|
| 1 | 192.168.1.0/26 | .1~.62 | .63 |
| 2 | 192.168.1.64/26 | .65~.126 | .127 |
| 3 | 192.168.1.128/26 | .129~.190 | .191 |
| 4 | 192.168.1.192/26 | .193~.254 | .255 |
6. ARP 与 ICMP
6.1 ARP 协议
将 IP 地址解析为 MAC 地址:
主机A: 谁有 192.168.1.1?告诉 192.168.1.100(广播)
主机B: 192.168.1.1 的 MAC 是 aa:bb:cc:dd:ee:ff(单播)
ARP 缓存:
arp -a
ip neigh show
6.2 ICMP 协议
| 类型 | 代码 | 含义 |
|---|---|---|
| 0 | 0 | Echo Reply |
| 3 | 0~15 | 目标不可达 |
| 5 | 0~3 | 重定向 |
| 8 | 0 | Echo Request |
| 11 | 0~1 | 超时 |
Ping 原理:发送 ICMP Echo Request,等待 Echo Reply。
Traceroute 原理:发送 TTL 递增的 IP 包,通过 ICMP 超时消息确定路径。