帧序列的比特数(设为n个)指的就是:帧编号的数目。例如,我们帧序列的比特数为3,那么一共就可以产生8个序号,也就是从0到7。
因为GBN协议中发送窗口大小 W发<=2^n-1;所以n越大(帧序列的比特数越大),我们发送窗口就越大,就能够将512B或者是128B一次性发出去。也就是说:在我们可以任意确定帧序列的比特数的时候,不管是128B还是512B的数据,都是可以近似达到100%的信道利用率的。
解释一下两点:①:为什么是近似的100%,而不是100%;②:为什么发送窗口越大,信道利用率就越高了。
解释一下发送周期:发送方从开始发送数据到接收到第一个确认帧为止。所以,发送周期并不是靠发送方发送了几个帧而确定的,而是看接收端的确认帧什么时候发送方收到。
公式表明,分母肯定是永远大于分子的,所以只能L1/C1远远大于其他部分的时候,我们就可以说近似达到100%的利用率。当然,这个题目应该只能近似达到50%。因为这里的L2=L1,C2=C1。
问题②:
举一个具体的例子而言:假设我们这里有1024B的数据,但是现在的发送窗口只能一次性发送512B,即:发送方在发送完512B之后,就需要等待接收端的确认帧之后,才能继续发送。发送端发送512B用了1S,单向传播时延为4S,所以发送端512B数据都发送完了,但是接收端的确认帧还没有发送过来,即这一次的发送周期还没有结束。所以,在发送方发完512B数据之后,过了7S,一个发送周期结束,为8S。在这一个发送周期中,仅仅发送了512B。但是如果我们的发送窗口可以一次性发送1024B的数据,那么发送方用了2S发送了1024B数据,但是这次的发送周期还是8S。可以看到,这次在一个周期中的数据明显增多,发送周期时间不变,所以最后得出结论:相同数据大小下,发送窗口越大,信道利用率越高。
可能你会觉得我这里举的例子过于极端,因为明显这个传播时延远远大于发送时延。但是我们看一下题目,在帧长为128B的时候,发送以帧数据所需要的时间是
(128 * 8)/ (16*10^3)=64ms
但是题目给的单向发送时延是270ms。所以我举的例子也还比较符合题意。
“数据帧的范围在128B ~ 512B”是指:我们可以将一帧数据的长度定为128B ~ 512B之间。而不是说我们发送的数据是在128B~512B之间。
“为使信道利用率达到最高,帧序列的比特数至少为多少”是指:当你的帧长定为128B到512B之间的长度时(例如帧长为128B,或者说帧长为512B,)使得信道利用率最高,此时我们的帧比特数至少为多大。即:不管你的帧长取最小128B,还是最长512B,在此时的帧比特数为n的情况下,我们的信道利用率都可以到达最大。
其实这点和我们数据结构中的一道题目很像:
此时也是在问我们保证任何情况下可以连通,我们需要的最少的边数。同样我们计网的题目也是这样子,在保证任何帧长都可以满足最大信道利用率的情况下,我们的帧比特数据得是多少。
根据问题②中所举的例子来看(假如数据大小为1024B),如果帧长为512B,那么想达到最大的信道利用率,至少需要2个发送窗口(因为这样子才能一次性发完所有数据),所以根据W发<=2^n-1得:
2<=2^n-1 得:n>=2
即帧比特数至少为2
此时如果n为2的话,帧长若是128话,发送窗口现在仅仅只有2,那么肯定无法一次性发完1024B的数据,所以无法达到最大达到信道利用率。
但是如果帧长为128B来看,那么达到最大的信道利用率,需要8个发送窗口,所以根据W发<=2^n-1得:
8<=2^n-1 得:n>=4
即帧比特数至少为4
此时如果n为4的话,帧长如果是512B,发送窗口也有8个,可以一次性发完1024B的数据,则也可以达到最大的信道利用率。
综上所述:如果想要任何情况在都达到最大的信道利用率,我们需要按照128B的帧长去计算得到窗口大小,从而得到帧比特数。
我一开始这里有一个误区:我觉得会不会发送方A发送的第一个bit到接收方B的时候,B就发送了一个确认帧过来。那么这样子的话,我们上面计算的发送周期T就会有问题。
因为接收方B发送确认帧肯定是要收到A发送来的一个帧后,而不是接收到一个bit后(我把这里和CSMA/CD中的想法搞混了)。所以我们上面的计算发送周期T就是没有问题的。
这个题是我在王道的公众号上看到的,和我们的这个题目类似,都是要求在这个帧序号的比特数。这个题目相对于我们上面的那个真题来说就比较简单了。因为这个题目的帧长是固定的,就是1000bit.然后也不用考虑确认帧的开销,仅仅只需要考虑确认帧的传播时延。下面是这个答案解析。
从这个答案解析我们也可以看出来,想要让信道利用率变高,就是需要一次性多发几个帧,而不需要等确认帧的到来。而一次性到底能够发送几个帧(不需要等确认帧),就取决于你的窗口的大小。那么再次回到我们的那个题目上,如果我帧长为128bit的都可以满足最大信道利用率了(即此时我们的数据在帧长为128bit时,窗口大小为n时都可以一次性发完),帧长为512bit更加可以达到最大信道利用率了(因为此时的窗口的大小肯定可以满足一次性发完而不需要确认帧的)
这个是2014年计网的一个选择题。下面是他的答案的解析
我们可以看到我画红线的位置,也就说这种求最大传输速率的题目,就是要在发送方A收到接收方B发送的确认帧被A(接收方)收到之前,A要尽可能的多发数据帧,这样子就可以达到最大的数据传输率。但是这个受限于两个因素:
①:A并不是可以无限发送数据。根据采用的协议的不同,能在没有接收到确认帧就开始能一直发送数据的量是不同的。即:取决于当时你的发送窗口的大小。
②:数据要在接受方发送的一个确认帧到达发送方之前,才算是有效数据(能计算在最大数据传输率上的数据)。
那么接收方什么时候会发送一个确认帧呢?尽管接收方可能会有“累计确认的机制,”但是我们做题目的时候,都是默认接收方在收到第一个帧之后就开始发送确认帧了。这也是上面的答案为什么是100ms内最多发送的1MB的数据。因为发送1帧的时间为80us,传输时间为50ms;而确认帧大小忽略,所以发送时延忽略,只有传输时延为50ms.
下面是我的的推断(不一定正确):因为我们的发送时延为80us,相对于两个传输时延为100ms太小了,所以直接忽略了80us。所以我们最后是在计算100ms内的最多能发送1MB的数据。
关于信道利用率的总结与一道习题的最终解释