资源描述
计算机网络应用层习题5.1(1)说明运输层的作用。网络层提供数据报或虚电路服务对上面的运输层有何影响?(2) 当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是无连接的?(3) 接收端受到有差错的UDP用户数据报如何处理?答:(1)运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。在通信子网中峰有运输层。运输层只存在于通信子网以外的主机中。(2)(3) 直接扔掉5.2试用示意图来解释运输层的复用。一个给定的运输连接能否分裂成许多条虚电路?试解释之;画图说明许多个运输用户复用到一条运输连接上,而这条运输连接又复用到若干条网络连接(虚电路)上。答:所有的传输层协议都为应用程序提供多路复用多路分解服务。除了多路复用移路分解服务之外,传输层协议还可以给应用进程提供其他服务,包括可靠数据传输、带宽保证和传输延迟保证。传输层在两个应用程序之间提供了逻辑的而不是物理的通信如图所示,传输层协议实现于终端系统上,而不是在网络路由器上。网络路由器只作用于3-PDU的网络层字段,而不作用于传输层字段。5.4解释为什么突然释放运输连接就可能丢失用户数据而使用TCP的连接释放方法就可保证不丢失数据。答:当主机1和主机2之间连接建立后,主机1发送了一个TCP数据段并正确抵达主机2,接着主机1发送另一个TCP数据段,这次很不幸,主机2在收到第二个TCP数据段之前发出了释放连接请求,如果就这样突然释放连接,显然主机1发送的第二个TCP报文段会丢失。而使用TCP的连接释放方法,主机2发出了释放连接的请求,那么即使收到主机1的确认后,只会释放主机2到主机1方向的连接,即主机2不再向主机1发送数据,而仍然可接收主机1发来的数据,所以可保证不丢失数据。5.5试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做可能会出现什么情况。答:我们知道,3次握手完成两个重要功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送与确认。现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机A和B之间的通信。假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号用于A到B的交通,也不知道A是否同意B所建议的用于B到A交通的初始序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待接收连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。5.6 一个TCP报文段的数据部分最多为多少字节?为什么?如果用户要传送的数据的字节长度超过TCP报文段中的序号字段可能编出的最大序号,问还能否用TCP来传送?答:由于Tcp报文数据部分加上TCP首部的20字节,再加上IP数据报的首部的20字节,要放入IP数据报中,则TCP报文的最大长度是65495字节。当然,IP首部包含了选择,则IP首部长度超过20字节,这时TCP报文段的数据部分的长度将小于65495字节。如果长度超过TCP报文段中的序号字段可能编出的最大序号,可以循环重复使用序号。5.7主机A和B使用TCP通信。在B发送过的报文段中,有这样连续的两个:ACK=120和ACK=100o这可能吗(前一个报文段确认的序号还大于后一个的)?试说明理由答:不可能,ACK=120的意思是告诉A, 120以前的数据全部受到了,所以没有必要再发送 ACK=100 To5.8在使用TCP传送数据时,如果有一个确认报文段丢失了,也不一定会引起对方数据的重传。试说明理由(可结合上一题讨论)。答:如果当前的确认报文段丢失了,可以不重传数据,只要后续的数据能够正常到达,并且发送方接受到接收方发送的后续数据的确认报文段就表示,当前的数据也正常接受了。5.9在7. 4.3小节曾讲过,若收到的报文段无差错,只是未按序号,则TCP对此未作明确规定,而是让TCP的实现者自行确定。试讨论两种可能的方法的优劣:(1) 将不按序的报文段丢弃;(2) 先将不按序的报文段暂存于接收缓存内,待所缺序号的报文段收齐后再一起上交应用层。答:如果丢弃了,则会造成很多数据报的重新传输,造成网络资源的浪费;如果尽管到达的每个数据报都是完整的,但可能到达的数据报顺序是错误的,因此,TCP必须准备适当地重组报文的各个部分。这样可以减轻网络负担。5.10设TCP使用的最大窗口为64KB,即64*1024字节。而传输信道的带宽可认为是不受限制的。若报文段的平均时延为20ms,问所能得到的最大的吞吐量是多少?答:可见在报文段平均往返时延20ms内,发送方最多能发送64x1024x8比特,所以最大的吞吐量为=64x1024x8? (20x10-3)=26214400bit/s=26.21 Mbit/s。5.11试计算一个包括5段链路的运输连接的单程端到端时延。5段链路程中有2段是卫星链路。每条卫星链路又由上行链路和下行链路两部分组成。可以取这两部分的传播时延之和为250ms,每一个广域网的范围为1500km,其传播时延可按150000km/s来计算。各数据链路数率为48kbit/s,帧长为960bito答:5 段链路的传播时延=250x2+ (1500/150000) x3xl000=530ms5 段链路的发送时延=960 (48x1000) x5x 1000= 100ms所以5段链路单程端到端时延=530+100=630ms5.12重复上题,但假定其中的一个陆地上的广域网的传输时延为150mS答:5 段链路的传播时延=250x2+ (1500/150000) x2xl000+150=670ms5 段链路的发送时延=960? (48x1000) x5x 1000= 100ms所以5段链路单程端到端时延=670+100=870ms5.13什么是Karn算法?在TCP的重传机制中,若不采用Karn算法,而是在收到确认时认为是对重传报文段的确认,那么由此得出的往返时延样本和重传时间都会偏小。试问:重传时间最后会减小到什么程度?答:Karn提出了一个算法:在计算平均往返时延时,只要报文段重发了,就不采用其往返时延样本。这样得出的平均往返时延和重发时间当然就较准确。反之,若不采用Kam算法,若收到的确认是对重发报文段的确认,但却被源站当成是对原来的报文段的确认,那么这样计算出的往返时延样本和重发时间就会偏大。如果后面再发送的报文段又是经过重发后才收到确认报文段,那么按此方法得出的重发时间就越来越长。若收到的确认是对原来的报文段的确认,但被当成是对重发报文段的确认,则由此计算出的往返时延样本和重发时间都会偏小。这就必然导致报文段的重发。这样就有可能导致重发时间越来越短。5.14若一个应用进程使用运输层的用户数据报UDP。但继续向下交给IP层后,又封装成IP数据报。既然都是数据报,是否可以跳过UDP而直接交给IP层? UDP能否提供IP没有提供的功能?答:UDP在IP的数据报服务之上加了很少一点功能,这就是端口的功能(有了端口,运输层就可以进行复用和分用)和差错检测的功能。5.15使用TCP对实时话音数据的传输有没有什么问题?使用UDP在传送数据文件时会有什么问题?答:由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用很重要,实时话音数据的传输要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。5.16 一个应用程序用UDP,到了 IP层将数据报再划分为4个数据报片发送出去。结果前2个数据报片丢失,后2个到达目的站。过了一段时间应用程序重传UDP,而IP层仍然划分为4个数据报片来传送。结果这次前2个到达目的站而后2个丢失。问:在目的站能否将这2次传输的4个数据报片组装成为一个完整的数据报?假定目的站第1次受到的后2个数据报片仍然保存在目的站的缓存中。答:可以合并。5.17为什么在TCP首部中有一个首部长度字段,而UDP的首部中就没有这个字段?答:UDP数据报中没有控制信息等字段。5.18个UDP用户数据报的数据字段为8192字段。要使用以太网来传送。问应当划分为几个数据报片?说明每个数据报片的数据字段长度和片偏移字段的值。答:6 个数据报片,1480, 0; 1480, 185; 1480, 370; 1480, 555; 1480, 740; 792, 9255.24在TCP的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每一种算法各起什么作用? “乘法减少”和“加法增大”各用在什么情况下?答:慢开始:在主机刚刚开始发送报文段时可先将拥塞窗口 cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。拥塞避免:当拥塞窗口值大于慢开始门限时,停止使用慢开始算法而改用拥塞避免算法。拥塞避免算法使发送端的拥塞窗口每经过一个往返时延RTT就增加一个MSS的大小。快重传算法规定,发送端只要一连收到三个重复的ACK即可断定有分组丢失了,就应立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时。快恢复算法:(1)当发送端收到连续三个重复的ACK时,就重新设置慢开始门限ssthresho与慢开始不同之处是拥塞窗口 cwnd不是设置为1,而是设置为ssthresh + 3 *MSS。(3) 若收到的重复的ACK为n个(n 3),则将cwnd设置为ssthresh + n * MSS。(4) 若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。(5) 若收到了确认新的报文段的ACK,就将cwnd缩小到ssthresho“乘法减小“是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值ssthresh设置为当前的拥塞窗口值乘以0.5。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。“加法增大”是指执行拥塞避免算法后,当收到对所有报文段的确认就将拥塞窗口 cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。5.19网络允许的最大报文段长度为128字节,序号用8bit表示,报文段在网络中的寿命为30秒,求每一条TCP连接所能达到的最高数据率。答:28xl28x8/30=8738bit/s5.20若TCP中的序号采用64bit编码,而每一个字节有其自己的序号,问在75Tb/s的传输速率下(光线的理论速率),分组的寿命应为多大才不会使序号发生重复?答:264/x=75xl()i2/8=x=1967652s=22.8 天5.21 一个TCP连接下面使用256kb/s的链路,其端到端时延为128ms。经测试,发现吞吐量只有120kb/So问发送端窗口是多少?答:来回路程的时延=128x2=256ms。设发送窗口为X字节,假定一次最大发送量等于窗口值,那么,每发送一次都得停下来等待得到本窗口的确认,以得到新的发送许可,这样8X8X 256x10;=120x103, X=7228 字节256x1035.22设源站和目的站相距20km,而信号在传输媒体中的传播速率为200km/ms。若一个分组长度为1KB,而其发送时间等于信号的往返传播时延,求数据的发送速率。答:20/200=0.1 mslKB/0.2ms = 5MB/s5.23 UDP用户数据报的首部的16进制表示是:06 32 00 45 00 1C E2 17。求源端口、目的端口、用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器还是从服务器发送给客户?使用UDP的这个服务器程序是什么?答:首部的二进制形式为源端口 目的端口用户数据报的总长度检验和U11000110010 0000000001000101 0000000000011100 1110001000010111”1586692857879数据部分长度是28 8 = 20从客户发给服务器,服务程序是TFTP5.24已知TCP的往返时延的当前值是30mso现在收到了 3个连接的确认报文段,他们比相应的数据报文段的发送时间分别滞后的时间是:26ms,32ms和24ms。设a=0.9。计算新的估计的往返时延值RTTo答:第一次 RTT=30x0.9+ 26x0.1 =29.6第二次 RTT=29.6xO.9 +32x0.1 =29.84第三次 RTT=29. 84X0. 9 + 24X0. 1=29. 256
展开阅读全文