计算机网络 传输层 TCP协议的可靠传输
TCP的可靠传输主要依据滑动窗口和超时重传机制,TCP对待发送的数据按字节进行编序,比如0号字节,1号字节,2号字节......
TCP的滑动窗口
发送窗口:当前允许发送的字节序号范围,如10到50
接收窗口:当前允许接收的字节序号范围
TCP基于滑动窗口协议实现可靠传输和流量控制,滑动窗口以 字节为单位
基本过程
- 发送端A在特定时间内把发送窗口N1--N2的数据发送出去,等待接收端返回确认号
- 接收端B接收到数据,数据确实是在接收窗口M1--M2内,返回确认号X,证明自己成功收到所有序号为小于X的数据
- 发送窗口相应前移以发送X后面数据,接收窗口前移以接收X后面数据
发送窗口
在没有收到对方应答的情况下,可以连续把窗口内的数据发送出去
窗口大小的确定:对方发来的窗口大小、拥塞控制
根据收到对方的TCP报文段头部中“acknowledge number”字段,窗口向前滑动移动
接收窗口
窗口内的数据是允许接收的
窗口后沿以外是已正确接收并交付上层的数据
整个流程
TCP的超时重传
TCP每发送一个报文段,就对这个报文段设置一次计时器,如果计时器设置的重传时间到,但还没有收到确认,就要重传该报文段。
超时时间的设置是一个复杂的问题,IP层提供数据报服务,每个数据报所选择的路由都可能有变化,导致传输层的往返时间变化较大。
TCP采用一种自适应算法计算超时重传时间:加权平均往返时间RTTs
注:RTT—Round Trip Time
超时重传时间RTO(Retransmission Time-Out)
RTO应该略大于RTTs(可以思考为什么)
采用如下公式计算: