计算机网络(第5版)课后习题答案:第5章 运输层 下载本文

所以,窗口值为8192。

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

答:在ICMP的差错报文中要包含IP首部后面的8个字节的内容,而这里面有TCP首部中的源端口和目的端口。当TCP收到ICMP差错报文时需要用这两个端口来确定是哪条连接出了差错。

5-26 为什么在TCP首部中有一个首部长度字段,而UDP的首部中就没有这个这个字段。 答:TCP首部除固定长度部分外,还有选项,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=524608b, C=109b/s 发送时延 L/C=0.000524608s 传输时延 Td=10×10-3s=0.01s Throughput=L/(L/C+2×Td)=524608/0.020524608=25.6Mb/s Efficiency=(L/C)/(L/C+2×Td )= 0.000524608/0.020524608=0.0255 最大吞吐量为25.6Mb/s。信道利用率为25.5/1000=2.55%。

5-32 什么是Karn算法?在TCP的重传机制中,若不采用Karn算法,而是在收到确认时都认为是对重传报文段的确认,那么由此得出的往返时延样本和重传时间都会偏小。试问:重传时间最后会减小到什么程度?

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

本。

超时重传时间 RTO ? RTTS + 4 ? RTTD

新的 RTTS ? (1 ? ?) ? (旧的 RTTS) ? ? ? (新的 RTT 样本)

RTT 的偏差的加权平均值RTTD (第一次测量时,RTTD 值取为测量到的 RTT 样本值的一半) :新的 RTTD = (1 ? ?) ? (旧的RTTD) + ? ? ?RTTS ? 新的 RTT 样本? 。 设新往返时延样本Ti

RTT(1)=?*RTT(i-1)+(1-?)*T(i); RTT^(i)=?* RTT(i-1)+(1-?)*T(i)/2; RTT(1)=?*0+(1-?)*T(1)= (1-?)*T(1); RTT^(1)=?*0+(1-?)*T(1)/2= RTT(1)/2 RTT(2)= ?*RTT(1)+(1-?)*T(2); RTT^(2)= ?*RTT(1)+(1-?)*T(2)/2; = ?*RTT(1)/2+(1-?)*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%时,加权平均往返时间RTTs的变化却很小。

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

链路,有3段是广域网链路。每条卫星链路又由上行链路和下行链路两部分组成。可以取这两部分的传播时延之和为250ms。每一个广域网的范围为1500km,其传播时延可按150000km/s来计算。各数据链路速率为48kb/s,帧长为960位。 答:5段链路的传播时延=250*2+(1500/150000)*3*1000=530ms 5段链路的发送时延=960/(48*1000)*5*1000=100ms

所以5段链路单程端到端时延=530+100=630ms

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

5-37 在TCP的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每一种算法各起什么作用? “乘法减小”和“加法增大”各用在什么情况下?

答:慢开始:在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以分组注入到网络的速率更加合理。 拥塞避免:当拥塞窗口值大于慢开始门限时,停止使用慢开始算法而改用拥塞避免算法。拥塞避免算法使发送的拥塞窗口每经过一个往返时延RTT就增加一个MSS的大小。

快重传算法:发送端只要一连收到三个重复的ACK即可断定有分组丢失了,就应该立即重传丢手的报文段而不必继续等待为该报文段设置的重传计时器的超时。

快恢复算法:当发送端收到连续三个重复的ACK时,就重新设置慢开始门限ssthresh(当前拥塞窗口的一半)。与慢开始不同之处是拥塞窗口cwnd 不是设置为1,而是设置为新的慢开始门限ssthresh(当前拥塞窗口的一半)。 乘法减小:

是指不论在慢开始阶段还是拥塞避免阶段,只要出现超时(即很可能出现了网络拥塞),就把慢开始门限值 ssthresh设置为当前的拥塞窗口值的一半。当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入到网络中的分组数。 加法增大:

是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口 cwnd增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。

5-38 设TCP的ssthresh的初始值为8(单位为报文段)。当拥塞窗口上升到12时网络发生了超时,TCP使用慢开始和拥塞避免。试分别求出第1次到第15次传输的各拥塞窗口大小。你能说明拥塞控制窗口每一次变化的原因吗?

答:拥塞窗口大小分别为:1,2,4,8,9,10,11,12,1,2,4,6,7,8,9。

5-39 TCP的拥塞窗口cwnd大小与传输轮次n的关系如下所示: Cwnd n 1 1 2 2 3 4 4 8 5 16 6 32 7 33

8 34 9 35 10 36 11 37 12 38 13 39 14 40 15 41 16 42 17 21 18 22 19 23 20 24 21 25 22 26 23 1 24 2 25 4 26 8

(1)试画出如图5-25所示的拥塞窗口与传输轮次的关系曲线。 (2)指明TCP工作在慢开始阶段的时间间隔。 (3)指明TCP工作在拥塞避免阶段的时间间隔。

(4)在第16轮次和第22轮次之后发送方是通过收到三个重复的确认还是通过超市检测到丢失了报文段?

(5)在第1轮次,第18轮次和第24轮次发送时,门限ssthresh分别被设置为多大? (6)在第几轮次发送出第70个报文段?

(7)假定在第26轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口cwnd和门限ssthresh应设置为多大? 答:(1) 拥塞窗口与传输轮次的关系曲线如图所示(课本后答案): (2) 慢开始时间间隔:[1,6]和[23,26] (3) 拥塞避免时间间隔:[6,16]和[17,22] (4) 在第16轮次之后发送方通过收到三个重复的确认检测到丢失的报文段。在第22轮次之后发送方是通过超时检测到丢失的报文段。

(5) 在第1轮次发送时,门限ssthresh被设置为32在第18轮次发送时,门限ssthresh被设置为发生拥塞时的一半,即21。在第24轮次发送时,门限ssthresh是第18轮次发送时设置的21。

(6) 第70报文段在第7轮次发送出。

(7) 拥塞窗口cwnd和门限ssthresh应设置为8的一半,即4。

5-40 TCP在进行流量控制时是以分组的丢失作为产生拥塞的标志。有没有不是因拥塞而引起的分组丢失的情况?如有,请举出三种情况。

答:当Ip数据报在传输过程中需要分片,但其中的一个数据报未能及时到达终点,而终点组装IP数据报已超时,因而只能丢失该数据报;IP数据报已经到达终点,但终点的缓存没有足够的空间存放此数据报;数据报在转发过程中经过一个局域网的网桥,但网桥在转发该