TCP 中的流量控制和拥塞控制有什么区别?



TCP中流量控制和拥塞控制的区别是什么?

这个问题可以分为两部分:

    流量和拥塞控制的总体目的是什么?
  1. 任务是如何完成的?

根据维基百科,TCP流控制依赖于ACK消息中报告的窗口大小。拥塞控制也依赖于确认消息。我想知道这两个目标之间的区别是什么,以及它们是如何工作的。

关于第一部分,超级总览:

流量控制由接收端控制。它确保发送方只发送接收方可以处理的内容。想想这样一种情况,一个拥有快速光纤连接的人可能会向拨号或类似的人发送信息。发送方有能力非常快速地发送数据包,但这对拨号的接收方来说是无用的,所以他们需要一种方法来限制发送方可以发送的内容。流控制处理可用的机制,以确保此通信顺利进行。

拥塞控制是一种确保网络中的每个人在任何给定时间都有"公平"数量的网络资源访问的方法。在混合网络环境中,每个人都需要能够假定相同的一般性能水平。帮助理解这一点的一个常见场景是办公室局域网。办公室里有许多LAN段,它们都在LAN内工作,但是它们可能都需要通过WAN链路出去,而WAN链路的速度比组成LAN段的速度慢。想象一下,在局域网内拥有100mb的连接,最终通过5mb的WAN链路发送出去。某种拥塞控制将需要到位,以确保在更大的网络中没有问题。

关于第二部分:

如果这是一个面试前的问题,就像你上面说的,我会考虑花点时间阅读TCP/IP的一般内容。不要使用维基百科。RTFM !这是非常值得你的时间。你可以说这是支撑大部分现代互联网的最重要的协议。

流量控制:停止和等待,滑动窗口,PAUSE帧。

拥塞控制需要阅读的内容:QoS(服务质量),重传策略,窗口策略。

除此之外,您可以搜索任何特定的供应商实现(Cisco等)

流量控制:发送方将发送足够的数据,可以在接收端容纳。

拥塞控制:发送方将减少发送数据包的数量,以避免超出路由器的缓冲区(队列)。

流控制:

  • 确保发送方不会使接收方过载。
  • 这是一个局部现象,不像拥塞控制。
  • 一般由发送方发起。

拥塞控制:

  • 确保网络能够处理数据包的负载。
  • 这是一个全球性的现象,影响到连接到该网络的每一台主机。
  • 由路由器发起。

拥塞控制是一个全局问题-涉及子网内的每个路由器和主机

流控制的范围从点到点,只涉及发送方和接收方。

流量控制主要在接收端完成,调整发送端向网络注入的数据量;拥塞控制主要在发送端完成,试图通过ack包的定时来感知网络上的拥塞,并根据相应的情况调整发送的数据量。

拥塞控制:除了防止路由器的缓冲区溢出之外,它还处理其他两个重要因素

  • 公平性:任何连接到网络的主机都不应该发生饥饿。尽管术语要复杂得多。
  • 效率:链路应该被利用到最大容量,这样它就不会造成拥塞。

流量控制在接收端完成。如果发送方发送的数据包大于接收方的缓冲区大小,则接收方缓冲区发生溢出。为了避免接收端出现这种溢出,在发送端使用了一种窗口技术。拥塞控制在发送端完成。这是一个全球性的现象。这发生在路由器上。当许多发送者试图通过同一链路推送更多数据包时,路由器的缓冲区溢出。

流量控制:

  1. 当发送方缓冲区已满时,我们阻止源发送数据,这样数据就不会被丢弃。
  2. 接收缓冲区已满。
  3. 可以通过滑动窗口协议轻松实现。

拥塞控制

  1. 当我们开始从源传输数据时,它在网络的帮助下到达目的地。

  2. 拥塞控制,防止源数据被网络中的路由器丢弃。
  3. 这个问题与路由器的队列有关

  4. 实现起来比较复杂,因为路由器从连接到其网络的不同来源接收不同的数据包。

最新更新