《计算机网络教程》(微课版 第五版)第五章 运输层 课后习题及答案

第5章

5-1 试说明运输层在协议栈中的地位和做用。运输层的通讯和网络层的通讯有什么重要区别?
解答:从通讯和信息处理的角度看,运输层向它上面的应用层提供端到端通讯服务,它属于面向通讯部分的最高层,同时也是用户功能中的最低层。当位于网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通讯时,只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
虽然网络层实现了主机到主机的逻辑通讯,但严格地讲,通讯的真正端点并非主机而是主机中的进程。所以,运输层在网络层之上提供应用进程间的逻辑通讯。web

5-2 当应用程序使用面向链接的TCP和无链接的IP时,这种传输是面向链接的仍是无链接的?
解答:从网络层看是无链接的,但从运输层看是面向链接的。算法

5-3 接收方收到有差错的UDP用户数据报时应如何处理?
解答:丢弃且不通知发送方。缓存

5-4 在“滑动窗口”概念中,“发送窗口”和“接收窗口”的做用是什么?若是接收方的接收能力不断地发生变化,则采起何种措施能够提升协议的效率。
解答:“发送窗口”做用是限制发送方连续发送数据的数量,即控制发送方发送数据的平均速率。“接收窗口”反映了接收方当前接收缓存的大小,即接收方接收能力的大小。当接收方的接收能力不断地发生变化时,能够将接收窗口的大小发送给发送方,调节发送方的发送速率,避免因发送方发送速率太大或过小而致使接收缓存的溢出或带宽的浪费,从而提升协议的效率。服务器

5-5 简述TCP和UDP的主要区别。
解答:TCP提供的是面向链接、可靠字的字节流服务,而且有流量控制和拥塞控制功能。UDP提供的是无链接、不可靠的数据报服务,无流量控制和拥塞控制。网络

5-7 若是因特网中的全部链路都提供可靠的传输服务,TCP可靠传输服务将会是彻底多余的吗?为何?
解答:TCP可靠传输服务不是多余的。由于在端到端的数据传输过程当中并非全部的差错都来自分组在链路上传输时的比特级差错,例如因为网络拥塞致使路由器的分组丢弃,路由器在转发分组时的故障等都会致使端到端的数据传输的差错,这些都不可能经过链路层的可靠数据传输得以解决,必须由端到端的运输层可靠数据传输服务来解决。tcp

5-8 解释为何忽然释放运输链接就可能会丢失用户数据,而使用TCP的链接释放方法就可保证不丢失数据。
解答:假定A和B之间创建了TCP链接。若是A发送完数据在尚未接收到对方确认时就忽然释放链接,则不能保证这些没有被确认的数据在传输中不会丢失。
若是A在收到B对全部发送数据的确认后释放链接,A发送的数据不会丢失,可能B还在数据发送,这些数据A都没法正确收到。
TCP的链接释放在两个方向都要发送链接释放请求和确认,保证数据不丢失。svg

5-9 试用具体例子说明为何在运输链接创建时要使用三次联络。说明如不这样作可能会出现什么状况。
解答:这主要是为了防止已失效的链接请求报文段忽然又传送到了TCP服务器,致使创建错误的链接而浪费资源,如图所示。
在这里插入图片描述大数据

5-11 主机A和B使用TCP通讯。在B发送过的报文段中,有这样连续的两个:ack = 120和ack = 100。这可能吗(前一个报文段确认的序号还大于后一个的)?试说明理由。
解答:通常不会,由于TCP的接收方采用的是累积确认,确认号不会倒退。但当出现失序时会有这种状况出现。设想A连续发送两个报文段:(seq = 92,DATA共8字节)和(seq =100,DATA共20字节),均正确到达B。B连续发送两个确认:(ack = 100) 和 (ack = 120)。但前者在网络中传送时经历了很大的时延,使得A先收到B后发送的确认。图A-1说明了这一状况。见图A-1。3d

在这里插入图片描述
5-12 在使用tcp传送数据时,若是有一个确认报文段丢失了,也不必定会引发与该确认报文段对应的数据的重传,试说明理由
这是由于发送方可能还未重传时,就收到了对更高序号的确认。 例如主机A连续发送两个报文段:(SEQ=92,DATA共8B)和(SEQ=100,DATA共20B),均正确到达主机B,B连续发送两个确认:(ACK=1 00)和(ACK=1 20)。但前者在传送时丢失了,例如A在第一个报文段(SEQ=92,DATA共8B)超时以前收到了对第二个报文段的确认(ACK=I 20),此时A知道,11 9号和在1 1 9号以前的全部字节(包括第一个报文段中的全部字节)均已B正确接收,所以A不会再重传第一个报文段。xml

5-13 请简要比较TCP的可靠传输实现与GBN算法的主要异同。
解答:TCP接收窗口大小不为1,发送窗口和接收窗口大小动态变化,而GBN接收窗口为1。
TCP标准没有规定对不按序到达的数据应如何处理。一般是先临时存放在接收窗口中,等到字节流中所缺乏的字节收到后,再按序交付上层的应用进程。
TCP和GBN都是采用累积确认方式,但在发生超时,TCP发送方仅对超时的分组重传,而GBN是重传窗口内全部已发送的分组。
TCP的编号以字节为单位,而GBN以分组为单位。
所以TCP的算法介于GBN和SR之间。

5-14 若是收到的报文段无差错,只是未按序号,则 TCP 对此未做明确规定,而是让 TCP 的实现者自行肯定。试讨论两种可能的方法的优劣:
(1)将不按序的报文段丢弃。     
(2)先将不按序的报文段暂存与接收缓存内,待所缺序号的报文段收齐后再一块儿上交应用层。

解答:(1)第一种方法将不按序的报文段丢弃,会引发被丢弃报文段的重复传送,增长对网络带宽的消耗,但因为用不着将该报文段暂存,可避免对接收方缓冲区的占用。  
(2)第二种方法先将不按序的报文段暂存于接收缓存内,待所缺序号的报文段收齐后再一块儿上交应用层;这样有可能避免发送方对已经被接收方收到的不按序的报文段的重传,减小对 网络带宽的消耗,但增长了接收方缓冲区的开销。

5-15 设 TCP 使用的最大窗口尺寸为 64 KB,即 64∗102464∗1024,TCP 报文在网络上的平均往返时间为 20 ms。问 TCP 所能获得的最大吞吐量是多少?(假设传输信道的带宽是不受限的)
在平均往返时间 20ms 内,发送的最大数据量为最大窗口值,即:
在这里插入图片描述

5-18 TCP 接收方收到 3 次重复的 ACK 就执行快速重传。为何不在第一次接收到重复的ACK后就快速重传?
① 因为数据分组乱序到达,如 A、B、C 分组,B 分组到达后,接收端发送一个但愿获得 A 分组的 ACK,接着 C 分组到达,接收端又发送一个但愿获得 A 分组的A CK。
② 因为网络延迟形成的,如 A 分组,A 分组在超太重传超时间隔的时间后到达,此时接收端已经发生了一个但愿获得 A 分组的 ACK,发送端重传分组 A,因为网络延迟,A 分组又在超太重传超时间隔的时间后到达,接收端又已经发送了一个但愿获得 A 分组的ACK。

5-19 用TCP传送512字节的数据。设窗口为100字节,而TCP报文段每次也是传送100字节的数据。再设发送方和接收方的起始序号分别选为100和200,试画出相似于图5-15的工做示意图。从链接创建阶段到链接释放都要画上。
解答
在这里插入图片描述

5-21 在下图所示的链接释放过程当中,主机A在发送完对B的链接释放请求报文段的确认后,为何还要等待一段超时时间再完全关闭链接?
在这里插入图片描述
由于主机A的确认有可能丢失,这时B会重传FIN报文段。在这段超时时间内,若A又收到B重传的FIN报文段,A须要再次进行确认。收到A的最后确认,B才能最终将整个链接释放。主机A的TCP再向其应用进程报告,整个链接已经所有释放。

5-23 是否 TCP 和 UDP 都须要计算往返时间 RTT?
① 往返时延RTT只是对运输层的TCP协议才很重要,由于TCP要根据平均往返时延RTT的值来设置超时计时器的超时时间。 UDP没有确认和重传机制,所以RTT对UDP没有什么意义。 所以,不要笼统地说“往返时延RTT对运输层来讲很重要”,由于只有TCP才须要计算RTT,而UDP不须要计算RTT。

5-24 在 TCP 的往返时间的估计中,你认为为何 TCP 忽略对重传报文段的往返时间测量值的 RTT 样本。
由于分组丢失差错和过早超时均可能致使发送方重传分组,所以发送方没法肯定接收到的确认是对原来发送的分组的确认仍是对重传的分组进行确认。若认为是对重传的分组进行确认,而其实是过早超时,该分组是对原来发送的分组的确认,则可能测量值 RTT 样本比实际值要小。

5-27 使用TCP对实时话音数据的传输有没有什么问题?使用UDP在传送数据文件时会有什么问题?
解答:TCP的流量控制和拥塞控制和可靠数据传输机制会致使比较大的分组时延抖动,而大的时延抖动会严重影响实时话音数据传输的质量。因为数据文件的传输须要可靠数据传输,所以在使用UDP在传送数据文件时须要应用程序本身实现可靠数据传输功能。

5-28 TCP在进行拥塞控制时是以分组的丢失做为产生拥塞的标志。有没有不是因拥塞而引发的分组丢失的状况?若有,请举出三种状况。
解答:有。一是信道误码致使中间结点将分组丢弃;二是路由错误致使分组在网络中兜圈子最后被路由器丢弃;三是中间路由器在接收了分组尚未转发出去时故障,致使分组丢失。这些状况发生的几率都比较小。

5-31 一个UDP用户数据报的数据字段为8192字节,要使用以太网来传送,试问应该划分为几个数据报片?说明每个数据报片的数据字段长度和片偏移字段的值。
6,以太网帧能够承载不超过1500字节的数据。其中包含20字节的IP首部(不考虑可选字段),即以太网帧能够承载的UDP数据报的长度不超过1480。题目中UDP数据报的数据字段的长度为8192字节,加上首部的8字节,共8200字节。8200/1480=5.54,所以应当将原数据报划分为6个数据报片。
数据字段的长度:前5个是1480字节,最后一个是800字节。
片偏移字段的值分别是:0,185,370,555,740和925.。

5-32 简述TCP流量控制和拥塞控制的不一样。
解答:流量控制解决因发送方发送数据太快而致使接收方来不及接收使接收方缓存溢出的问题。流量控制的基本方法就接收方根据本身的接收能力控制发送方的发送速率。TCP采用接收方控制发送方发送窗口大小的方法来实如今TCP链接上的流量控制。
拥塞控制就是防止过多的数据注入到网络中,这样可使网络中的路由器或链路不致过载。TCP的发送方维持一个叫作拥塞窗口的状态变量。拥塞窗口的大小取决于网络的拥塞程度,当网络拥塞时减少拥塞窗口的大小,控制TCP发送方的发送速率。TCP发送方的发送窗口大小取接收窗口和拥塞窗口的最小值。

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

  • 在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增长至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,能够分组注入到网络的速率更加合理。

拥塞避免:

  • 当拥塞窗口值大于慢开始门限时,中止使用慢开始算法而改用拥塞避免算法。拥塞避免算法使发送的拥塞窗口每通过一个往返时延RTT就增长一个MSS的大小。

快重传算法规定:

  • 发送端只要一连收到三个重复的ACK便可判定有分组丢失了,就应该当即重传丢手的报文段而没必要继续等待为该报文段设置的重传计时器的超时。

快恢复算法:

  • 当发送端收到连续三个重复的ACK时,就从新设置慢开始门限 ssthresh
  • 与慢开始不一样之处是拥塞窗口 cwnd 不是设置为 1,而是设置为ssthresh
  • 若收到的重复的AVK为n个(n>3),则将cwnd设置为ssthresh
  • 若发送窗口值还允许发送报文段,就按拥塞避免算法继续发送报文段。
  • 若收到了确认新的报文段的ACK,就将cwnd缩小到ssthresh

乘法减少:

  • 是指不论在慢开始阶段仍是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5。
    当网络频繁出现拥塞时,ssthresh 值就降低得很快,以大大减小注入到网络中的分组数。

加法增大:

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

5-34 TCP使用慢启动和拥塞控制,设TCP的拥塞窗口阈值的初始值为8(单位MSS)。从慢启动开始,当拥塞窗口上升到12时网络发生了超时。试画出每一个“轮次”TCP拥塞窗口的演变曲线图(横坐标为“轮次”,纵坐标为拥塞窗口大小)。说明拥塞窗口变化的缘由。
拥塞窗口大小分别为:1,2,4,8,9,10,11,12,1,2,4,6,7,8,9。

依照原理,首先执行TCP链接初始化,将拥塞窗口cwnd值置为1;其次执行慢开始算法,cwnd按指数规律增加,所以随后窗口大小分别为2,4,8。当拥塞窗口cwnd=ssthresh时,进入拥塞避免阶段,其窗口大小依次是9,10,11,12,直到上升到12为止发生拥塞;而后把门限值ssthresh设置为当前的拥塞窗口值乘以0.5,门限值ssthresh变为6,;而后进入慢开始,cwnd值置为1,cwnd按指数规律增加,随后窗口大小分别为1,2,4,6,当拥塞窗口cwnd=ssthresh时,进入拥塞避免阶段,其窗口大小依次是7,8,9。
在这里插入图片描述

5-36 为何 TCP 拥塞控制中对发送方收到 3 个重复 ACK 和超时时间采用不一样的处理方法?
当发送方收到个冗余 ACK 说明网络可能丢失了少许分组,但后续多个分组都被接收方收到了, 所以网络拥塞并不严重,TCP 执行快速恢复算法,将拥塞窗口减半,直接进入拥塞避免阶段。而当超时事件发生时,说明发送的一连串分组都丢失了,网络拥塞比较严重,所以将拥塞窗口减小到最小,开始执行慢开始。

5-37 考虑图 5-20 中的例子,若将主机 C 到 R1的链路带宽提升到 10 000 Mbit/s,则所能达到的最大吞吐量大约会是多少?
约 11 Mbit/s。

5-38 考虑到下图的网络,路由器之间的链路带宽为 100 Mbit/s,假设主机到路由器的链路带宽无限。主机 A 到 C 的连接通过 R2,B 到 D 的链接通过 R3,C 到 A 的链接通过 R4,D 到 B 的链接过 R1 。若无拥塞控制,各主机逐渐增大发送速率,会出现什么状况?
在这里插入图片描述 随着各主机逐渐增大发送速率,网络总吞吐量逐渐增大到 200 Mbit/s(各主机发送速率为 50 Mbit/s),而后网络总吞吐量逐渐减小,当个主机发送速率增大到无穷大时,网络总吞吐量趋近于 0,即路由器之间的 4 条链路均满负载,单个主机之间的分组传送均失败。