目录
在上篇中,我们介绍了回退N帧协议。回退N帧协议的接收窗口尺寸只能等于一,因此接收方只能按序接收正确到达的数据分组;一个数据分组的误码就会导致其后续多个数据分组不能被接方按序接收而丢弃,尽管他们没有误码。
这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。
为了进一步提高性能,可设法只重传出现误码的数据分组;因此,接收窗口的尺寸不应再等于1而应大于1;以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议。
需要注意的是,选择重传协议为了使发送方仅重传出现差错的数据分组,接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认。
下面我们来举例说明选择重传协议的工作原理:
假设采用三个比特给分组编序号,因此序号的取值范围是0-7。
如下图所示,这是发送方的分组序号:
这是接收方的分组序号:
当序号增加到7时,下一个序号又从0开始发送。
窗口的尺寸的取值范围是,其中的3是构成分组序号的比特数量,本例取WT的值为4。
如下图所示,序号落在发送窗口内的这4个数据分组可以连续发送;而序号落在发送窗口外的数据分组不允许发送。
接收窗口的尺寸的取值,一般情况下可与发送窗口的尺寸的取值相同,在本例中其值为4。
如下图所示,序号落在接收窗口内的这4个数据分组允许接收;而序号落在接收窗口外的数据分组不允许接收。
发送方将序号落在发送窗口内的这4个数据分组依次连续发送出去,他们经过互联网的传输,陆续到达接收方,但其中的2号数据分组丢失了,只要序号落入接收窗口内且无误码的数据分组,接收方都会接收。
接收方接收0号和1号数据分组,并发送0号和1号确认分组,接收窗口向前滑动两个位置,这样就有4和5这两个新的序号落入接收窗口。
接收方接收3号数据分组,并发送3号确认分组;但接收窗口不能向前滑动,因为3号数据分组是未按序到达的数据分组 。
与接收窗口一样,这些确认分组经过互联网的传输,陆续到达发送方,发送方每按序收到一个确认分组,发送窗口就向前滑动一个位置,发送方接收0号和1号确认分组,发送窗口向前滑动两个位置,这样就有4和5这两个新的序号落入发送窗口,发送方将序号落入发送窗口的4号和5号数据分组发送出去,
发送方现在可以将已经收到确认的0号和1号数据分组从发送缓存中删除了;而接收方可择机将已按需接收的0号和1号数据分组交付上层处理。
发送方接收3号确认分组,但发送窗口不能向前滑动,因为这是一个未按序到达的确认分组,发送方还未收到他之前的2号确认分组;不过,需要记录3号数据分组已收到确认,这样该数据分组就不会超时重发。
4号和5号数据分组到达接收方,接收方接收他们,并发送4号和5号确认分组,但接收窗口不能向前滑动,因为他们是未按序到达的数据分组;接收方还未收到他们之前的2号数据分组。
假设在4号和5号确认分组的传输过程中,发送方针对2号数据分组的重传计时器超时了,发送方重传2号数据分组。
4号和5号确认分组陆续到达发送方,发送方接收他们,但发送窗口不能向前滑动,因为他们是未按序到达的确认分组,发送方还未收到他们之前的2号确认分组;不过需要记录,4号和5号数据分组已收到确认,这样他们就不会超时重发。
发送方之前重传的2号数据分组到达接收方,接收方接收该数据分组,并发送2号确认分组;接收窗口现在可以向前滑动四个位置,这样就有6、7、0、1这四个新的序号落入接收窗口?。
2号确认分组经过互联网的传输到达发送方,发送方接收该确认分组;发送窗口现在可以向前滑动四个位置,同样可以有6、7、0、1这四个新的序号落入发送窗口?。
发送方现在就可以继续将这四个序号的数据分组依次发送出去了。
接下来我们再来讨论一下选择重传协议的发送窗口和接收窗口的尺寸问题。
发送方的发送窗口的尺寸的取值范围是
其中n是构成分组序号的比特数量,若等于1,则与停止等待协议相同;
若大于,则会造成接收方无法分辨新旧数据分组的问题。
接收方的接收窗口尺寸
必须满足,若等于1,则与回退N帧协议相同;若大于,则没有意义。
下面我们就来看看,如果发送窗口和接收窗口的尺寸超过了它们的取值范围会出现什么样的情况:
我们还是采用三个比特给分组编序号,即序号0-7。
发送窗口的尺寸取最大值,接收窗口的尺寸也取最大值,也就是===4。
假设,我们故意将发送窗口尺寸设置为5,相应的将接收窗口尺寸也设置为5,看看会出现什么情况。
发送方将序号落入发送窗口内的0-4号这5个数据分组依次发送出去,他们经过互联网的传输依次到达接收方,接收方接收他们并发送0-4号确认分组,接收窗口向前滑动5个位置,这样就有5、6、7、0、1这5个新的序号落入接收窗口。
这些确认分组经过互联网的传输陆续到达发送方,但其中的0号确认分组丢失了,发送方接收1-4号确认分组,并记录1-4号数据分组已收到确认
发送窗口不能向前移动。一段时间后,0号数据分组的重传计时器超时了,发送方重传0号数据分组
该数据分组经过互联网的传输到达接收方,其序号0落在接收窗口内,接收方会接收它,但是接收方先前已经正确接收过该数据分组了,如果现在还要接收,那就会出现分组重复这种传输差错。
也就是说,如果发送窗口和接收窗口的尺寸超过了取值范围,就会使接收方无法分辨新旧数据分组,进而出现分组重复这种传输差错。
接下来我们来做一个有关选择重传协议的练习。
这是计算机专业考研全国统考计算机网络部分 2011年 的题35:
答案是选项B
我们来分析一下:
与回退N帧协议不同,选择重传协议不支持累积确认,接收方每接收一个数据帧就会发回相应的确认帧。题目所给收到1号帧的确认,而0号和2号帧依次超时;因此需要重传0号和2号帧。
至于发送方已发送的3号数据帧,题目并未给出他的任何其他线索,因此无需考虑3号帧。
我们再来画个示意图,以便更容易理解该题:
假设这是帧可用的序号:
这是发送窗口:
发送方将序号落在发送窗口内的0-3号数据帧依次发送出去,之后收到了1号帧的确认,而0号和2号帧的重传计时器超时,因此需要重传的就是0号和2号这两个帧。
END?
学习自:湖科大——计算机网络微课堂