3.4.4 可靠传输的实现机制:退回重传协议
2023年3月16日 下午 9:25|13分钟36秒
关键词:
重传、序号、超时、传输、互联网、误码、数据帧、小结、数据分组、重传协议、计算机网络、分组序号、工作原理
文字记录:
同学们好,欢迎大家来到我的计算机网络微课堂。在上节课中,我们介绍了回退 n 帧协议。回退 n 帧协议的接收窗口尺寸 w r 只能等于1,因此接收方只能按序接收正确到达的数据分组。一个数据分组的物码就会导致其后续多个数据分组不能被接收方按续接收而丢弃,尽管他们没有物码,这必然会造成发送方对这些数据分组的超时重传,显然,这是对通信资源的极大浪费。
为了进一步提高性能,可设法只重传出现物码的数据分组。因此,接收窗口的尺寸 w r 不应再等于1,而应大于1,以便接收方先收下失序到达但无误码并且序号落在签收窗口内的那些数据分组,等到所觉分组收齐后,再一并送交上层。这就是本节课所要介绍的选择重传协议。需要注意的是,选择重传协议,为了使发送方仅重传出现差错的数据分组,接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认。下面我们来举例说明选择重传协议的工作原理。假设采用 3 个比特给分组编序号,因此序号的取值范围是 0- 7,如图所示,这是发送方的分组序号,这是接收方的分组序号。当序号增加到70,下一个序号又从 0 开始。发送窗口的尺寸 WT 的取值范围是大于 1 小于等于 2 的 3- 1 次,其中的 3 是构成分组序号的比特数量,本例取 WT 的值为4。如图所示,序号落在发送窗口内的这 4 个数据分组可以连续发送,而序号落在发送窗口外的数据分组不允许发送。接收窗口的尺寸 WR 的取值一般情况下可与发送窗口的尺寸 WT 的取值相同,在本例中,其值为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 号确认分组接触窗口现在可以向前滑动 4 个位置,这样就有 6701 这四个新的序号落入接收窗口。
2 号确认分组经过互联网的传输到达发送方,发送方接收该确认分组发送窗口现在可以向前滑动 4 个位置,这样就有六七零一这四个新的序号落入发送窗口。发送方现在就可以继续将这 4 个序号的数据分组依次发送出去了。接下来我们再来讨论一下选择重传协议的发送窗口和接收窗口的尺寸问题。发送方的发送窗口尺寸 WT 必须满足大于 1 小于等于 2 的 n 减 1 次,其中 n 是构成分组序号的比特数量。若 WT 等于1,则与停止等待协议相同。若 WT 大于 2 的 n 减 1 次,则会造成接收方无法分辨新旧数据分组的问题。接收方的接收窗口尺寸 WR 必须满足大于 1 小于等于WT。若 w r 等于1,则与回退 n 帧协议相同。若 w r 大于 w t,则没有意义。下面我们就来看看如果发送窗口和接收窗口的尺寸超过了它们的取值范围,会出现什么样的情况。我们还是采用三个比特给分组边序号,即序号 0- 7。发送窗口的尺寸 WT 取最大值,接收窗口的尺寸 WR 也取最大值,也就是 WT 等于 WR 等于 2 的 3- 1 次等于4。假设我们故意将发送窗口尺寸 WT 设置为5,相应的将接收窗口尺寸 WR 也设置为5,看看会出现什么情况。发送方将序号落入发送窗口内的 0- 4 号,这 5 个数据分组依次发送出去,他们经过互联网的传输依次到达接收方,接收方接收他们并发送 0- 4 号确认分组,接收窗口向前滑动 5 个位置,这样就有 56701 这五个新的序号落入接收窗口。这些确认分组经过互联网的传输陆续到达发送方,但其中的 0 号确认分组丢失了。发送方接收 1- 4 号确认分组,并记录 1- 4 号数据分组已收到确认发动窗口不能向前移动。一段时间后, 0 号数据分组的重传计时器超时了,发送方重传 0 号数据分组,该数据分组经过互联网的传输到达接收方,其序号零落在接收窗口内,接收方会接收它,但是接收方先前已经正确接收过该数据分组了。如果现在还要接收,那就会出现分组重复这种传输差错。也就是说,如果发送窗口和接收窗口的尺寸超过了取值范围,就会使接收方无法分辨新旧数据分组,进而出现分组重复这种传输差错。
接下来我们对选择重传协议的工作原理进行一下小结,这是我们刚刚举例说明过的。发送窗口和接收窗口的尺寸问题就不再赘述了。发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内的多个数据分组全部发送出去,接收方可接收未按需到达但没有误码并且序号落在接收窗口内的数据分组。为了使发送方仅重传出现差错的分组,接收方不能再采用累计确认,而需要对每个正确接收到的数据分组进行逐一确认,接收方只有在按序接收数据分组后,接收窗口才能向前相应滑动。发送方只有按需收到对已发送数据分组的确认分组时,发送窗口才能向前相应滑动。若收到未按需到达的确认分组,应对其进行记录,以防止其相应数据分组的超时重发,但发送窗口不能向前滑动。接下来我们来做一个有关选择重传协议的练习。这是计算机专业考研全国统考计算机网络部分 2011 年的题35,请大家暂停播放视频,思考一下,给出你的答案。答案是选项b,大家都选对了吗?我们一起来分析一下。与回退 n 真协议不同,选择重传协议不支持累计确认,接收方每接收一个数据帧就会发回相应的确认帧,题目所给收到 1 号帧的确认,而 0 号和 2 号帧依次超时,因此需要重传 0 号和 2 号帧。至于发送方已发送的 3 号数据帧,题目并未给出它的任何其他线索,因此无需考虑 3 号帧。
我们再来画个示意图,以便更容易理解该题。假设这是真可用的序号,这是发送窗口,发送方将序号落在发送窗口内的 0- 3 号数据帧依次发送出去之后,收到了 1 号针的确认,而 0 号和 2 号针的重传计时器超时,因此需要重传的就是 0 号和 2 号这两个针。本节课到这里就结束了,我们将本节课的内容小结如下,同学们,我们下节课再见。