1. 详细解释TCP的拥塞控制机制,包括各个算法的工作原理和相互关系?
答案: TCP拥塞控制是一套完整的机制,主要包括四个核心算法:
慢启动:
- 连接初期cwnd从1个MSS开始,每收到一个ACK增加1个MSS
- 呈指数增长:1→2→4→8...
- 目的:探测网络容量
拥塞避免:
- cwnd达到慢开始阈值(ssthresh)后进入此阶段
- 每个RTT内cwnd增加1个MSS(线性增长)
- 更保守的增长策略
快重传:
- 收到3个重复ACK立即重传,不等待RTO超时
- 快速恢复丢失的数据包
快恢复:
- ssthresh设为当前cwnd的一半
- cwnd设为新的ssthresh值
- 避免直接回到慢开始状态
相互关系: 这四个算法协同工作,根据网络反馈动态调整发送速率,平衡网络利用率和拥塞风险。
2. TCP如何处理数据包乱序到达的情况?与SACK的关系?
答案: TCP使用序列号和缓冲机制处理乱序数据包:
基本处理流程:
- 接收方按序列号对接收的数据包排序
- 乱序的数据包暂时缓存
- 发送重复ACK,指明期望接收的下一个序列号
- 当缺失的数据包到达后,按正确顺序交付给应用层
SACK的作用:
- 标准ACK只能告知期望的下一个序列号