1. 首先我们知道TCP可靠传输原理中的停止等待协议,该协议就是发送方每发送一个报文段后就停止发送,一直等收到接收方的确认后再发送下一个报文段。
TCP通信是全双工的,我们假定A为发送方,B为接收方。A会有一个发送窗口,B有一个接收窗口。
发送窗口表示在没有收到B确认的情况下,A也可以连续把发送窗口的数据发送出去。但是已经发送过的数据在未收到确认之前,它还需要暂时保留,以便于超时重传时使用。发送窗口越大,它就可以在收到对方确认之前发送更多的数据,因而获得更高的传输效率。
2. 1比特滑动窗口协议发送窗口等于1,接收窗口等于1)
当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(ACK)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了,具有累计确认机制。
3. 回退N帧协议(发送窗口大于1,接收窗口大于1)
由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n协议。后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内仍收到确认帧,就要重发相应的数据帧。如:当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N帧。
4. 选择重传协议(发送窗口大于1,接收窗口大于1)
在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。另一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在接收缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。这种方法称为选择重发(SELECTICE REPEAT)。显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。