TCP/IP 传输层详解
TCP/IP 传输层详解
传输层(Transport Layer)是 TCP/IP 模型的第四层(对应 OSI 模型的传输层),核心功能是实现 端到端(进程到进程)的可靠通信。主要协议包括:
- TCP(传输控制协议):面向连接、可靠传输
- UDP(用户数据报协议):无连接、高效传输
核心功能
功能 | TCP | UDP |
---|---|---|
连接管理 | 三次握手建立连接,四次挥手断开 | 无连接 |
可靠性 | 确认应答、重传、排序 | 无可靠性保证 |
流量控制 | 滑动窗口机制 | 无 |
拥塞控制 | 慢启动、拥塞避免等算法 | 无 |
数据单元 | 段(Segment) | 数据报(Datagram) |
头部开销 | 20~60 字节 | 8 字节 |
TCP 协议深度解析
1. TCP 段结构
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options (if any) | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- 关键字段:
- 序列号(Seq):数据字节流的编号
- 确认号(Ack):期望接收的下一个字节编号
- 标志位:SYN(建立连接)、ACK(确认)、FIN(断开连接)、RST(重置连接)
- 窗口大小(Window):流量控制参数
2. TCP 连接管理(三次握手与四次挥手)
为什么需要三次握手?
防止失效的连接请求突然传到服务器(网络延迟导致的历史连接问题)
3. TCP 可靠性机制
- 关键机制:
- 序列号/确认号:确保数据有序到达
- 超时重传:RTT动态计算超时时间
- 滑动窗口:动态调整发送速率(流量控制)
- 选择性确认(SACK):高效重传丢失片段
4. TCP 拥塞控制
- 阶段说明:
- 慢启动:窗口从1 MSS开始指数增长
- 拥塞避免:窗口线性增长(加法增大)
- 快速重传:收到3个重复ACK立即重传
- 快速恢复:窗口减半后直接进入拥塞避免
UDP 协议解析
1. UDP 数据报结构
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- 特点:
- 无连接:直接发送数据
- 无可靠性机制:不保证顺序和到达
- 低延迟:头部仅8字节
- 支持广播/多播
2. UDP 通信流程
端口(Port)机制
核心作用:区分同一主机上的不同应用程序
- 常见端口:
- HTTP: 80, HTTPS: 443
- FTP: 21, SSH: 22
- DNS: 53, DHCP: 67/68
TCP/UDP 应用场景对比
场景 | 推荐协议 | 原因 |
---|---|---|
网页浏览 | TCP | 需要可靠传输HTML/CSS/JS |
视频直播 | UDP | 容忍丢包,追求低延迟 |
文件传输 | TCP | 数据完整性要求高 |
DNS查询 | UDP | 短报文,快速响应 |
在线游戏 | UDP | 实时性优先于可靠性 |
电子邮件 | TCP | 保证邮件内容完整到达 |
Mermaid 综合原理图
TCP 端到端通信全流程
💡 传输层核心价值:
- 为应用层屏蔽网络复杂性(丢包、乱序、拥塞)
- 通过端口机制实现多路复用
- TCP/UDP 互补满足不同场景需求
“TCP提供可靠传输的管道,UDP提供高效的传输通道”