字节流传输状态分类与滑动窗口的概念:
①TCP协议使用以字节为单位的滑动窗口协议,来控制字节流的发送、接收、确认与重传过程。
②接收窗口的大小由接收端根据缓存剩余空间的大小,以及应用进程读取数据的速度来决定。发送窗口的大小取决于接收窗口的大小。
③发送窗口和接收窗口:发送窗口等于第二类和第三类的字节数之和=9+6=15。可用窗口长度等于第三类的字节数=5。即“尚未发送,但是接收端已经做好接受准备的字节”,表示发送端可以随时发送的字节数。如果没有别的问题出现,发送端可以立即发送可用窗口6字节,那么第三类字节就变成了第二类字节,等待接收端确认。
④处理确认并滑动发送窗口:一段时间后,接收端向发送端发送一个报文,确认序号是20~25字节,保持发送窗口值仍然为15,那么将窗口向左滑动5个字节。
⑤由上述讨论,TCP滑动窗口协议有以下特点:TCP滑动窗口是面向字节的,它可以起到差错控制的作用;接收端可以在任何时候发送确认,窗口大小可以由接收端根据需要增加或减小;发送窗口值可以小于接收窗口值,不能超过接收窗口值,发送端可以根据自身的需要来决定。
选择重传策略:
①接收字节流序号不连续的处理方法有两种:拉回重传与选择重传方式。
②拉回方式:拉回重传方式的效率很低。。:比如第二个报文段丢失,则不论后面的报文段是否成功接收,都要求从第二个报文段开始,重新传送后面的报文段。
③选择重传:选择重传只需要发送端重传丢失的报文段,而不需要重传后面所有的报文段。
④重传计时器:利用重传计时器来控制报文确认与等待重传的时间。。。:发送端TCP在发送一个报文时,首先将它的一个报文的副本放入重传队列,同时启动一个重传计时器。重传计时器设定一个值后开始倒计时,在重传计时器倒计时到0之前收到确认,表示该报文传输成功,如果在重传计时器倒计时到0时没有收到确认,表示该报文传输失败,准备重传该报文。