题目:
【2012统考真题】 两台主机之间的数据链路层采用了后退N帧协议(GBN)传输数据,数据的传输速率为16kb/s,单向传播时延为270ms,数据帧长度范围是128~512字节,接收方总是以数据帧等长的帧进行确认。为使信道利用率达到最高,帧序号的比特数至少为(B)A.5 B.4 C.3 D.2
题目思路:
首先题干中“接收方总是以数据帧等长的帧进行确认”意味着确认帧长度与发送的帧长度一样大。
错误想法:
我在初次做的时候是这样理解的,由于数据帧长度不定即要确定一个数据帧长度以确定信道利用率达到最高,那么:
传输速率kb/s
传播时延ms
设数据帧长度为L字节,那么其发送一帧的时间等于确认帧的发送时间为L/C,传播时延为2R,则发送周期为:
那么信道利用率可知为:
显而易见当L为512B时信道利用率最大,但错误就在信道利用率中分子的意义是发送方在发生周期内共发送L比特的数据(从开始发送数据到收到第一个确认帧为止称为一个发送周期),而若按上文中假设的话,代表着在发送周期中只发送了一个帧,显然不能成立,无法算出正解。
正确思路:
由错误思路中可以想到如果我们已提前知道当数据帧长度为某一定值时信道利用率最大,那么我们只需要知道在发送周期内最多可以发多少个数据帧就可以得出就可以求出帧序号的比特数。
若想要信道利用率高,则要尽可能的让信道不断发数据帧不能闲下来,若想让信道不闲下来则需要发送窗口尽可能的大,从而让发送方在周期时间内尽可能不断发数据。但是由于发送窗口不可能无限增大,因为是GBN协议,可知发送窗口(其中n为帧序号的比特数)。可以知道发送同一个数据段时,数据长度一定划分数据帧长度越小数据帧个数越多即帧序号越大,所以当数据帧长度为128B时帧序号最大发送窗口最大。
这样我们的思路就很清晰了,已知帧长度为128B
发送一个帧的时间为 128B/16kb/s=64ms
发送周期为 2*64ms+270ms*2=668ms
则在发送周期中连续不断发送数据帧的个数为 668ms/64ms=10.4帧
那么帧序号最多为10即发送窗口大小为
那么可知当帧序号的比特数至少为4时信道利用率最高,至此题目解完!
此题本人做错后结合以下两位大佬的文章并自己相连许久总结出的心得