根据我的理解,流程控制本质上是接收者可以处理多少。
假设我可以在100 my /S发送数据包,但接收方只能在10 my/S处理信息,那么流量控制本质上意味着接收方告诉我,“嘿,我可以在10 my/s处处理最大进程信息”,因此,我会将我的发送速度调整为最大10 my/ max。
例如,拥塞控制将类似于TCP tahoe:
我们首先发送一个数据包并等待一个ACK,然后我们将发送的数据包数量增加一倍,等待ACK达到一定的阈值,然后只增加一个数据包。如果我们收到超时,我们知道已经发生了拥塞,我们减少了每次发送的数据包数量,以避免接收端的拥塞。
因此,拥塞控制可以确保接收方不会被超过它所能处理的数据包所淹没,从而导致拥塞。
流量控制控制发送方向接收方发送数据包的速度。
我的结论准确吗?我真的发现他们很相似。
发布于 2022-10-26 09:29:31
不,你的结论不太准确。流量控制和拥塞控制有不同的目标。
流量控制的目的是确保发送方不会超载接收方。
拥塞控制的目的是确保发送方不超载网络,例如通过发送更多的数据包,使得路径上容量最低的链路能够处理和传输更多的数据包。
流量控制
因此,简单的回答是成立的,但这并不是关于限制容量。
首先,如果接收器是通过10 be链路连接的,那么将被重载的系统不是接收方,而是“该链路的另一边”(基本上,如果有一个路由器具有100 be的传入和10 be的传出链路,那么这个场景中的过载系统)就是拥塞控制的问题。
接收器应该有一个缓冲器,它存储接收到的数据包。当重新排序数据包时,TCP操作需要此缓冲区。在桌面PC上,当应用程序没有从套接字读取数据包时,也需要这个缓冲区来存储数据包。这个缓冲区可以存储一系列连续的序列号。如果接收到序列号超出此范围的数据包,则丢弃该分组。
现在,流控制的目标不是发送将被丢弃的数据包。接收方告诉发送方缓冲区中有多少空间,而发送方没有发送更多这样的数据包。
这里的问题是,您通常不能说接收器可以处理10 10Mbps。这取决于到达多少重排序数据包,以及如何对接收方进行进程调度。因此,这是不断变化的(除非您有一个实时操作系统,在这种情况下,您可能不会使用TCP开始)。
拥塞控制
拥塞控制的目标是将发送速率调整到网络之间的容量,这或多或少是路径上“最慢”链路的容量。
这是一个经典的例子。
发送方<=== 1 1Gbps ===>路由器(R1) <-50 50Mbps >路由器(R2) <=== 1 1Gbps ===>接收器
因此,发送方连接到1Gb的以太网链路,并能够发送1Gb的流量。接收器也连接到1Gb链路,并相应地设置其缓冲区。因此,TCP在技术上可以发送1 1Gbps的流量。
显然,发送1 1Gbps的流量是没有意义的,因为两个路由器之间的瓶颈链路将无法传输它。额外的数据包将被丢弃在R1。
拥塞控制的目的是找出这个瓶颈链路的容量,而不是发送超过这个链路所能传输的数据包。
为什么丢包?因此,数据包丢失将发生在R1,因为它试图将流量从1Gb发送到50 to链接。分组交换网络的工作方式应该是: R1从1Gb链路接收数据包;R1需要从5Mb链路发送数据包。R1应该在链接之前有一个缓冲区。第二,链接是免费的,可以发送数据包,或者应该缓冲它们。一旦缓冲区满了,数据包就会被丢弃。这一下降被视为拥堵的迹象。当出现丢包时,发送方应该降低其发送速率。
因为TCP是基于窗口的,拥塞控制是基于窗口的,所以实际上TCP减少了它每个RTT发送的数据包数量。
现在,我将讨论如何更好地控制交通拥堵,因为这需要很长的文字墙。太浩太咄咄逼人,降低了性能。正常发送者至少使用Reno。
发布于 2022-10-25 13:07:52
从发送方的角度来看,流量控制和拥塞控制本质上是相同的。关键在于发送者发现任何不及时接收的情况。
无论限制是接收器本身还是路径容量,都不重要。接收器的限制是相当静态的,但是当前的路径容量可能是高度可变的,因此需要一个处理这两种情况的算法。瓶颈很可能既不是发送方,也不是接收方,而是路径组件。
https://networkengineering.stackexchange.com/questions/80315
复制相似问题