计算机网络第三次作业参考答案
1. 一个上层数据包被分成10个帧,每一帧有80%的机会无损地到达目的地。
如果数据链路协议没有提供错误控制,试问,该报文平均需要发送多少次才能完整地到达接收方?
答:由于每一帧有0.8的概率正确到达,整个信息正确到达的概率为:。
为使信息完整的到达接收方,发送一次成功的概率为100.80.107p ==p ,二次成功的概率为(1)p p −,三次成功的概率为2(1)p p −,i 次成功的概率为(1)i p p −,因此平均的发送次数等于:1(1)i p p 1
i E i ∞
−==∑−。
求解过程如下: 我们知道111i
i S αα∞
===−∑,对其两边求导可得,'1211(1)i i S i αα∞−===−∑ 那么,令1p α=−,可得121111(1)9.30.107
i i E ip p p p p ∞−==−=⋅
==≈∑ 所以,该报文平均需要发送9.3次才能完整地到达接收方。
3. 一个数据流中出现了这样的数据段:A B ESC C ESC FLAG FLAG D ,假设采用本章介绍的字节填充算法,试问经过填充之后的输出是什么?
答:填充之后的输出是A B ESC ESC C ESC ESC ESC FLAG ESC FLAG D.
6. 需要在数据链路层上发送一个比特串:0111101111101111110。
试问,经过比特填充之后实际被发送出去的是什么?
答:经过比特填充之后实际被发送出去的是:011110111110011111010.
16. 751 被生成多项式31x x x +++除,试问,所得余数是什么?
答:所得余数为21x x ++
18. 发送一个长度为1024位的消息,其中包含992个数据位和32位CRC 校验位。
CRC 计算采用了IEEE 802标准,即32阶的CRC 多项式。
对于下面每种情况,说明在消息传输中出现的错误能否被接收方检测出来:
(a ) 只有一位错误;
(b ) 有2个孤立的一位错误;
(c ) 有18个孤立的一位错误;
(d ) 有47个孤立的一位错误;
(e ) 有一个长度为24位的突发错误;
(f ) 有一个长度为35位的突发错误。
答:CRC 校验共32位,那么(a )可以;(b )可以;(c )不可以;(d )可以; (e )可以;(f )不可以。
20. 考虑一个具有4kbps 速率和20毫秒传输延迟的信道。
试问帧的大小在什么范围内,停-等式协议才能获得至少50%的效率?
答:当发送一帧的时间等于信道的传播延迟的2倍时,也就是说发送一帧的时间
等于来回路程的传播延迟时,信道的利用率为50%,
在帧长满足发送时间大于延迟的两倍时,效率会高于50%。
对于4kbps 的速率,
20*2=40毫秒可以发送160bit ,所以,当帧长大于160bit 时,停-等协议可以获得至少50%的效率。
22. 使用协议5在一条3000千米长的T1中继线上传输64字节的帧。
如果信号的传播速度为6微秒/千米,试问序号应该有多少位?
答:为了有效运行,序列空间(实际上就是发送窗口大小)必须足够大,以允许
发送方在收到第一个确认应答之前可以不断发送。
信号在线路上的传播时间为:6*3000=18000微秒,即18毫秒。
在T1中继线上,发送64字节的数据帧需要花的时间:
64*8/(1.536*1024*1024)=0.32毫秒。
所以,第一帧从开始发送起,18.32毫秒后完全到达接收方。
确认应答又花
了很少的发送时间(忽略不计)和回程的18毫秒,加在一起的时间时36.32毫秒。
发送方应该有足够大的窗口,从而能够连续发送36.32毫秒
36.32/0.32=113.5
也就是说,为充满线路管道,需要至少114帧,因此序列号为7位。
27. 地球到一个遥远行星的距离大约是10910×米。
如果采用停-等式协议在一条64Mbps 的点到点链路上传输帧,试问信道的利用率是多少?假设帧的大小为32KB ,光的速度是8310×m/s 。
答:地球到行星的传播延迟为秒,发送一帧所需的时间为
毫秒,若采用停-等协议,信道利用率为
108910/(310)300××=46.67*10%−=3328/(6410)4××=0.004/(300300++0.004)
28.在上题的问题中,假设用滑动窗口协议来代替停-等协议。
试问多大的发送窗
口才能使得链路利用率为100%?发送方和接收方的协议处理时间可以忽略不计。
答:若要链路利用率为100%,则需要发送窗口为(3003000.004)/0.004150001
++=
34.考虑在一个无错的64kbps卫星信道上单向发送512字节长的数据帧,来自另
一个方向反馈的确认帧非常短。
对于窗口大小为1、7、15和127的情形,试问最大的吞吐量分别是多少?从地球到卫星的传播时间为270毫秒。
答:使用卫星信道端到端的传输延迟为270ms,以64kps发送,周期270+270+512*8/64=604毫秒。
发送一帧的时间为64毫秒,我们需要604/64=9个帧才能保持通道不空。
对于窗口值1,每604毫秒发送4096位,吞吐量为4096/0.604=6.8kps
对于窗口值7,每604毫秒发送4096*7位,吞吐量为4096*7/0.604=47.5kps 对于窗口值超过9(包括15、127)的情形,吞吐量达到最大值,即64kps 39.本实验练习的目标是用本章描述的标准CRC算法实现一个错误检测机制。
编
写两个程序:generator和verifier。
generator程序从标准输入读取一行ASCII 文本,该文本包含由0和1组成的n为消息。
第二行是个k位多项式,也是以ASCII码表示。
程序输出到标准输出设备上的是一行ASCII码,由n+k个0和1组成,表示被发送的消息。
然后,它输出多项式,就像它输入的那样。
verifier程序读取generator程序的输出,并输出一条消息指示正确与否。
最后,再写一个程序alter,它根据参数(从最左边开始1的比特数)反转第一行中的比特1,但正确复制两行中的其余部分。
通过键入:
generator <file | verifier
你应该能看到正确的消息,但键入:
generator <file | alter arg | verifier
你只能得到错误的消息。
说明:本题是首先发送方通过CRC算法将数据帧(0和1的字符串)根据生成多项式算出其校验和,然后附加到数据帧的尾部,作为输出,此部分通过generator程序实现;然后接收方读取带校验和的数据帧,用生成多项式去除它,通过余数是否为0判定传输是否出错,此部分通过verifier程序实现;最后通过改变数据帧中的某位,用verifier再去验证,得出数据帧有误的结论,此部分通过alter程序实现。
本题为此课程四次实验(至少选做两个)之一,此程序的检查放在后面的实验课上。