您现在的位置是:首页 >技术交流 >计算机网络可靠传输的三种基本实现机制网站首页技术交流

计算机网络可靠传输的三种基本实现机制

大磊程序员(轻大) 2023-07-12 14:41:35
简介计算机网络可靠传输的三种基本实现机制

可靠传输的means

在数据链路层会给上层网络层提供可靠传输或者不可靠传输,不可靠传输是指检测到传输差错的时候只是丢弃该分组而不进行任何处理,而可靠传输会给发送者一个信号进行重发该分组。

以下给出的三种基本实现机制是提出一些问题,慢慢改进一些地方进行提出的,xdm可以根据这个进行理解和记忆。

First-停止-等待协议(SW)

第一个问题:接收方如何通知发送方该数据分组在传输过程中出现差错呢?我们可以让接收方给发送方一个确认分组ACK,当发送方收到来自接收方的确认分组的时候就知道分组传输完成,此时就可以进行下一个分组的传输,相应的如果在传输过程中发生一系列的差错,接收方检测到就会给发送方发送一个否认分组NAK,此时发送方收到这个否认分组的时候就会重新发送该分组。

第二个问题:如果在数据分组传输的过程中丢失了,那么接收方也就不会接收到该分组也就不会发出确认或者否认分组,这样该如何解决呢?

我们可以设置一个超时计时器,超时计时器的时间应该大于往返时间RTT。当若到了超时重传计时器的时间之后,发送方就可以重发该分组。

 第三个问题:如果在接收方发送确认分组的过程中由于某种原因,导致确认分组滞留了一段时间,此时已经到达了超时重传计时器的时间,那么发送方就会重新发送此分组,那么此时接收方如何区分这是新的分组还是重复的分组呢?

我们可以将分组就行0/1编号,根据该序号就可以判别是否为重复分组。如果为重复分组就可以丢弃。

类似的我们也可以将确认分组就行编号,这样发送方也就可以分别出是否为重复的分组。

四个问题,四个解决方法就可以提出了我们的停止-等待 协议(SW)

Second-回退N帧协议(GBN)

由于停止等待每次只能等确认分组之后才能再次发送下一个分组,故效率较低,因此我们想可以利用流水线方式来发送分组,这就引出了回退N帧协议(GBN)。

流水线方式一下子也不可能直接把分组全发送了,故所以需要控制每次发送分组的数量,我们这里引出一个发送窗口的概念,在发送方的发送窗口中的分组才能进行发送,所以我们也就可以给分组编号,落在发送窗口中的序号分组可以进行发送。如下图:

 发送窗口的大小和接收窗口的大小如何确定呢,在回退N帧协议当中接收窗口的大小指定为1,这与上面停止等待是一样的,而与下面的选择重传协议不同。

那么我们只需要确定发送窗口大小即可,一般的发送窗口的大小一般取1<=W<=(2的n次方)-1,n为给分组编号的比特数。

为什么要小于(2的n次方)-1?我们假设发送窗口的大小等于2的n次方,那么发送方发送这些分组给接收方,接收方给发送方发送这些分组的确认分组,但是如果在发送的过程中确认分组丢失了,那么发送方就会重传0-(2的n次方)-1个分组一共n个分组,由于这些分组的编号和下一批分组的编号相同,接收方无法分辨出新旧分组,故就限制发送窗口的大小为1<=W<=(2的n次方)-1,当W=1时即为停止等待协议。

回退N帧协议当中有个特殊的地方就在于累计确认,即接收方不一定要对收到的分组逐个进行确认,而是可以在收到好几个数据分组后,对按序到达的最后一个数据分组进行发送确认,ACKn表示序号为n及以前的所有数据分组都已经正确接收。接收方只能接收按序到达的分组

发送方每收到一个确认分组就会移动发送窗口,将发送过的分组缓存删除。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。