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

【计算机⽹络(微课版)】第5章传输层课后习题及答案
5.1 试说明运输层在协议栈中的地位和作⽤。运输层的通信和⽹络层的通信有什么重要区别?
星型下料阀
解答:从通信和信息处理的⾓度看,运输层向它上⾯的应⽤层提供端到端通信服务,它属于⾯向通信部分的最⾼层,同时也是⽤户功能中的最低层。当位于⽹络边缘部分的两台主机使⽤⽹络核⼼部分的功能进⾏端到端的通信时,只有主机的协议栈才有运输层,⽽⽹络核⼼部分中的路由器在转发分组时都只⽤到下三层的功能。
虽然⽹络层实现了主机到主机的逻辑通信,但严格地讲,通信的真正端点并不是主机⽽是主机中的进程。因此,运输层在⽹络层之上提供应⽤进程间的逻辑通信。
5.2 当应⽤程序使⽤⾯向连接的TCP和⽆连接的IP时,这种传输是⾯向连接的还是⽆连接的?
解答:从⽹络层看是⽆连接的,但从运输层看是⾯向连接的。
5.3 接收⽅收到有差错的UDP⽤户数据报时应如何处理?
230ore-095解答:丢弃且不通知发送⽅。
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.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。
图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) 先把不按序的报⽂段暂存于接收缓存内,待所缺序号的报⽂段收齐后再⼀起上交应⽤层。
解答:对于第⼀种⽅法,实现简单,接收⽅不需要很⼤的接收缓存,但由于所有不按序到达的报⽂段
高攀1v 1h都被丢弃,这些报⽂段需要发送⽅进⾏重传,会浪费带宽。特别是在运输层,报⽂段不出现丢失也可能因IP报⽂独⽴路由⽽失序,⽽且由于端到端时延和时延抖动都⽐较⼤,超时时间设置的⽐较长,因此,失序报⽂段被接收⽅丢弃不仅浪费带宽⽽且重传会产⽣很⼤的时延。
对于第⼆种⽅法,只要在发送⽅超时前收到失序报⽂段的确认(接收⽅已收到所有迟到的报⽂段,并发回确认),就可以避免失序报⽂段的重传。但协议更复杂,且需要⽐较⼤的接收缓存。
5.15 设TCP使⽤的最⼤窗⼝为64 KB,即64 ´ 1024字节,⽽传输信道的带宽可认为是不受限制的。若报⽂段的平均往返时延为20 ms,问所能得到的最⼤吞量是多少?
解答:
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.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.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。若⽆拥塞控制,各主机逐渐增⼤发送速率,会出现什么情况?

本文发布于:2024-09-24 00:30:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/295003.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:发送   拥塞   数据   分组   确认   连接
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议