补全:退避之后的超时
本节的超时小工具:
rto_trace(samples) RFC 6298 的整数版:第一次 SRTT = R、RTTVAR = R // 2;之后 RTTVAR = (3·RTTVAR + |SRTT − R|) // 4、SRTT = (7·SRTT + R) // 8;RTO = SRTT + 4·RTTVAR;交回每个样本后的 (SRTT, RTTVAR, RTO)
backoff(rto, n) 连续超时 n 次后的 RTO:每次翻倍
resend(segs, plan, rtt, rto) 停等 + 超时重传:plan 每次发送一个字符(. 到 x 丢),丢了等 rto 再发、rto 翻倍;交回 (发了几次, 花了多少时间)
fast_retransmit(acks) 同一个 ack 连着第 4 次出现(原始 + 3 个重复)就触发,交回触发位置(从 1 数),没有交回 0补全 rto_after(samples, n):先按样本算出当前 RTO,再连续超时 n 次之后是多少。样本 100、100、300、100,n 取 0 和 2:
全部评论