TCP实现可靠数据传输的技术(自用)
因特网的网络层服务(ip)服务是不可靠的,作为因特网两传输层的两匹“驮马”之一的TCP是如何实现可靠数据传输的呢?
一、可靠性传输协议
1,、首先介绍下ARQ(自动重传请求)协议,接收者收到报文,会回复肯定确认或否定确认,使发送方知道哪些内容被正确接收,哪些需要重复。
ARQ需要另外三种协议功能来处理存在比特差的情况:
(1).差错检测。
(2).接收方反馈。
(3).重传。
2、接收方发送方引入冗余数据分组,
3、倒计数定时器,每发一个分组就启动一个计时器。
二、流水线可靠数据传输协议
流水线技术大大提高信道利用率,不过也带来如下影响:
(1)、必须增加序号范围
(2)、双方要缓存多个分组
(3)、差错恢复:回退N步(GBN)、选择重传(SR)
三、超时间隔加倍
TCP每次重传都会将下一次超时间隔设为2倍。
四、快速重传
当收到3个冗余ACK后快速重传丢失的报文。
五、拥塞控制
发送方维护拥塞窗口(cwnd)
1、慢启动
开始设置MSS为1,每个RTT,MSS翻倍,检测到拥塞时,设置ssthrest=cwnd/2,当cwnd大于ssthrest时,每次增加1个MSS
2、拥塞避免
出现拥塞时(丢包或收到3个冗余ACK),设置ssthrest=cwnd/2,进入快速恢复状态
3、快速恢复
Tahoe(早期版本):回到慢启动状态,MSS设为1,设置ssthrest=cwnd/2
Reno:设为ssthrest。