在连续前沿之外报告已收区间
累积确认指出连续接收已经推进到哪里;若后面的数据先到而中间有缺口,仅靠这个数字不能完整表达接收队列。SACK通过若干左右边界,补充哪些非连续区间已经收到并排队。
区间左边界是第一字节序号,右边界是末尾后一字节的序号。例如[1000,1500)描述500字节,而不是把1500也计入。SACK描述字节序号空间,区间边界未必总与发送端原有报文分段完全一致。
参考:[1]
允许使用与具体区间报告分开
SACK-Permitted在SYN中表示端点可接收并处理选择确认;连接建立后的SACK选项再传送实际区间。报文选项空间有限,一份报告并不必然装下接收端所有不连续块,因此发送方需要结合多次报告维护状态。
RFC 6675描述的恢复方式用记分板记录累积确认与选择确认信息,并据此估计在途数据、判断可能丢失的区间和选择后续发送。它是一套明确的恢复算法,而SACK选项本身主要是反馈格式,两者不能混为单一规则。
选择确认仍保留重传与拥塞约束
SACK信息是建议性的,接收方可能因资源原因丢弃先前报告过的数据。发送方不能只凭一次SACK就释放对应重传缓冲,而须等累积确认推进;超时处理也仍有作用。
乱序不必然意味着数据已经丢失,一个报告缺口的确认也不应被简单解释成可无限重发。恢复需要结合相应丢失判据、接收窗口和拥塞控制;选择确认能减少信息不足造成的重复发送,却不能取消网络负载约束或保证每次恢复都无延迟。