计算机网络(5.5)运输层- 停止等待协议

理想的传输条件特点:理想的传输条件有以下两个特点:

(1) 传输信道不产生差错。

(2) 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。

在这样的理想传输条件下,不需要采取任何措施就能够实现可靠传输。然而实际的网络都不具备以上两个理想条件。必须 使用一些可靠传输协议,在不可靠的传输信道实现可靠传输。

“停止等待”就是每发送完一个分组就停止发送, 等待对方的确认。在收到确认后再发送下一个分组。 全双工通信的双方既是发送方也是接收方。为了讨论问题的方便,我们仅考虑A发送数据而B接收数据并发送确认。因此A叫做发送方,而B叫做接收方。

1、无差错情况

A发送分组M1,发完就暂停发送,等待B的确认(ACK)。B收到了M1向A发送ACK。A在收到了对M1的确认后,就再发送下一个分组M2。

2、出现差错 

 在接收方B会出现两种情况:

1、B接收M1时检测出了差错,就丢弃M1,其他什么也不做 (不通知A收到有差错的分组)。

2、M1在传输过程中丢失了,这时B当然什么都不知道,也什么都不做。

在这两种情况下,B都不会发送任何信息。 如何保证B正确收到了M1呢?解决方法:超时重传:A为每一个已发送的分组都设置了一个超时计时器。 A只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组M2。

                 

3、确认丢失和确认迟到 

确认丢失:若B所发送的对M1的确认丢失了,那么A 在设定的超时重传时间内不能收到确认,但A并无法知道:是自己发送的分组出错、丢失了,或者是B发送的确认丢失了。因此A在超时计时器到期后就要重传M1。

假定B又收到了重传的分组M1。这时B应采取两个 行动:第一,丢弃这个重复的分组M1,不向上层交付。 第二,向A发送确认。不能认为已经发送过确认就不再发送,因为A之所以重传M1就表示A没有收到对M1的确认。

确认迟到:传输过程中没有出现差错,但B对分组M1的确认迟到 了。 A会收到重复的确认。对重复的确认的处理很简单:收下后就丢弃。 B仍然会收到重复的M1,并且同样要丢弃重复的M1,并重传确认分组。

     

在发送完一个分组后,必须暂时保留已发送的分组的副本,以备重发。分组和确认分组都必须进行编号。 超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。

自动重传请求ARQ:通常A最终总是可以收到对所有发出的分组的确认。 如果A不断重传分组但总是收不到确认,就说明通信线路太差,不能进行通信。

使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。像上述的这种可靠传输协议常称为自动重传请求ARQ  (Automatic Repeat reQuest)。意思是重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组。

4、信道利用率

停止等待协议的优点是简单,缺点是信道利用率太低。

                 

       

可以看出,当往返时间RTT远大于分组发送时间TD时,信道的利用率就会非常低。若出现重传,则对传送有用的数据信息来说,信道的利用率就还要降低。

流水线传输:为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输。流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一直有数据不间断地传送。由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。

            

猜你喜欢

转载自blog.csdn.net/qq_40452317/article/details/90050976