计算机网络教程第五版|微课版 - 第五章 运输层 - 习题【补充】

第五章、运输层【补充】

本章的习题

  1. 在 “滑动窗口” 概念中,“发送窗口” 和 “接受窗口” 的作用是什么?如果接受方的接受能力不断地发生变化,则采用何种措施可以提高协议的效率?
    “发送窗口” 作用是限制发送方连续发送数据的数量,即控制发送方发送数据的平均速率。“接收窗口” 反映了接收方当前接收缓存的大小,即接收方接收能力的大小。当接收方的接收能力不断地发生变化时,可以将接收窗口的大小发送给发送方,调节发送方的发送速率,避免因发送方发送速率太大或太小而导致接收缓存的溢出或带宽的浪费,从而提高协议的效率。

  2. 简述 TCP 和 UDP 的主要区别。
    TCP 提供的是面向连接、可靠字的字节流服务,并且有流量控制和拥塞控制功能。UDP 提供的是无连接、不可靠的数据报服务,无流量控制和拥塞控制。

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

  4. 主机 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 说明了这一情况。
    计算机网络教程第五版|微课版 - 第五章 运输层 - 习题【补充】_第1张图片

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

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

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

  7. 设 TCP 使用的最大窗口尺寸为 64 KB,即 64 ∗ 1024 64*1024 641024,TCP 报文在网络上的平均往返时间为 20 ms。问 TCP 所能得到的最大吞吐量是多少?(假设传输信道的带宽是不受限的)
    在平均往返时间 20ms 内,发送的最大数据量为最大窗口值,即:
    最大吞吐量 = 64 ∗ 1024 ∗ 8 b i t 20 m s = 26.2144 \frac{64*1024*8bit}{20ms}=26.2144 20ms6410248bit=26.2144 Mbps

  8. TCP 接收方收到 3 次重复的 ACK 就执行快速重传。为什么不在第一次接收到重复的ACK后就快速重传?
    ① 由于数据分组乱序到达,如 A、B、C 分组,B 分组到达后,接收端发送一个希望得到 A 分组的 ACK,接着 C 分组到达,接收端又发送一个希望得到 A 分组的A CK。
    ② 由于网络延迟造成的,如 A 分组,A 分组在超过重传超时间隔的时间后到达,此时接收端已经发生了一个希望得到 A 分组的 ACK,发送端重传分组 A,由于网络延迟,A 分组又在超过重传超时间隔的时间后到达,接收端又已经发送了一个希望得到 A 分组的ACK。
    参考链接:TCP协议快速重传为什么要在接收到3次重复的ACK后才触发,为什么不在第一次接收到重复的ACK后就触发

  9. 在下图所示的连接释放过程中,主机A在发送完对B的连接释放请求报文段的确认后,为什么还要等待一段超时时间再彻底关闭连接?
    计算机网络教程第五版|微课版 - 第五章 运输层 - 习题【补充】_第2张图片
    因为主机 A 的确认有可能丢失,这时 B 会重传 FIN 报文段。在这段超时时间内,若 A 又收到 B 重传的 FIN 报文段,A 需要再次进行确认。收到 A 的最后确认,B 才能最终将整个连接释放。主机 A 的 TCP 再向其应用进程报告,整个连接已经全部释放。

  10. 是否 TCP 和 UDP 都需要计算往返时间 RTT?
    ① 往返时延RTT只是对运输层的TCP协议才很重要,因为TCP要根据平均往返时延RTT的值来设置超时计时器的超时时间。 UDP没有确认和重传机制,因此RTT对UDP没有什么意义。 因此,不要笼统地说“往返时延RTT对运输层来说很重要”,因为只有TCP才需要计算RTT,而UDP不需要计算RTT。
    参考链接:是否TCP和UDP都需要计算往返时间RTT?
    ② 往返时延 RTT 只是对运输层的 TCP 协议才很重要,因为 TCP 要根据平均往返时延 RTT 的值来设置超时计时器的超时时间。
    UDP 没有确认和重传机制,因此 RTT 对 UDP 没有什么意义。
    因此,不要笼统地说 “往返时延 RTT 对运输层来说很重要”,因为只有 TCP 才需要计算 RTT,而 UDP 不需要计算 RTT。
    参考链接:是否TCP和UDP都需要计算往返时间RTT?

  11. 在 TCP 的往返时间的估计中,你认为为什么 TCP 忽略对重传报文段的往返时间测量值的 RTT 样本。
    因为分组丢失差错和过早超时都可能导致发送方重传分组,因此发送方无法确定接收到的确认是对原来发送的分组的确认还是对重传的分组进行确认。若认为是对重传的分组进行确认,而实际上是过早超时,该分组是对原来发送的分组的确认,则可能测量值 RTT 样本比实际值要小。
    参考链接: 计算机网络1—7

  12. 在 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 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。
    参考链接:在TCP的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法

  13. 为什么 TCP 拥塞控制中对发送方收到 3 个重复 ACK 和超时时间采用不同的处理方法?
    当发送方收到个冗余 ACK 说明网络可能丢失了少量分组,但后续多个分组都被接收方收到了, 因此网络拥塞并不严重,TCP 执行快速恢复算法,将拥塞窗口减半,直接进入拥塞避免阶段。而当超时事件发生时,说明发送的一连串分组都丢失了,网络拥塞比较严重,因此将拥塞窗口减少到最小,开始执行慢开始。
    参考链接:计算机网络教程概念总结 - 豆丁网

  14. 考虑图 5-20 中的例子,若将主机 C 到 R 1 R_1 R1 的链路带宽提高到 10 000 Mbit/s,则所能达到的最大吞吐量大约会是多少?
    约 11 Mbit/s。
    【PS. 没有图,我也不知道,只找到了答案】

  15. 考虑到下图的网络,路由器之间的链路带宽为 100 Mbit/s,假设主机到路由器的链路带宽无限。主机 A 到 C 的链接经过 R 2 R_2 R2,B 到 D 的连接经过 R 3 R_3 R3,C 到 A 的连接经过 R 4 R_4 R4,D 到 B 的连接过 R 1 R_1 R1。若无拥塞控制,各主机逐渐增大发送速率,会出现什么情况?
    计算机网络教程第五版|微课版 - 第五章 运输层 - 习题【补充】_第3张图片
    随着各主机逐渐增大发送速率,网络总吞吐量逐渐增大到 200 Mbit/s(各主机发送速率为 50 Mbit/s),然后网络总吞吐量逐渐减少,当个主机发送速率增大到无穷大时,网络总吞吐量趋近于 0,即路由器之间的 4 条链路均满负载,单个主机之间的分组传送均失败。

部分答案转自:

  • 第5章 运输层
  • 数据通信与计算机网络第五版(习题答案)——第五章 运输层

转载自 《计算机网络教程第五版|微课版》著者:谢钧、谢希仁

点我回顶部 ☚

 
 
 
 
 
 
 
Fin.

你可能感兴趣的:(网络通信学习)