TCP重传
重传类型
1. 超时重传
场景:模拟网络延迟导致ACK超时
触发条件:设置RTT > RTO
预期行为:
发送端在RTO后重传数据包
重传后RTO值按指数退避增加
验证指标:
ss -i
中的rto
值变化/proc/net/netstat
中的TCPTimeouts
2. 快速重传
场景:模拟少量数据包丢失
触发条件:连续3个重复ACK
预期行为:
发送端在收到3个重复ACK后立即重传
拥塞窗口减半
验证指标:
ss -i
中的retrans
计数Wireshark中快速重传标志
3. SACK重传
场景:模拟多个非连续数据包丢失
触发条件:接收端启用SACK选项
预期行为:
发送端只重传丢失的数据段
不重传已成功接收的数据
验证指标:
TCP头部SACK选项分析
重传包序列号验证
4. DSACK测试用例
场景:模拟重复接收数据包
触发条件:发送端重传但原始包未丢失
预期行为:
接收端发送DSACK通知重复接收
发送端调整RTO估计
验证指标:
DSACK选项分析
RTO值变化
5. 拥塞控制交互测试
场景:重传与拥塞控制协同
触发条件:连续重传事件
预期行为:
拥塞窗口按算法调整
慢启动阈值更新
验证指标:
ss -i
中的cwnd
和ssthresh
BBR状态转换