【计算机网络】第3章:传输层—面向连接的传输:TCP
目录
一、PPT
二、总结
TCP(传输控制协议)详解
1. 概述
核心特性:
2. TCP报文段结构
关键字段说明:
3. TCP连接管理
3.1 三次握手(建立连接)
3.2 四次挥手(终止连接)
4. 可靠传输机制
4.1 序列号与确认号
4.2 重传机制
4.3 滑动窗口协议
5. 流量控制
接收窗口(rwnd)
零窗口探测
6. 拥塞控制
核心算法:
关键参数:
7. 高级特性
7.1 选项字段
7.2 定时器管理
8. TCP优缺点
优点:
缺点:
9. 典型应用场景
一、PPT
二、总结
TCP(传输控制协议)详解
1. 概述
TCP(Transmission Control Protocol) 是计算机网络中面向连接的、可靠的、基于字节流的传输层协议。它在IP协议提供的不可靠数据报服务基础上,为应用程序提供可靠的端到端通信服务。
核心特性:
-
面向连接:通信前需建立连接(三次握手)
-
可靠传输:确保数据完整有序到达
-
流量控制:防止接收方被数据淹没
-
拥塞控制:避免网络过载
-
全双工通信:双方可同时发送和接收数据
-
字节流服务:无固定消息边界
2. TCP报文段结构
0 1 2 30 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 源端口 (16位) | 目的端口 (16位) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 序列号 (32位) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 确认号 (32位) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 数据偏移 | 保留 | 控制位 | 窗口大小 |
| (4位) | (6位)| (URG|ACK|PSH| (16位) |
| | | RST|SYN|FIN) | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 校验和 (16位) | 紧急指针 (16位) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 选项 (长度可变,最多40字节) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 数据 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
关键字段说明:
-
源/目的端口:标识发送/接收进程
-
序列号:本报文段第一个字节的编号
-
确认号:期望收到的下一个字节序号
-
控制位:
-
URG:紧急指针有效
-
ACK:确认字段有效
-
PSH:接收方应立即推送数据
-
RST:重置连接
-
SYN:同步序列号(建立连接)
-
FIN:发送方结束传输
-
-
窗口大小:接收窗口大小(流量控制)
-
校验和:首部和数据的校验值
-
紧急指针:紧急数据结束位置
3. TCP连接管理
3.1 三次握手(建立连接)
-
SYN:客户端发送SYN报文(随机序列号x)
-
SYN+ACK:服务器响应SYN-ACK(随机序列号y,确认号x+1)
-
ACK:客户端发送ACK确认(序列号x+1,确认号y+1)
3.2 四次挥手(终止连接)
-
FIN:主动关闭方发送FIN报文
-
ACK:被动方确认FIN
-
FIN:被动方发送自己的FIN
-
ACK:主动方确认FIN(等待2MSL后关闭)
TIME_WAIT状态:主动关闭方需等待2MSL(Maximum Segment Lifetime)时间,确保最后ACK到达
4. 可靠传输机制
4.1 序列号与确认号
-
每个字节都有唯一序列号
-
确认号采用累计确认:表示该序号之前的所有字节已正确接收
4.2 重传机制
-
超时重传:为每个报文段设置计时器
-
快速重传:收到3个重复ACK立即重传
4.3 滑动窗口协议
-
发送窗口:包含已发送未确认和可发送的数据
-
接收窗口:指示剩余缓冲区大小(流量控制)
5. 流量控制
接收窗口(rwnd)
-
通过TCP首部"窗口大小"字段通告接收方缓冲区余量
-
动态调整发送速率,防止接收方溢出
零窗口探测
-
当接收窗口=0时,发送方周期性发送探测报文
6. 拥塞控制
核心算法:
阶段 | 拥塞窗口(cwnd)变化 | 触发条件 |
---|---|---|
慢启动 | 指数增长(每RTT翻倍) | 初始阶段 |
拥塞避免 | 线性增长(每RTT +1 MSS) | cwnd > ssthresh |
快速重传 | cwnd = cwnd/2 + 3 | 收到3个重复ACK |
快速恢复 | 线性增长 | 快速重传后 |
关键参数:
-
ssthresh(慢启动阈值):初始值较大,超时后设为当前cwnd一半
-
AIMD原则:加性增(Additive Increase),乘性减(Multiplicative Decrease)
7. 高级特性
7.1 选项字段
-
MSS(最大报文段大小):协商最大分段长度
-
窗口缩放因子:扩展窗口大小(最高2^30字节)
-
时间戳:精确RTT测量和防序列号回绕(PAWS)
7.2 定时器管理
-
重传定时器:数据包丢失检测
-
持续定时器:零窗口探测
-
保活定时器:检测空闲连接状态
-
TIME_WAIT定时器:2MSL等待
8. TCP优缺点
优点:
✅ 数据可靠传输
✅ 保证数据顺序
✅ 动态流量控制
✅ 自适应拥塞控制
✅ 广泛兼容性
缺点:
❌ 连接建立开销(三次握手)
❌ 首部较大(最小20字节)
❌ 队头阻塞问题
❌ 高延迟网络效率低
❌ 缺乏多路复用原生支持
9. 典型应用场景
-
Web浏览(HTTP/HTTPS)
-
文件传输(FTP)
-
电子邮件(SMTP/POP3/IMAP)
-
远程访问(SSH)
-
数据库访问
对比UDP:TCP适合需要可靠传输的场景(如文件传输),UDP适合实时性要求高的场景(如视频流)