3. 定义 (Definitions)
以下术语, 参数和状态变量按照早期文档中的定义使用:
基本 TCP 术语
SND.UNA: 最早的未确认序列号. 该术语在 [RFC9293] 第 3.4 节中定义.
SND.NXT: 下一个将要发送的序列号. 该术语在 [RFC9293] 第 3.4 节中定义.
duplicate ACK: 当 (a) ACK 的接收方存在未完成的数据, (b) 传入确认不携带数据, (c) SYN 和 FIN 位均未置位, (d) 确认号等于 SND.UNA, 且 (e) 传入确认中的通告窗口等于上一个传入确认中的通告窗口时, 该确认被视为 "duplicate acknowledgment" 或 "dupack". 该术语在 [RFC5681] 第 2 节中定义.
FlightSize: 已经发送但尚未被累计确认的数据量. 该术语在 [RFC5681] 第 2 节中定义.
Receiver Maximum Segment Size (RMSS): RMSS 是接收方愿意接受的最大段大小. 它是连接启动期间接收方发送的 MSS 选项中指定的值 (见 [RFC9293] 第 3.7.1 节). 如果未使用 MSS 选项, 则默认为 IPv4 的 536 字节或 IPv6 的 1220 字节 (见 [RFC9293] 第 3.7.1 节). 该大小不包括 TCP/IP 头部和选项. RMSS 在 [RFC5681] 第 2 节和 [RFC9293] 第 3.8.6.3 节中定义.
Sender Maximum Segment Size (SMSS): SMSS 是发送方可以传输的最大段大小. 该值可以基于网络的最大传输单元 (MTU), 路径 MTU 发现 [RFC1191] [RFC8201] [RFC4821] 算法, RMSS 或其他因素确定. 该大小不包括 TCP/IP 头部和选项. 该术语在 [RFC5681] 第 2 节中定义.
Receiver Window (rwnd): 最近一次通告的接收窗口, 单位为字节. 在任何给定时间, 连接 MUST NOT 发送序列号高于 SND.UNA 与 rwnd 之和的数据. 该术语在 [RFC5681] 第 2 节中定义.
Congestion Window (cwnd): 限制连接可发送数据量的状态变量. 在任何给定时间, 如果 inflight (见下文) 等于或超过 cwnd, 连接 MUST NOT 发送数据. 该术语在 [RFC5681] 第 2 节中定义.
Slow Start Threshold (ssthresh): 慢启动阈值 (ssthresh) 状态变量用于确定使用慢启动算法还是拥塞避免算法来控制数据传输. 在快速恢复期间, ssthresh 是由拥塞控制算法确定的快速恢复阶段目标窗口大小. 该术语在 [RFC5681] 第 3.1 节中定义.
PRR 特定术语
PRR 定义了额外的变量和术语:
Delivered Data (DeliveredData): 数据发送方对当前 ACK 表明自上一个收到的 ACK 以来已交付到接收方的总字节数的最佳估计.
In-Flight Data (inflight): 数据发送方对网络中在途且未确认字节数的最佳估计, 即已经发送但既未判定丢失也未被数据接收方接收的字节.
Recovery Flight Size (RecoverFS): 发送方对当前 PRR 阶段期间可能交付的字节数的估计.
SafeACK: 一个本地布尔变量, 表示当前 ACK 暗示恢复进展良好, 发送方可在适当时更激进地发送, 从而增加 inflight.
SndCnt: 一个本地变量, 表示响应每个 ACK 应发送多少字节.
Voluntary window reductions: 为了降低发送窗口大小和数据速率, 选择不响应某些 ACK 发送数据.