传输层 可靠传输的工作原理-停止等待协议

可靠传输的工作原理


  • TCP可靠传输的实现-停止等待协议
  • 连续ARQ协议和滑动窗口协议-改进的停止等待协议

上面是两种可靠传输的实现方法,第一种是停止等待协议,第二种是改进的停止等待协议也就是连续ARQ协议和滑动窗口协议,这两种协议相结合组成的改进的停止等待协议。

现在使用的是连续ARQ协议和滑动窗口协议,只有知道停止等待协议才能知道连续ARQ协议和滑动窗口协议的优点。

理想的传输条件特点


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

1.传输信道不产生差错。(不会出现乱序的现象,或者丢包)

2.不管发送方以多快的速度发送数据,接收方总是来得及处理收到的到数据。(接收方处理不过来,让发送方发慢一点,这个时候就需要TCP协议来实现可靠传输和流量控制)

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

停止等待协议


  • “停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
  • 全双工通信的双方既是发送方也是接收方。

为了讨论问题的方便,我们仅考虑A发送数据,而B接收数据并发送确认。因此A叫做发送方,而B叫做接收方。

 A发送一个报文,B收到之后给个确认,说自己收到了,然后就开始发第二个,同理确认之后发送第三个。

A发送的每一个报文B都能够收到,同时确认报文A也能够收到,没有任何丢包的情况,这是无差错的情况,这就是停止等待,发一个就停止不发送第二个,等着第一个确认收到了才发第二个,这就叫做停止等待。

如果A发的时候数据包丢了,A发完数据包还不能丢掉,还需要等着,等了一个往返时间,还没有收到,那么就认为丢了,那么再将第一个重新发一遍,只要没有收到你的确认就重发,就认为你没有收到,这个重传是超时之后就自动重传了,不需要告诉A没有收到。(去的时候丢了数据包,会发生自动重传)

重传之后收到返回确认收到了,然后就按照上面的继续发第二个。

A发送的时候B收到了,但是确认丢了,这个时候A等了一会,到底收到没A也不知道,超时之后自动再重传一遍,这样B就重复收到了,那么就会丢弃一个重复的这个,然后再给他一个确认,那么就应该让A发送第二个了。可以看到确认丢了之后也会重传。

还有一种是确认迟到,A发了一个,确认的路可能走的比较远,在超时之后觉得应该到了,但是还是没有到,然后再发一遍,然后收到重复的M1那么就丢弃重复的,然后就给他发个确认,然后就继续发第二个数据包了,发完第二个数据包,发现第一个数据包的确认来了,收到了迟到的确认,它什么都不做,就直接丢掉了。

上面就是丢包之后相应处理,网络不可靠那么也能够保证每个数据包都能够收到,没有收到就来回重传即可。

注意


在发送完一个分组后,必须暂时保留已发送的分组的副本,以备重发。(利用上面的方式发送端每发送一个数据包,不能够丢,还等着对方告诉收到之后才能删除掉发送第二个。)

分组和确认分组都必须进行编号。(发送的每一个包都必须有编号,要不然接收端怎么知道呢)

超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。

自动重传请求ARQ


通常A最终总是可以收到对所有发出的分组的确认。如果 A 不断重传分组但总是收不到确认,就说明通信线路太差,不能进行通信。使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。(如果发送端一直发,一个确认也回不来,那说明这个网不行)

像上述的这种可靠传输协议常称为自动重传请求 ARQ

(Automatic Repeat reQuest)。意思是重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组。

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/125314341
今日推荐