在这个视频中,我们要探讨三种协议的信道利用率,包括停止等待协议、后退N协议和选择重传协议。后退N帧协议和选择重传协议的信道利用率分析思路是完全一致的,所以这两种协议我们会放在一起来探讨。在这个视频中,我们也会补充几个重要的术语。这些术语可能在看书做题的时候会碰到。
由于信道利用率这个部分是考研小题的命题重点,所以在这个视频中我们也会穿插一些例题来帮助大家了解这个部分的考察风格。首先我们来看停止等待协议的信道利用率,我们知道在停止等待协议当中,发送方和接收方,发送数据的过程是这样的:首先,发送方要给接收方发送一个数据帧。接收方收到这个数据帧,并且检查无误之后会给发送方返回这个数据帧的确认帧对应的ACK。由于停止等待协议的发送窗口和接收窗口的大小都等于一,所以每一次只能发一个数据帧,返回一个确认帧,再发送下一个数据帧,再返回下一个确认帧,就是这样的一个过程。
为了方便探讨信道利用率,我们不妨假设这样的一些前提条件:现在假设发送方和接收方之间的这个信道数据传输速率是 1 kbps,数据帧的长度是 4 kb,显然发送一个数据帧就需要四秒钟的时间,一个确认帧的长度是 1 kb,所以发送一个确认帧需要耗时一秒钟,另外我们再假设信道的单向传播时延等于七秒钟。基于上面这些条件,发送方和接收方之间使用停止等待协议去传输这个数据帧的过程就是这样的:
在这个图当中,上面这条线表示的是发送方,下面这条线表示的是接收方,横轴表示时间t,并且横向的一个小格子对应的是一秒钟的时间。来看一下,首先发送方给接收方发送第一个数据帧耗时,总共需要四秒钟。所以对应横向的四个小格子,由于信道的单向传播时间是七秒钟,所以这个数据帧的最后一个比特,从被发出到被接收,总共中间经历了七秒钟。收到这个数据帧之后,假设这个数据帧没有检测出任何的差错,此时接收方就可以给发送方返回一个确认帧ACK,刚才我们说了确认帧的发送时延是一秒钟的时间,那么这个确认帧在信道上传播也需要七秒钟。因此,从确认帧的第一个比特被发出,到第一个比特被发送方接收,总共中间经过了七个小格子。再经过一秒钟的时间发送方就可以完整的收到这个ACK帧。接下来从这个时间点开始,发送方就可以发送第二个数据帧,第二组数据帧和确认帧的这个传输过程是完全一致的。所以理想情况下,之后会一直重复前边的过程。可以看到,从发出一个数据帧到收到这个数据帧的ACK,整个过程至少需要花四秒,再加上2×7,再加上最后的一秒,这是总耗时。在这一整段时间内,发送信道上只有四秒钟是有数据通过的,所以发送信道的信道利用率就应该是4除以刚才的总时间就等于 21%,这就是发送信道的利用率。我们探讨的是发送信道的利用率,也就是说,发送方和接收方之间的数据传输,我们把它看作是两条单向的信道。发送方给接收方发送数据的这条信道,叫做发送信道,而接收方给发送方返回ACK的这条信道,我们把它视为接收信道。由于我们探讨的是发送信道的信道利用率,所以我们认为发送信道上只有四秒钟的时间是有数据通过的,传输ACK的这一秒钟是接收信道上有数据通过的时间。
理解清楚这一点,接下来我们对信道利用率的这个计算进行一个小总结。我们把一个数据帧的传输时延记作 TD,把两倍的单向传播时延记作RTT,然后把一个确认帧的传输实验记作TA,那么在停止等待协议当中,理想情况下信道利用率U就应该等于数据帧的传输时延除以数据帧的传输时延加上两倍的单向传播时延,再加上确认帧的传输时延。这个地方为什么要强调是理想情况下呢,因为我们知道信道的传输有时候是不稳定的。所谓理想的情况就是说这个信道的传输不会丢帧,这个帧的内部也不会出现比特差错,每一个数据帧和每一个确认帧总是能顺利的发送和接收。所以这个地方我们是基于这种理想情况来探讨信道利用率的。这是停止等待协议的信道利用率。
接下来我们探讨另一种情况,我们假设确认帧非常短,确认帧非常短意味着确认帧的传输时延也会非常短,我们可以把这个传输时延忽略不计。在这种条件下,我们可以把这个确认帧的传输画成这样的一条线,也就是说它是没有宽度的。我们把这个确认帧的传输看作是一瞬间就可以完成,因为它非常短。所以改变这样的一个条件之后,信道利用率就改变了。发送信道上有四秒钟的时间是有数据通过的,从第一个数据帧发出到下一个数据帧可以发出总共需要经过4+14 这么长的时间。所以信道利用率就应该等于22.2%,在这种情况下,刚才我们总结的这个信道利用率的计算公式同样适用,只不过这儿的TA我们把它为0就可以了。
接下来看一个真题,2018年的 36 题:
假设主机甲采用呃停止等待协议,向主机乙发送数据。数据的传输速率是 3 kbps 单向的传播时间,单向的传播时间是 200 毫秒,忽略确认帧的传输时延,这个什么意思啊?就是刚才我们说的那个条件。就是说确认帧非常短,我们可以认为它的传输是在一瞬间就完成的。也就是说,我们可以忽略确认帧的传输时延啊,但是我们不能忽略确认帧的传播时延,这是两回事。题目说当信道利用率等于 40%的时候,数据帧的长度应该是多少?停止等待协议的这个信道利用率,我们刚才总结过,等于数据帧的传输时延,加上数据帧的传输时延,加两倍的单向传播实验,再加确认帧的传输时延。在这个题目当中,确认帧的传输时间等于零,那数据帧的传输时间应该是等于数据帧的长度。除以这个信道的速率,我们最终要求的是数据帧的长度。把题目给的条件带进去之后,我们应该算得这个信道利用率要等于40%,这也是题目的条件。接下来就可以解这个方程,最终可以算的数据帧的长度应该等于 800 比特。提醒大家需要注意我们这儿带入的单向传播时延单位是毫秒,要把它换算成秒为单位才可以和前边的bps相匹配。这是一个很典型的例题,考察停止等待协议的信道利用率。有必要提醒部分同学,很多同学看到这样的一个公式,他会选择去背。其实很简单,信道利用率的分子表示的是这个一个数据帧的传输时延,而它的分母指的是从一个数据帧刚开始发出到下一个数据帧可以发出,中间总共经历的总时间。在发送信道上,这一段总时间内,只有其中的一小部分有数据通过,有数据通过的这个时间的比例就是信道利用率。所以我们要理解这个公式背后的逻辑,而不是去死记硬背。死记硬背的公式很难去应对考试当中变化的条件。这是要提醒大家注意的,要理解,而不是死记硬背。
接下来看后退N真帧协议和选择重传协议的信道利用率,在理想情况下,这两种协议的信道利用率分析方法是完全一样的。这二者有一个共同点,就是发送窗口的大小要大于一,虽然这两种协议的接收窗口大小不一样,但是在理想情况下,我们认为发送窗口内的n个数据帧可以被连续的发出,并且被接收方顺利的接收。因为不用考虑帧丢失,帧错误这些问题,所以在理想情况下,这两种协议的信道利用率其实都只受发送窗口的大小影响,和接收窗口的大小没有关系,为了讨论方便,我们也假设一些前提。
我们不妨假设发送窗口的大小是4,信道的传输速率还有数据帧长度、确认帧长度以及信道的单向传播时延和之前的假设都是一致的。在这种情况下,数据的传输会变成这个样子,可以看到一个数据帧的传输时间应该是等于四秒。由于发送窗口的大小是4,所以无论是采用后退n帧,还是选择重传,反正最多可以连续的发出四个数据帧。我们不妨把这些数据帧编号为0、1、2、3,每一个数据帧的传输时间都是四秒钟,由于我们讨论的是理想情况。所以这些数据帧接下来都可以顺利的被接收方所接收。那么第一个数据帧经过七秒钟的时间之后,被接收方所接收,接收方会立即返回第一个确认帧。这个确认帧的传输时间也是一秒钟,而传播时间同样是七秒,对于数据的发送方而言,当它收到第一个数据帧的ACK之后,它的发送窗口就可以往前滑动一格。也就是说,收到第一个确认帧之后,就可以紧接着发送下一个数据帧。同样的道理,收到第二个确认帧之后又可以发送再往后一个的数据帧,后面的过程就是完全一致的。所以我们要分析信道利用率,我们只需要看这样的一个周期就可以了,也就是关注这个灰色的虚线框内,发送信道上有百分之多少的时间是有数据通过的。
结合这个图示可以得到发送信道的利用率应该是等于4×4,也就是总计 16 秒的时间发送信道上是有数据通过的,这 16 秒传输了N个数据帧。从发出这一组数据帧到下一组数据帧可以被发出,中间所经历的时长就应该是第一个数据帧的传输时延,加上两倍的单向传播时延,再加上确认帧的传输时延,也就是这个式子的分母部分,计算结果是84%。我们不妨把这个式子进行整理,同样的用 TD表示一个数据帧的传输时延,用RRT去表示两倍的单向传播时延,用TA去表示确认帧的传输时延。同样的,这个式子不用记,关键是理解它背后的逻辑,上面这个N×TD表示的是把发送窗口内的这N个数据帧连续的发出所需要的时间,而下面分母的这个部分表示的是从发出第一个数据帧到接收到第一个这个确认帧中间所需要的总耗时,因为收到第一个确认帧之后,接下来就可以顺利的往后发送后一组数据帧,之后的过程就是不断的在重复,所以分母我们取了这样的一个值。这是发送窗口等于4的情况。
接下来我们把条件改一下,让发送窗口的大小等于5,其他的条件不变,改变这样的条件之后,大家可以带进去算一下,发送窗口等于五算出来的信道利用率会大于一。但是我们知道信道利用率的定义是指一条信道上有百分之多少的时间是有数据通过的,所以信道利用率这个指标,它不可能大于一,因此,生搬硬套这个公式就不太适用了。来看一下发送窗口变大之后具体发生了什么?发送窗口大小等于5,意味着可以连续的发出五个数据帧,每个数据帧的传输时间是四秒钟,也就是说这五个数据帧全部发出,需要经过 20 秒的时间,回头看第一个数据帧,它的ACK在 20 秒之前就会被收到,也就说从这个时间点开始,理论上发送窗口就可以往后滑动。但现实情况就是,在这个时间点这儿,第五个数据帧还没有发完,所以第五个数据帧还需要再继续发一段时间,只有第五个数据帧发完了之后,才可以接着发后一组的数据帧,在这种情况下可以看到发送信道上总是有数据正在通过,所以发送信道的信道利用率等于一。大家注意信道利用率是不能超过一的,在这个公式当中,如果分子的值大于分母的值,最终我们应该取最大信道利用率等于一。这是做题的时候需要注意的地方,接下来看一个例题:
2014年的 36 题。假设主机甲和乙之间使用后退N帧协议传输数据,发送窗口的大小是 1000,数据帧的长度是1000字节,注意字节是大B,信道的带宽是100Mbps,主机乙每收到一个数据帧,会立即用一个短帧进行确认,题目明确的告诉我们ACK帧(确认帧)的传输时延是可以忽略不计的。如果甲乙之间的单向单向传播时延是 50 毫秒,那么主机甲可以达到的最大平均数据传输速率约等于多少?
根据题目条件,一个数据帧的长度是 1000 大B,而信道的带宽是 100 Mbps,所以传输一个数据帧所需要的时间就是0.08毫秒,注意大B要乘以8换算成小 b,如果画图表示就应该是这个样子:
一个数据帧它的传输时间应该是等于0.08毫秒,由于发送窗口的大小是 1000,所以就意味着主机甲最多可以连续的发送 1000 个数据帧,我们在这个图当中表示为0到999,发送这 1000 个数据帧的耗时就是 80 毫秒,也就是从第一个数据帧发出一直到最后一个数据帧发送完毕,这个过程总共耗时 80 毫秒。在理想情况下,主机乙每收到一个数据帧就会立刻用一个短帧进行ACK,所以第一个数据帧被接收之后,立即返回一个ACK,由于单向的传播时间是 50 毫秒,因此这个ACK帧从发出到被接收,中间应该是经历了 50 毫秒。同样的道理,当接收方收到第二个数据帧的时候,它又会立即返回第二个ACK。
理想情况下,从红色圆点的这个时间点开始,发送方就可以连续的发送后面的 1000 个数据帧,也就是再次重复前边这个周期所发生的事情。
所以我们只需要考虑这样的一个周期之内,它到底传输了多少数据,用这样的一个周期内实际传输的数据量,除以这一整个周期的时长就可以得到发送方的最大平均数据传输速率。好,那么发送的数据总量是 1000 个数据帧,每个数据帧的大小是1000大B,刚才提到的这一整个周期时长应该是两倍的单向传播时间,再加上0.08毫秒。结合这个图示,应该不难理解为什么要这么计算,那么最后的计算结果应该是 80Mbps。所以这个题目的答案选择 c 选项。可以看到2014年的这个题目,它并没有直接考什么信道利用率这个东西,也就说,如果我们只会生搬硬套公式,而没有理解这个公式背后的分析过程,那么这个题目肯定是做不出来的,所以最重要的还是要理解我们在背后分析的方法和过程。对于这个题目来说,我们不妨用计算出来的实际的数据传输速率去除以这个信道的最大带宽,80÷100,用这样的方式也可以算出信道利用率等于 80%,所以信道利用率的计算方法有很多。我们可以用实际的数据传输速率除以最大带宽,用这样的方式计算出信噪利用率。当然也可以用,我们刚才总结的公式计算,算出来的结果是一样的,这两种算法在背后表达的是同一个意思。
接下来再看一个题目,2015年的35 题。主机甲通过128kbps这么快的一条卫星链路,采用滑动窗口协议向主机乙发送数据,给了链路的单向传播时延,给了数据帧的长度。并且告诉我们不考虑确认帧的开销。为了确保这条链路,也就是这条信道的利用率不小于 80%,问我们帧序号的比特数至少应该是多少。这个题目是有一定难度的,它不仅考察信道利用率。而且还结合帧序号的比特数来进行出题。这个题目提到一个术语叫做滑动窗口协议,此处我们需要给大家补充所谓的滑动窗口协议,它指的是后退N帧协议或者选择重传协议。
我们学过停止等待、后退N帧和选择重传这样的三个协议,为了便于大家理解,所以在讲解这几种协议的原理的时候。我们把这三者视为都采用了滑动窗口机制,只不过这三种协议的发送窗口和接收窗口的大小有所区别而已。在原理上我们可以把这三种协议都视为采用了滑动窗口机制,但是在考试的时候。如果遇到滑动窗口协议这个名词,要知道它指的是发送窗口大于一的这两种协议,也就是说停止等待协议不属于滑动窗口协议的范畴。它虽然也使用了滑动窗口机制这种原理。所以这个术语是需要给大家补充的。
顺道的我们再补充另一个术语叫做ARQ协议和连续ARQ协议。所谓的ARQ指的是Automatic repeat request,通常会把ARQ翻译为自动重传请求协议,自动重传这个特性我们在停止等待、后退N帧和选择重传这三种协议当中都有感受到。无论是哪种协议,都有这样的一个规定,就是发送方给接收方发送一个数据帧之后,如果长时间没有收到ACK,那么发送方就会自动的去重传这个数据帧。所以这三种协议都有自动重传的特性,因此如果大家在看书或者做题的时候看到说两个结点之间采用ARQ协议,那么你要知道它在背后指代的有可能是停止等待,有可能是GBN,也有可能是选择重传。与之相关联的还有一个术语,叫做连续ARQ协议,为什么叫连续ARQ?因为后退N帧和选择重传协议,它的发送窗口都大于一。也就是说,在这两种协议当中,如果连续的发出多个数据帧。但是这些数据帧的ACK都没有被顺利的接收,那么这两种协议会连续的自动去重传多个数据帧。所以如果遇到连续ARQ协议这个术语,要知道它指代的有可能是后退N帧和选择重传。停止等待协议不属于连续ARQ的范畴,这是需要给大家补充的术语。
接下来我们回到刚才这个题目,这个题目说主机甲和主机乙之间采用滑动窗口协议,现在知道,它指的是主机甲和乙之间可能使用的是GBN,也有可能使用的是选择重传,无论是GBN还是选择重传,在理想情况下,这两种协议的信道利用率计算的方法都是一样的。题目要求,这个信道利用率不小于 80%。所以这个式子最终我们希望它大于等于 80%。接下来我们把这个式子里边的变量进行一个填充,首先这个大N指的是发送窗口的大小。题目并没有给这个条件,但是我们知道发送窗口的大小,它受到帧序号的比特数影响,所以只要我们确定了发送窗口的大小,当它等于多少的时候可以满足这个条件。这样的话,我们就可以继续去推算帧序号到底应该占多少个比特,这个坑我们一会儿再来填,我们先把后面这几个变量给填上,TD指的是发送一个数据帧所需要的时间,数据帧的长度是 1000 个字节,1000大B除以链路的带宽128kbps,接下来分母也用到了 TD,刚才已经算出来了,RTT指的是两倍的单向传播时延,题目告诉我们单向传播时延是250毫秒,两倍的单向传播时延就应该是0.5秒。最后变量TA指的是确认帧的发送时延,这个题目告诉我们不考虑确认帧的开销,也就是说确认帧非常短,所以TA我们可以忽略不计,因为认为它的发送时延等于零。现在式子当中只有大N的值是未知的,其他几个变量的值都是已知的,解这个不等式得到的结论就是大N应该大于等于7.2,满足这个条件的时候,就可以确保链路的利用率不低于 80%,大N表示的是发送窗口的大小。这个题目最终是让我们求帧序号的比特数至少应该为多少?在之前的学习中,我们知道GBN协议的发送窗口大于一,接收窗口等于一,而选择重传的发送窗口和接收窗口都要大于一,并且无论是哪个协议,他们都必须满足这样的一个条件,当我们用 n 个比特给帧进行编号的时候,我们需要满足发送窗口加接收窗口的大小,要小于等于二的n次方。接下来出现了一些区别GBN协议的接收窗口大小等于一,而选择重传协议接收窗口是大于一的。显然如果 n 比特这个 n 确定的情况下,那么GBN协议的WT,也就是发送窗口可以更大,我们不妨把接收窗口等于一给代进去,就意味着发送窗口WT+1 应该小于等于二的n次方,刚才我们已经计算出发送窗口的大小,应该大于等于七点二,发送窗口的大小不可能是一个小数,肯定是一个整数,所以这个式子意味着发送窗口的大小至少应该等于八,我们不妨把八带进去,八加一小于等于二分之 n,这里的 n 也必须取整数,所以这个式子推出的结果就是 n 要大于等于四。因此,帧序号的比特数至少应该等于四这个题目选择B选项。在这个题目当中,我们要强调这个结论:当我们用 n 个比特给帧进行编号的时候,GBN协议的发送窗口肯定要比选择重传协议的发送窗口更大,因为选择重传协议的WT要更大,相应的在满足这个式子的条件下,选择重传协议的WT就会更小。在这个题目当中,无论是 GBN协议还是SR协议,反正当 n=4 的时候肯定都能满足题目要求的这些事情。但如果我们把条件稍微改造一下,就可以体会到刚才强调的结论的作用,我们不妨把这个80%变小一点,把它变成 75%好了,反正就是把这个要求变低一点,这样的话,我们推出的这个大N,它可能大于等于七就可以了,改成75%之后,是不是大于等于七?这个我不确定,反正就是我们假设改了条件之后得到的结论是发送窗口要大于等于七,基于这样的条件,如果采用GBN协议,那么GBN协议应该满足发送窗口加上接收窗口要小于等于二的n次方,要满足这个条件。推出来的结果就是n大于等于三就可以,也就是说如果采用GBN协议,我们只需要用三比特给帧进行编号就OK。现在再来看SR协议,我们要确保发送窗口的大小,至少要等于七,再加上接收窗口的大小要小于等于二的n次方,我们知道选择重传协议的接收窗口肯定是要大于一的,所以接收窗口的大小至少应该等于二,七+2 小于等于二的 N 次方,这个式子推出来 n应该要大于三才对。也就是说,如果采用选择重传协议,并且要保证发送窗口的大小大于等于七的话。那么,我们至少要用四个比特给帧进行编号,所以如果这个题目的条件稍微做一下更改。那么采用GBN协议和采用SR协议得到的这个结果,结论就是完全不一样的,通过这个真题要理解这一点。
在这个视频中,我们探讨了三种协议在理想情况下,信道利用率等于多少?其实信道利用率的计算本身并不复杂,但是从刚才几个真题当中可以看到,这个部分的考察还是可以做的比较综合的。停止等待协议的信道利用率考察,相对来说会简单一些。后退 n帧和选择重传协议就很喜欢结合用 n 比特给帧编号这个知识点进行考察,当题目对信道利用率做出限制的时候,本质上就是对发送窗口做出了一定的限制。发送窗口的大小又受限于n比特,就是给帧编号的这个比特数。同时当我们采用GBN协议或者选择重传协议的时候,因为二者对接收窗口的大小要求不一致,所以采用这两种协议的时候,我们去判断这个比特数也需要做出一定的调整。同样用 n 个比特给帧编号的时候GBN 协议的发送窗口会更大,相应的GBN协议的信道利用率也会更高。另外在这个视频中,我们也补充了几个大家看书做题的时候可能会遇到的术语,分别是滑动窗口协议,它指的是GBN协议或者SR协议。ARQ协议包含了停止等待、后退N帧和选择重传这三个协议,而连续ARQ指的是后退N帧和选择重传协议。
可以再结合这个思维导图来回顾一下,以上就是这视频的全部内容。