TCP四大特性面试回答引导
重传机制
【超时重传】,默认重传5次
【快速重传】,收到三次相同的ACK,进行快速重传
SACK标识接收数据,可识别历史数据和重复接收数据
滑动窗口
允许发送方在未收到全部 ACK 的情况下连续发送多个 TCP 段,通过累计应答确认上一批数据都完全被接收了(以最新的ACK为标准,也就是接收到最新的ACK就说明前面的数据都收到了,没必要接收所有的ACK)
滑动窗口的大小取决于接收方,并且是会动态变化的
流量控制
TCP 提供一种机制可以让「发送方」根据「接收方」的实际接收能力控制发送的数据量,这就是所谓的流量控制
目的:解决接收方处理能力不足的问题,防止发送方发送数据过快,导致接收方缓冲区溢出
非0窗口通知丢失的死锁问题->【持续计数器】+【窗口探测报文】解决死锁
什么是糊涂窗口综合征
糊涂窗口综合征解决方案:窗口关闭->接收方不通告小窗口,发送方启用Nagle算法延迟发送(合并小数据为大数据一起发送)
拥塞控制
主要是慢启动门限和拥塞窗口cwnd大小,当出现【重传机制】的时候就表示出现了拥塞
目的:避免网络波动导致数据传输出现问题,当网络发送拥塞时,TCP 会自我牺牲,降低发送的数据量
了解决网络波动问题所以有了cwnd拥塞窗口,拥塞控制的目的是避免「发送方」的数据填满整个网络
拥塞窗口,发送窗口,接收窗口是不同的
如果出现了重传【超时重传】【快速重传】,就说明网络出现了拥塞
慢启动:ACK个数++,cwnd++
拥塞窗口超过慢启动阈值
拥塞避免:ACK++,cwnd+=1/cwnd
当丢失了ACK进行重传,开始拥塞发生
【超时重传】:cwnd恢复初始值,慢启动阈值=cwnd/2 (如果没有快速重传甚至进入了超时重传)
【快速重传】:cwnd=cwnd/2,慢启动阈值=cwnd
【快速重传】后进入【快速恢复】
收到的重复的ACK++,cwnd++
收到新的ACK,说明网络波动没问题了,直接将cwnd变回原样