计算机网络(谢希仁第五版)第五章课后习题详解 下载本文

1460字节。

(1) 在TCP的序号不重复使用的条件下,L的最大值是多少?

(2) 假定使用上面计算出文件长度,而运输层、网络层和数据链路层所使用的首部

开销共66字节,链路的数据率为10Mb/s,试求这个文件所需的最短发送时间。 解:(1)L_max的最大值是2^32=4GB,G=2^30.

(2) 满载分片数Q={L_max/MSS}取整=发送的总报文数 N=Q*(MSS+66)+{(L_max-Q*MSS)+66}=+682=

总字节数是N=字节,发送字节需时间为:N*8/(10*10^6)

=3591.3秒,即59.85分,约1小时。

5—23 主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100。试问: (1) 第一个报文段携带了多少个字节的数据?

(2) 主机B收到第一个报文段后发回的确认中的确认号应当是多少?

(3) 如果主机B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第

二个报文段中的数据有多少字节?

(4) 如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文

段到达后向A发送确认。试问这个确认号应为多少? 解:(1)第一个报文段的数据序号是70到99,共30字节的数据。 (2)确认号应为100. (3)80字节。 (4)70

5—24 一个TCP连接下面使用256kb/s的链路,其端到端时延为128ms。经测试,发现

吞吐量只有120kb/s。试问发送窗口W是多少?(提示:可以有两种答案,取决于接收等

发出确认的时机)。 解:

来回路程的时延等于256ms(=128ms×2).设窗口值为X(注意:以字节为单位),假

定一次最大发送量等于窗口值,且发射时间等于256ms,那么,每发送一次都得停下来期待 再次得到下一窗口的确认,以得到新的发送许可.这样,发射时间等于停止等待应答的时 间,

结果,测到的平均吞吐率就等于发送速率的一半,即 8X÷(256×1000)=256×0.001 X=8192

所以,窗口值为8192.

5—25 为什么在TCP首部中要把TCP端口号放入最开始的4个字节?

答:在ICMP的差错报文中要包含IP首部后面的8个字节的内容,而这里面有TCP

首部中的源端口和目的端口。当TCP收到ICMP差错报文时需要用这两个端口来确定是哪

条连接出了差错。

5—26 为什么在TCP首部中有一个首部长度字段,而UDP的首部中就没有这个这个字段 ?

答:TCP首部除固定长度部分外,还有选项,因此TCP首部长度是可变的。UDP首

部长度是固定的。

5—27 一个TCP报文段的数据部分最多为多少个字节?为什么?如果用户要传送的数

据的字节长度超过TCP报文字段中的序号字段可能编出的最大序号,问还能否用TCP来传 送?

答:65495字节,此数据部分加上TCP首部的20字节,再加上IP首部的20字节,正好是IP

数据报的最大长度65535.(当然,若IP首部包含了选择,则IP首部长度超过 20字节

,这时TCP报文段的数据部分的长度将小于65495字节。)

数据的字节长度超过TCP报文段中的序号字段可能编出的最大序号,通过循环使

用序号,仍能用TCP来传送。

5—28 主机A向主机B发送TCP报文段,首部中的源端口是m而目的端口是n。当B向A发

送回信时,其TCP报文段的首部中源端口和目的端口分别是什么? 答:分别是n和m。

5—29 在使用TCP传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该

确认报文段对应的数据的重传。试说明理由。 答:还未重传就收到了对更高序号的确认。

5—30 设TCP使用的最大窗口为65535字节,而传输信道不产生差错,带宽也不受限制

。若报文段的平均往返时延为20ms,问所能得到的最大吞吐量是多少?

答:在发送时延可忽略的情况下,最大数据率=最大窗口*8/平均往返时间=26.2Mb/s。

5—31 通信信道带宽为1Gb/s,端到端时延为10ms。TCP的发送窗口为65535字节。试

问:可能达到的最大吞吐量是多少?信道的利用率是多少? 答: L=65536×8+40×8= C=109b/s L/C=0.s Td=10×10-3s 0.

Throughput=L/(L/C+2×Td)=/0.=25.5Mb/s Efficiency=(L/C)//(L/C+2×D)=0.0255

最大吞吐量为25.5Mb/s。信道利用率为25.5/1000=2.55%

5—32 什么是Karn算法?在TCP的重传机制中,若不采用Karn算法,而是在收到确认时

都认为是对重传报文段的确认,那么由此得出的往返时延样本和重传时间都会偏小。试

问:重传时间最后会减小到什么程度?

答:Karn算法:在计算平均往返时延RTT时,只要报文段重传了,就不采用其往返时延

样本。

设新往返时延样本Ti

RTT(1)=a*RTT(i-1)+(1-a)*T(i); RTT^(i)=a* RTT(i-1)+(1-a)*T(i)/2; RTT(1)=a*0+(1-a)*T(1)= (1-a)*T(1); RTT^(1)=a*0+(1-a)*T(1)/2= RTT(1)/2 RTT(2)= a*RTT(1)+(1-a)*T(2); RTT^(2)= a*RTT(1)+(1-a)*T(2)/2; = a*RTT(1)/2+(1-a)*T(2)/2= RTT(2)/2

RTO=beta*RTT,在统计意义上,重传时间最后会减小到使用karn算法的1/2.

5—33 假定TCP在开始建立连接时,发送方设定超时重传时间是RTO=6s。

(1)当发送方接到对方的连接确认报文段时,测量出RTT样本值为1.5s。试计算现在的

RTO值。

(2)当发送方发送数据报文段并接收到确认时,测量出RTT样本值为2.5s。试计算现在

的RTO值。 答:

(1)据RFC2988建议,RTO=RTTs+4*RTTd。其中RTTd是RTTs的偏差加权均值。

初次测量时,RTTd(1)= RTT(1)/2;

后续测量中,RTTd(i)=(1-Beta)* RTTd(i-1)+Beta*{ RTTs- RTT(i)} ;

Beta=1/4

依题意,RTT(1)样本值为1.5秒,则

RTTs(1)=RTT(1)=1.5s RTTd(1)=RTT(1)/2=0.75s RTO(1)=RTTs(1)+4RTTd(1)=1.5+4*0.75=4.5(s)

(2)RTT(2)=2.5 RTTs(1)=1.5s RTTd(1)=0.75s

RTTd(2)=(1-Beta)* RTTd(1)+Beta*{ RTTs(1)- RT (2)}=0.75*3/4+{1.5-2.5}/4=13/16

RTO(2)=RTTs(1)+4RTTd(2)=1.5+4*13/16=4.75s

5—34 已知第一次测得TCP的往返时延的当前值是30 ms。现在收到了三个接连的确认

报文段,它们比相应的数据报文段的发送时间分别滞后的时间是:26ms,32ms和24ms。

设α=0.9。试计算每一次的新的加权平均往返时间值RTTs。讨论所得出的结果。 答:a=0.1, RTTO=30

RTT1=RTTO*(1-a) +26*a=29.6 RTT2=RTT1*a+32(1-a)=29.84 RTT3=RTT2*a+24(1-a)=29.256

三次算出加权平均往返时间分别为29.6,29.84和29.256ms。 可以看出,RTT的样本值变化多达20%时,加权平均往返

5—35 试计算一个包括5段链路的运输连接的单程端到端时延。5段链路程中有2段是

卫星链路,有3段是广域网链路。每条卫星链路又由上行链路和下行链路两部分组成。

可以取这两部分的传播时延之和为250ms。每一个广域网的范围为1500km,其传播时延

可按km/s来计算。各数据链路速率为48kb/s,帧长为960位。 答:5段链路的传播时延=250*2+(1500/)*3*1000=530ms 5段链路的发送时延=960/(48*1000)*5*1000=100ms 所以5段链路单程端到端时延=530+100=630ms

5—36 重复5-35题,但假定其中的一个陆地上的广域网的传输时延为150ms。 答:760ms

5—37 在TCP的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每

一种算法各起什么作用? “乘法减小”和“加法增大”各用在什么情况下? 答:慢开始:

在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段