客户端和服务器在通信时是否可以使用不同的拥塞算法?

Can a client and server use different congestion algorithms when communicating?

我正在写一个http3(在quic上运行)库,要求调用者选择不同的拥塞控制算法。我做了一些研究并阅读了这篇文章:

There are several variations and versions of the algorithm implemented in protocol stacks of operating systems of computers that connect to the Internet.

我突然发现,除了一些抽象理论之外,我以前从未想过拥塞控制算法是如何工作的(在tcp 上)。所以这里有一些我不是很清楚的问题。

  1. 客户端和服务器通信时是否可以使用不同的拥塞算法?例如客户端使用 Reno,服务器使用 CUBIC?
  2. 如果是,这是客户端和服务器使用不同算法的缺点吗?
  3. 如果不是,服务器和客户端如何协商拥塞控制算法?
  1. 是的,拥塞控制只影响从数据发送方到接收方的路径。 2 个对等体使用的拥塞控制器之间没有耦合。拥塞控制器唯一需要正常工作的是来自对等方的 ACK,这些发送独立于对等方使用的拥塞控制器。
  2. 没有。很常见
  3. 不存在任何谈判(甚至没有广告)。您不会知道对等方使用什么拥塞控制器。您可能只是能够根据其传输行为来猜测它。