1.第三章1.没有差错控制,所以1次发送完成的概率是0.8^10=0.1072.需要2次的概率是(1-0.107)*0.107设p=0.107则需要i次的概率是p(1-p)^i-1所以次数的期望值为使用数学模型设则可得可得E=1/p=9.3次2.a.字节计数法头字节需要祯长度信息4比特流为00000100(该字节表示长度4)01000111111000111110000001111110(后四字节保持原样)b.字节填充标志字节FLAG是起始结束标志,ESC是转义字节。数据中有的ESC和FLAG前面需加转义字节所以比特序列为01111110010001111110001111100000111000001110000001111110FLAGABESCESCESCFLAGc.比特填充的首尾标志字节。首尾标志FLAG添加到比特流的首尾位置。若数据中遇到连续5个1则添加0,用来区别标志位和数据。011111100100011111010001111100000001111101001111110FLAGABESCFLAGFLAG3.ESC和FLAG需要添加转义,所以最后输出为ABESCESCCESCESCESCFLAGESCFLAGD4.如果数据全是ESC和FLAG构成,在这种情况下开销将增大一倍5.如果祯是络绎不绝的,一个标志位也许足够。但如果祯结束了,但在很长时间内没有新的祯,接收者要如何判断下一字节是线路的干扰还是原来的祯数据。6.每5个1添加一个0所以填充后为011110111110011110107.a.传输延迟非常长,如空间卫星传输,正向纠错是必要的。B.开环协议也适用于军事上,接受者不希望在传输过程中暴露它的位置。C.如果错误率非常低,并且纠错码足够好,也可使用开环协议。D.实时系统中无法忍受等待重传的情况8.海明距离还是2不变9.根据上表需要5位校验码,参考海明码计算最后结果10.根据上表只可能是8位数据码4位校验码,但是第二校验位出错,需要修正,所以实际上收到的是0XA4F,所以原码是0XAF。11.1位错误,不管是行校验还是列校验都能被检测出来2位错误,如果在不同行,行校验位就可以检测,如果在相同行,列校验位可以检测3位错误,如果2位错误在同一行,至少一个列校验可以检测出来,如果2位错误在同一列,至少一个行校验可以检测出来。4位错误,如果4个错误分布在4个角落组成方形,错误无法被检测出来12.使用海明码,每个块至少需要10个校验位。总的数据位数是1010位。如果是检错的话,那么只需要1位检验位。假设出错率是x/bit那么一个块出错的次数为1000x。每次出错1001bit需要重传,所以总传的位数为1001+1000x*1001。要使检错机制更优秀,要使1001+1000x*10011010。所以出错率必须小玉9*10^6。13.错误的可能总共有nk(nk-1)(nk-2)(nk-3)。如果左下角错误出现的坐标为(p,q),则出现4个角错误的可能有(k-p-1)(n-q-1),所以出现在四个角的错误的可能有所以刚好不能检测的概率为14.输入第一位时S[1..6]=100000输出为11输入第二位时S[1..6]=010000输出为01输入第三位时S[1..6]=101000输出为00...最后结果为110100101000110015.将序列按4位一个值分解为1001110010100011高位溢出的值,需要带回低位重新计算。16.17.比特流是10011101生成多项式为1001生成多项式阶位为3,所以后面补三个0得到10011101000用10011101000整除1001得到余数100,所以最后位串为10011101100。如果第三位变反后,得出的数字不能整除1001。但如果出错后的位串仍能被1001整除,则错误无法检测出来,最简单的就是所有位都为0。18.A.可以,所有的一位错误都能被检测B.正确,所有的双位错误都能够检测出来C.错误CRC不能检测出所有偶数个孤立错误D.正确,CRC可以检测出奇数个孤立错误,前提是以x+1作为因子E.正确,CRC可以检测出位数小于r位(这里32位)突发错误F正确,CRC不能用于检测超过r位的突发错误19.可能,ACK到达的时候,定时器超时的时候。这个情况会出现由于CPU的过载,使ACK延迟发送20.要使效率达到50%,必须使传输数据包的时间等于来回的传输延迟。在4kbps的速率下,160bit需要40ms(2倍的传输延迟)。所以祯大于160bit时,才能获得50%的效率21.可能,假设祯的发送和ACK的回复非常迅速,主函数执行第二个循环的时候,当定时器还在运行的时候,祯已被发送出去22.为使操作有效,序列空间必须足够大,使得在第一个ACK返回之前,其他数据还能继续传输。传播时间为3000km*6us/km=18ms。T1是速率是1.536Mbps,64byte的祯传输需要0.300ms。所以第一祯到达的时间是18.3ms。ACK回复需要18ms。所以第一祯发送到收到应答需要36.3ms。所以发送的串口大小必须大到足够保持36.3ms的传输时间,每个祯需要0.3ms,所以在这段时间内可以传输36.3ms/0.3ms=121个祯。所以需要7位序列。23.设发送者的窗口边界是(Sl,Su),接收者的窗口边界是(Rl,Ru)。窗口大小为W。他们之间的关系是24.这样协议是错,假设使用3位的序列,考虑以下场景A发送了祯7B接收了祯并返回ACKA收到ACK后,发送祯0-6,所有的祯丢失B定时超时后,重发了ACK7。当r.ack=7到达A收到ACK之后,A的AckExpected=0,r.ack=7NextFrameToSend=7。使A认为丢失的祯是已经回复了ACK。25.影响了协议正确性,可能造成死锁。假设一批祯已经到达并且被接收。接收者会推进它的窗口。如果所有ACK丢失,发送定时器会超时,并重新发送一个祯,接收者会发送NAK。如果这个包丢失,那么发送者会保持超时,并发送第一个已经被接收祯,而接收者不再管它,那么发送者就会不断发送,最终造成死锁26.这会造成死锁,这是唯一用来处理ACK的进程,如果没有这段代码,那么发送者会保持超时,并不做任何事。27.信道利用率为(1/(1+2BD))BD=带宽延迟输出/祯大小延迟=9*10^10/3*10^8=300s带宽延迟输出=64Mbps*300=19.2GBBD=19.2GB/32KB=600000信道利用率=8.33*10^(-7)28.发送窗口大小为w信道利用率为w/(1+2BD)所以需要w=120000129.考虑一下场景A发送0到B,B接收后返回ACK但ACK丢失,A超时重发0,但现在B期望的是1,所以B返回了NAK。如果此时A将r.ack+1,那么他会发送1,错误就被纠正过来了。30.假设A向B发送一个祯,并且正确到达了,但此时确认定时器。A超时重发,B会注意到序列号出错了,它就会发送NAK。所以每个包平均发送两次。31.不能,MAX_SEQ=4时,NrBufs=2,偶数序列使用buffer0,奇数序列使用buffer1。这样的规划意味着,祯4和0使用同一个buffer。假设祯0-3已经接收并确认。接收者的窗口包含4和0,如果4丢失了,而0到达,这将被放入buffer0,并且arrive[0]也会标记为真。这样循环在代码中被执行一次,一个不规则的消息就会被传送到主机。这个协议要求MaxSeq必须是偶数。但是其他滑动窗口协议不一定都有这个特性。32.祯发送时间需要1000bit/1Mbps=1s,假设t=0,在t=1ms时,第一个祯被发送出来。在t=270+1=271ms时,第一个祯达到。T=271*2=542ms时,第一个祯的ACK到达。所以循环周期是542ms。总共有k个祯在542ms被发送,信道利用率=k/542。A.k=1,信道利用率为1/542=0.18%(k必须=1)B.k=7,信道利用率为7/542=1.29%(k=2^n-1=7)Ck=4,信道利用率为4/542=0.74%(窗口空间不应超过序列空间的一半为4))33.50kbps的信道上使用8位的序列号,重传率为0.01(错误率为1%),每个安全到达的祯会浪费40bit(header)。每100祯需要增加40bit的NAK祯,平均每祯需要付出0.4bit。平均每个祯需要付出1%*4000bits=40bit的代价。所以平均每祯需要浪费40+40+0.4=80.4。所以浪费的带宽和开销占80.4/(80.4+3960)=1.99%。34.假设传输开始时间t=0,第一个祯发送时间为512/64kbps=8ms。t=8+270=278ms时,到达。t=278+270=548ms时,ACK返回。这里数据吞吐量为512/548ms=934bps(窗口大小为1)。若窗口大小为7,在548ms内,可以传输7*512=3548bit,吞吐量为3548/548ms=6.54kbps。若窗口大小为15在548ms内,可以传输15*512=7680bit,吞吐量为7680/548ms=14kbps。窗口大小为127时,已经超过卫星信道全速,所以吞吐量为64kbps35.线缆传播速度是200km/ms。所以100km,需要传输时间为500us。每个T1祯为193bit,在125us内发送出去,所以线上的祯总是为4个祯为772bit36.PPP是被设计用来软件处理的,并不是用硬件处理的。对于软件来说处理byte数据,显然比处理bit数据要简单的多。另外PPP是设计用在modem上,而modem允许按字节传输而不是按bit传输37.PPP至少含有2个标志字节,1个协议字节,2个校验字节,总共5字节开销。最大含有2个标志字节,地址和控制位各需1个,2位协议字节,4位校验字节,总共10字节开销38.AAL5祯含有2个PPP协议位,100个有效负载字节,一些填充字节,和8个祯尾。要使这个祯长度为48的整数,填充字节需要34个。这使得最终AAL5祯长为144bytes。可以分成3个ATM信元。第一个信元包含2个PPP协议字节,46字节的IP包。第二个信元包含后继的48字节IP包。第三个信元包含最后6个字节IP包,34个填充字节和8个祯尾39.