温馨提醒:为了让大家能快速定位题目,所有题目均按首字母顺序排列。
另:纠一位错海明码的编码方法没细说,可以参考【老猫_fish】的【这篇博客】~
比特填充的标志比特法,以“01111110”作为帧标志,即一个帧的开始和上一帧的结束。为了避免帧内容中出现帧标志,在每5个“1”后面补个“0”。所以对应的比特串是“011111000011111010”。
错的。
由于是累计确认,收到2号帧的确认帧,说明2号帧和2号帧之前的帧都被成功接收。可以从2号帧往后再发4个帧。既然已经发出了一个3号帧并且没收到其确认帧,那就还可以连续发送4-1=3个帧。
对的。
这里我默认就只有1个窗口了…
一个RTT传送的数据量是10×1250Bytes×8bits/Byte=100000bits
最大吞吐量=单位时间内传输的数据量=100000bits/100ms=1 000 000bits/s=1Mbps。
位填充法 or 零比特填充法 or 比特填充的标志比特法,以“01111110”作为帧标志,即一个帧的开始和上一帧的结束。为了避免帧内容中出现帧标志,在每5个“1”后面补个“0”。收方将数据中每5个“1”后面紧跟的1个“0”去掉,就可以还原出原本的数据。
1110111110 0=1110111110.
最小码距等于所有非零码字中的最小码重。这里三个非零码字对应的码重分别是2、2、4,所以这组码字的最小码距是2。要检测出e位错误,要求最小码距d≥e+1。因为2=1+1,所以可以检测出1位错误。
纠一位错的海明码,8位数据需要4位校验位。
把检验位插进去,得到121401081111.(1带下划线表示第1位上的验证位,2、4、8以此类推)
3、5、7、9、11位共3个“1”,偶校验 1 补“1”。
3、6、7、10、11位共4个“1”,偶校验 2 补“0”。
5、6、7、12位共2个“1”,偶校验 4 补“0”。
9、10、11、12位共4个“1”,偶校验 8 补“0”。
编码后的码字为 1010 0100 1111.
啊这个n=8不知道是啥意思,但是按照海明码的编码规则,2的幂次方位是校验位,其它位为数据位。所以在1、2、4、8上的ABDH就是检验位,剩下就是数据位,位置是CEFGIJK.
仅当当前帧的 ACK 落入 *sent *(发送窗口),发送方发送下一帧。
这里默认是偶校验嘞。
第1位校验位:1、3、5、7、9、11位一共3个“1”,不是偶数个,错了。
第2位校验位:2、3、6、7、10、11位一共1个“1”,不是偶数个,错了。
第4位校验位:4、5、6、7位一共2个“1”,是偶数个,对了。
第8位校验位:8、9、10、11一共1个“1”,不是偶数个,错了。
错误出现在:(1+2+8)×1+4×0=11位。修改后得到正确的码字为0011 1000 101.
(如果是奇校验,那第1、2、8位校验位正确,第4位校验位错误,码字错误出现在(1+2+8)×0+4×1=4位,修改后正确的码字就是0010 1000 100)
生成多项式是1101,4位,所以我们在原始码字后面补4-1=3个0,得到1111000。再用1111000÷1101=1011余111,把余项111添加到原始码字的末尾,得到编码后的码字,为1111111.
生成多项式是1101,由于1100101÷1101=1001,刚好整除无余数,所以是正确的。并且我们知道生成多项式是4位,所以冗余位有3位。CRC编码后的码字就是数据位+冗余位,我们把后3位去掉就可以得到数据位,数据位为“1100”。
对的。
一个系统中的码字的海明距离是5=最小码距是5吗?我也不晓得。但是这里我是按照最小码距=5来计算的,要检测出e位错误,要求最小码距d≥e+1。因为5=4+1,所以可以检测出4位错误。
错的。
要纠正 t 位错误,要求最小码距d≥2t+1。因为5=2×2+1,所以最多可以纠正2位错误。
字符串有4个“1”,奇校验,所以要补一个1,凑成奇数个“1”。所以校验位是“1”。
接收端根本不知道发了什么,所以重新生成原始数据一看就不靠谱啊。
采用检错码的系统,注意不是纠错码喔,所以没有纠错能力,不能自动纠错。
错了得自己想办法,麻烦上层协议要你干啥呢…
最后就是反馈重发比较实际啦。
选择性重传协议中,发送窗口的尺寸不能打过接收窗口的尺寸,而接收窗口的尺寸范围在0到(最大帧序号+1)/2。帧序号为4比特,那最大帧序号=1111(2)=15,接收窗口的最大尺寸=(15+1)/2=8.
最大平均速率的情况就是在一个RTT内刚好能把所有窗口的数据都发完。
所有窗口的数据一共有:1000(窗口)×1000(字节/窗口)×8(bits/字节)=8 000 000bits。
一个RTT=50ms×2=100ms。
最大平均传输速率=8000000bits/100ms=80 000 000bps=80Mbps。