难以理解 TCP 拥塞控制中“按照允许传输新段”的操作

网络工程 tcp 射频 拥塞
2022-02-15 12:36:12

我正在阅读 KuroseRossComputer Networking- A Top-Down Approach文本,在那里我发现了 TCP 拥塞控制 FSM 的微妙之处,如下所示:

TCP 拥塞控制 FSM

主要是我在理解允许的情况下传输新段的动作有困难。

我已经阅读了 Forouzan 的教科书数据通信和网络中的等效部分,但是虽然解释很简单,但没有 FSM 或编程方法。

现在让我们考虑一下Kurose & Ross文本中所示的慢启动阶段:

TCP 慢启动阶段

他们解释cwnd每轮传输后加倍的时序图很简单,就像Forouzan文本所说的那样。但是我发现很难理解基于标记为弧的实现: 弧

慢启动阶段。

  1. 假设发送者开始 cwnd = 1 MSS然后将这个(第一个)段发送到网络层并等待确认。
  2. 发送方获得前一个数据包的“新 ACK”并cwnd增加到2 MSS. 然后根据“transmit new segment(s), as allowed”,发送方将2段(第 2 和第 3 段)发送到网络层并等待确认。
  3. 现在发送方接收到对应于第 2 段的“新 ACK”并cwnd增加到3 MSS. 然后根据“transmit new segment(s), as allowed”,发送方将3段发送到网络层并等待确认。
  4. 现在发送方收到对应于第 3 段的“新 ACK”并cwnd增加到4 MSS. 然后根据“transmit new segment(s), as allowed”,发送方将4段发送到网络层并等待确认。

从第 3 点和第 4 点来看,我发现这种情况与图 3.51 所示的慢启动阶段不匹配。(即发送的段数是 1,2,3,4 而不是 1,2,4)。我在哪里犯错?


我看到 Kurose 使用RFC 2581我浏览了对应于 TCP 拥塞控制的RFC 2581 。我只是计算机网络领域的新手,因为很多事情(可能相当直观或微不足道)对我来说是未知的。问题是RFC 2581以与黑濑文本相同的方式描述事物(大部分)。除了黑濑用 FSM 解释它,而 RFC 以段落形式编写(虽然没有区别)。但是,我遇到问题的细微之处仍未得到解答。如果有人为我提供了一个数字示例,那么它将帮助我理解其中的微妙之处。我在 RFC 中看到的几件事是它没有明确何时"transmit new segment(s), as allowed"在慢启动状态或在"congestion avoidance state".

RFC 2581讨论了用于说明的参考,但该参考包含超出我理解水平的示例/插图(它们太难了)。我看到的原始RFC 793更容易,Forouzan 的文本松散地基于RFC 2581并且主要是RFC 793RFC 2581中,我无法理解(参考我的问题)是怎么回事。发送的段1,2,3,4数不是RFC 7931,2,4中通常的

0个回答
没有发现任何回复~