3. 定义 (Definitions)
以下术语、参数和状态变量按照早期文档中的定义使用:
基础TCP术语
SND.UNA: 最早未确认的序列号。这在[RFC9293]第3.4节中定义。
SND.NXT: 要发送的下一个序列号。这在[RFC9293]第3.4节中定义。
duplicate ACK (重复ACK): 当满足以下条件时,确认被认为是"重复ACK"或"重复确认":(a)ACK的接收方有未完成的数据,(b)传入的确认不携带数据,(c)SYN和FIN位都关闭,(d)确认号等于SND.UNA,以及(e)传入确认中公告的窗口等于最后一个传入确认中公告的窗口。这在[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是发送方可以传输的最大段的大小。该值可以基于网络的最大传输单元(Maximum Transmission Unit, MTU)、路径MTU发现[RFC1191][RFC8201][RFC4821]算法、RMSS或其他因素。该大小不包括TCP/IP头部和选项。这在[RFC5681]第2节中定义。
Receiver Window (接收方窗口, rwnd): 最近接收到的公告接收方窗口,以字节为单位。在任何给定时间,连接不得发送序列号高于SND.UNA和rwnd之和的数据。这在[RFC5681]第2节中定义。
Congestion Window (拥塞窗口, cwnd): 限制连接可以发送的数据量的状态变量。在任何给定时间,如果inflight(见下文)匹配或超过cwnd,连接不得发送数据。这在[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): 本地布尔变量,指示当前ACK表明恢复正在取得良好进展,如果合适,发送方可以更激进地发送,增加inflight。
SndCnt (发送计数): 本地变量,指示响应每个ACK应发送多少字节。
Voluntary window reductions (自愿窗口减少): 选择不响应某些ACK发送数据,目的是减少发送窗口大小和数据速率。