【计算机网络(微课版)】第5章 传输层 课后习题及答案

5.1 试说明运输层在协议栈中的地位和作用。运输层的通信和网络层的通信有什么重要区别?

解答:从通信和信息处理的角度看,运输层向它上面的应用层提供端到端通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。当位于网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。

虽然网络层实现了主机到主机的逻辑通信,但严格地讲,通信的真正端点并不是主机而是主机中的进程。因此,运输层在网络层之上提供应用进程间的逻辑通信。

 

5.2 当应用程序使用面向连接的TCP和无连接的IP时,这种传输是面向连接的还是无连接的?

解答:从网络层看是无连接的,但从运输层看是面向连接的。

 

5.3 接收方收到有差错的UDP用户数据报时应如何处理?

解答:丢弃且不通知发送方。

 

5.4 在“滑动窗口”概念中,“发送窗口”和“接收窗口”的作用是什么?如果接收方的接收能力不断地发生变化,则采取何种措施可以提高协议的效率。

解答:“发送窗口”作用是限制发送方连续发送数据的数量,即控制发送方发送数据的平均速率。“接收窗口”反映了接收方当前接收缓存的大小,即接收方接收能力的大小。当接收方的接收能力不断地发生变化时,可以将接收窗口的大小发送给发送方,调节发送方的发送速率,避免因发送方发送速率太大或太小而导致接收缓存的溢出或带宽的浪费,从而提高协议的效率。

 

5.5 简述TCP和UDP的主要区别。

解答:TCP提供的是面向连接、可靠字的字节流服务,并且有流量控制和拥塞控制功能。UDP提供的是无连接、不可靠的数据报服务,无流量控制和拥塞控制。

 

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

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

 

5.7 如果因特网中的所有链路都提供可靠的传输服务,TCP可靠传输服务将会是完全多余的吗?为什么?

解答:TCP可靠传输服务不是多余的。因为在端到端的数据传输过程中并不是所有的差错都来自分组在链路上传输时的比特级差错,例如由于网络拥塞导致路由器的分组丢弃,路由器在转发分组时的故障等都会导致端到端的数据传输的差错,这些都不可能通过链路层的可靠数据传输得以解决,必须由端到端的运输层可靠数据传输服务来解决。

 

5.8 解释为什么突然释放运输连接就可能会丢失用户数据,而使用TCP的连接释放方法就可保证不丢失数据。

解答:假定A和B之间建立了TCP连接。如果A发送完数据在还没有接收到对方确认时就突然释放连接,则不能保证这些没有被确认的数据在传输中不会丢失。

如果A在收到B对所有发送数据的确认后释放连接,A发送的数据不会丢失,可能B还在数据发送,这些数据A都无法正确收到。

TCP的连接释放在两个方向都要发送连接释放请求和确认,保证数据不丢失。

 

5.9 试用具体例子说明为什么在运输连接建立时要使用三次联络。说明如不这样做可能会出现什么情况。

解答:这主要是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,导致建立错误的连接而浪费资源,如图所示。

【计算机网络(微课版)】第5章 传输层 课后习题及答案

 

 

 

5.10  一个TCP报文段的数据部分最多为多少个字节?为什么?如果用户要传送的数据的字节长度超过TCP报文段中的序号字段可能编出的最大序号,问还能否用TCP来传送?

 

解答:由于IP数据报的最大长度是65535字节,因此除去IP首部的20字节和TCP首部的20字节,一个TCP报文段的数据部分最多为65495字节。

如果用户要传送的数据的字节长度超过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。

【计算机网络(微课版)】第5章 传输层 课后习题及答案

图A-1  习题5-11的图

 

5.12 在使用TCP传送数据时,如果有一个确认报文段丢失了,也不一定会引起与该确认报文段对应的数据的重传。试说明理由。

解答:发送方还未超时重传就收到了接收方对更高序号的确认。

 

5.13 请简要比较TCP的可靠传输实现与GBN算法的主要异同。

解答:TCP接收窗口大小不为1,发送窗口和接收窗口大小动态变化,而GBN接收窗口为1。

TCP标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。

TCP和GBN都是采用累积确认方式,但在发生超时,TCP发送方仅对超时的分组重传,而GBN是重传窗口内所有已发送的分组。

TCP的编号以字节为单位,而GBN以分组为单位。

因此TCP的算法介于GBN和SR之间。

 

5.14 在5.3.3节曾讲过,若收到的报文段无差错,只是未按序号,则TCP对此未作明确规定,而是让TCP的实现者自行确定。试讨论两种可能的方法的优劣:

(1) 把不按序的报文段丢弃;

(2) 先把不按序的报文段暂存于接收缓存内,待所缺序号的报文段收齐后再一起上交应用层。

解答:对于第一种方法,实现简单,接收方不需要很大的接收缓存,但由于所有不按序到达的报文段都被丢弃,这些报文段需要发送方进行重传,会浪费带宽。特别是在运输层,报文段不出现丢失也可能因IP报文独立路由而失序,而且由于端到端时延和时延抖动都比较大,超时时间设置的比较长,因此,失序报文段被接收方丢弃不仅浪费带宽而且重传会产生很大的时延。

对于第二种方法,只要在发送方超时前收到失序报文段的确认(接收方已收到所有迟到的报文段,并发回确认),就可以避免失序报文段的重传。但协议更复杂,且需要比较大的接收缓存。

5.15 设TCP使用的最大窗口为64 KB,即64 ´ 1024字节,而传输信道的带宽可认为是不受限制的。若报文段的平均往返时延为20 ms,问所能得到的最大吞量是多少?

解答:【计算机网络(微课版)】第5章 传输层 课后习题及答案

 

5.16 试计算一个包括5段链路的运输连接的单程端到端时延。5段链路程中有两段是卫星链路,有三段是广域网链路。每条卫星链路又由上行链路和下行链路两部分组成。可以取这两部分的传播时延之和为250 ms。每一个广域网的范围为1500 km,其传播时延可按150 000 km/s来计算。各数据链路速率为48 kbit/s,帧长为960 bit。

解答:每个广域网的传播时延 = (1500 km)/(150000 km/s) = 0.01 s = 10 ms

卫星链路传播时延 = 250 ms

每个结点的传输时延或发送时延 = (960 bit)/(48000 bit/s) = 0.02 s = 20 ms

因此,总的端到端单程时延为:10 ms ´ 3 + 250 ms ´ 2 + 20 ms ´ 5 = 630 ms。

 

5.17 重复上题,但假定其中的一个陆地上的广域网的传输时延为150 ms。

解答:760 ms。

5.18 TCP接收方收到3个重复ACK就执行快速重传。为什么不在收到对报文段的第一个重复ACK后就快速重传?

答:当TCP接收方收到失序分组或重复分组时都会发送重复确认,而在运输层,失序是经常发生的,若对收到第一个冗余ACK后就快速重传,一旦两个报文段失序就会导致发送方立即快速重传,重传的分组又导致冗余ACK(对重复分组的确认),又导致快速重传,不断这样下去。因此收到3个冗余ACK才认为丢失并进行快速重传,一是收到3个冗余ACK是因为丢失报文段的可能性比较大,二是即使没丢失也不会导致一直重传,很快能恢复正常。

 

5.19 用TCP传送512字节的数据。设窗口为100字节,而TCP报文段每次也是传送100字节的数据。再设发送方和接收方的起始序号分别选为100和200,试画出类似于图5-15的工作示意图。从连接建立阶段到连接释放都要画上。

解答

【计算机网络(微课版)】第5章 传输层 课后习题及答案

 

5.20 在图5-17中所示的连接释放过程中,主机B能否先不发送ack = u + 1的确认?(因为后面要发送的连接释放报文段中仍有ack = u + 1这一信息)

解答:如果B也正要关闭连接,可以将对A的连接释放请求的确认和发给A的连接释放请求合并。但如果B并不马上关闭连接,则要及时对A的连接释放请求进行确认。

 

5.21 在图5-17所示的连接释放过程中,主机A在发送完对B的连接释放请求报文段的确认后,为什么还要等待一段超时时间再彻底关闭连接?

因为主机A的确认有可能丢失,这时B会重传FIN报文段。在这段超时时间内,若A又收到B重传的FIN报文段,A需要再次进行确认。收到A的最后确认,B才能最终将整个连接释放。主机A的TCP再向其应用进程报告,整个连接已经全部释放。

 

5.22 在图5-18中,在什么情况下会发生从状态LISTEN到状态SYN_SENT,以及从状态SYN_SENT到状态SYN_RCVD的变迁

解答:当双方同时主动打开TCP连接,向对方发送连接请求(SYN)时,从状态LISTEN变为状态SYN_SENT,然后收到对方的连接请求后,发送连接请求确认(SYN, ACK)从状态SYN_SENT变为状态SYN_RCVD。

 

5.23 是否TCP和UDP都需要计算往返时延RTT?

解答:往返时延RTT只是对运输层的TCP协议才很重要,因为TCP要根据平均往返时延RTT的值来设置超时计时器的超时时间。

UDP没有确认和重传机制,因此RTT对UDP没有什么意义。

 

5.24 在TCP的往返时延的估计中,你认为为什么TCP忽略对重传报文段的往返时延测量值RTT样本。

解答:因为分组丢失差错和过早超时都可能导致发送方重传分组,因此发送方无法确定接收到的确认是对原来发送的分组的确认还是对重传的分组进行确认。

若认为是对重传的分组进行确认,而实际上是过早超时,该分组是对原来发送的分组的确认,则可能测量值SampleRTT比实际值要小。

若认为是对原来发送的分组的确认,而实际上是对重传分组的确认,则测量值SampleRTT可能比实际值要大。

 

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

解答:若不采用Karn算法,而是在收到确认时都认为是对重传报文段的确认,那么由此得出的往返时延样本和重传时间会小于实际的往返时延,当再次发送报文段时,又会超时,若在超时重传后立即收到原报文段的确认,则重传时间会减小到接近于零。

 

5.26 某个应用进程使用运输层的用户数据报UDP,然后继续向下交给IP层后,又封装成IP数据报。既然都是数据报,是否可以跳过UDP而直接交给IP层?哪些功能UDP提供了但IP没有提供?

解答:不能,IP协议没有提供端口功能,IP数据报只能找到目的主机而无法找到目的进程。

 

5.27 使用TCP对实时话音数据的传输有没有什么问题?使用UDP在传送数据文件时会有什么问题?

解答:TCP的流量控制和拥塞控制和可靠数据传输机制会导致比较大的分组时延抖动,而大的时延抖动会严重影响实时话音数据传输的质量。由于数据文件的传输需要可靠数据传输,因此在使用UDP在传送数据文件时需要应用程序自己实现可靠数据传输功能。

 

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

解答:有。一是信道误码导致中间结点将分组丢弃;二是路由错误导致分组在网络中兜圈子最后被路由器丢弃;三是中间路由器在接收了分组还没有转发出去时故障,导致分组丢失。这些情况发生的概率都比较小。

 

5.29 一个应用程序用UDP,到了IP层将数据报再划分为4个数据报片发送出去。结果前两个数据报片丢失,后两个到达目的站。过了一段时间应用程序重传UDP,而IP层仍然划分为4个数据报片来传送。结果这次前两个到达目的站而后两个丢失。试问:在目的站能否将这两次传输的4个数据报片组装成为完整的数据报?假定目的站第一次收到的后两个数据报片仍然保存在目的站的缓存中。

解答:不行。重传时,IP数据报的标识字段会有另一个标识符。仅当标识符相同的IP数据报片才能组装成一个数据报。

 

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

解答:TCP首部除固定长度部分外,还有选项,因此TCP首部长度是可变的。如果没有首部长度字段,接收方就无法知道TCP报文段的数据从什么地方开始。TCP首部中的首部长度字段也可以看成是数据偏移字段。而UDP首部长度是固定的,因此不需要首部长度字段。

 

5.31 一个UDP用户数据报的数据字段为8192字节。要使用以太网来传送。试问应当划分为几个数据报片?说明每一个数据报片的数据字段长度和片偏移字段的值。

解答:6个。数据字段的长度:前5个是1480字节,最后一个是800字节。(注意要加上UDP首部的8字节)

片偏移字段的值分别是:0, 185, 370, 555, 740和925。

 

5.32 简述TCP流量控制和拥塞控制的不同。

解答:流量控制解决因发送方发送数据太快而导致接收方来不及接收使接收方缓存溢出的问题。流量控制的基本方法就接收方根据自己的接收能力控制发送方的发送速率。TCP采用接收方控制发送方发送窗口大小的方法来实现在TCP连接上的流量控制。

拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。TCP的发送方维持一个叫做拥塞窗口的状态变量。拥塞窗口的大小取决于网络的拥塞程度,当网络拥塞时减小拥塞窗口的大小,控制TCP发送方的发送速率。TCP发送方的发送窗口大小取接收窗口和拥塞窗口的最小值。

 

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

解答:慢开始就是当主机刚开始发送数据时完全不知到网络的拥塞情况,将拥塞窗口设为很小,当收到确认时,由小到大逐渐增大发送方的拥塞窗口数值。

在慢开始阶段发送速率以指数方式迅速增长,若持续以该速度增长发送速率必然导致网络很快进入拥塞状态。因此需要设置一个状态变量,即慢开始门限ssthresh,当拥塞窗口大于该门限时,进入拥塞避免阶段,降低发送速率的增长速率(以线性方式增长),避免网络拥塞。

快速重传就是当发送方收到3个冗余确认时,就认为现在可能是网络出现了拥塞造成分组丢失,就立即重传确认号指示的报文段,而不必继续等待超时。

快速恢复就是,当发送方收到连续三个重复的ACK时,虽然有可能丢失了一些分组,但这连续的三个重复ACK同时又表明丢失分组以外的另外三个分组已经被接收方接收了。因此,与发生超时事件的情况不同,网络还有一定的分组交付能力,拥塞情况并不严重,直接执行拥塞避免算法。

采用快速恢复算法的情况下,长时间的TCP连接在稳定的时候通常处于下面描述的重复状态。经过慢启动发送方迅速进入拥塞避免阶段,在该阶段,使拥塞窗口呈线性增长,即“加性增”,发送速率缓慢增长,以防止网络过早出现拥塞。当流量逐渐超过网络可用带宽时会出现拥塞,但由于发送速率增长缓慢,通常仅导致少量分组丢失。这种情况下发送方会收到3个重复ACK并将拥塞窗口减半,即“乘性减”,然后再继续执行“加性增”缓慢增长发送速率,如此重复下去。

 

5.34 TCP使用慢开始和拥塞避免,设TCP的拥塞窗口阈值的初始值为8(单位为MSS)。从慢开始开始,当拥塞窗口上升到12时网络发生了超时。试画出每个往返时间TCP拥塞窗口的演变曲线图(横坐标单位为“轮次”,纵坐标为拥塞窗口大小)。说明拥塞窗口每一次变化的原因(画15个“轮次”)

解答:拥塞窗口的变化:1, 2, 4, 8, 9, 10, 11, 12, 1, 2, 4, 6, 7, 8, 9。

【计算机网络(微课版)】第5章 传输层 课后习题及答案

 

5.35 通信信道带宽为1 Gbit/s,端到端时延为10 ms。TCP的发送窗口为65535字节。试问:可能达到的最大吞吐量是多少?信道的利用率是多少?

解答:最大吞吐量:25.5 Mbit/s。信道利用率:25.5%。

 

5.36 为什么TCP拥塞控制中对发送方收到3个重复ACK和超时事件采用不同的处理方法?

解答:当发送方收到3个冗余ACK说明网络可能丢失了少量分组,但后续多个分组都被接收方收到了,因此网络拥塞并不严重,TCP执行快速恢复算法,将拥塞窗口减半,直接进入拥塞避免阶段。而当超时事件发生时,说明发送的一连串分组都丢失了,网络拥塞比较严重,因此将拥塞窗口减少到最小,开始执行慢启动。

 

5.37 考虑图5-18中的例子,若将主机C到R1的链路带宽提高到1000 Mbit/s,则所能达到的最大吞吐量大约会是多少?

解答:约11 Mbit/s。

 

5.38考虑图5-23的网络,路由器之间的链路带宽为100 Mbit/s,假设主机到路由器的链路带宽无限。主机A到C的连接经过R2,B到D的连接经过R3,C到A的连接经过R4,D到B的连接过R1。若无拥塞控制,各主机逐渐增大发送速率,会出现什么情况?

 

【计算机网络(微课版)】第5章 传输层 课后习题及答案

图5-23 习题5-38的图

解答:随着各主机逐渐增大发送速率,网络总吞吐量逐渐增大到200 Mbit/s(各主机发送速率为50 Mbit/s),然后网络总吞吐量逐渐减少,当各主机发送速率增大到无穷大时,网络总吞吐量趋近于0,即路由器之间的4条链路均满负荷,但各主机之间的分组传送均失败。