⚠️ 自己写:超时定太短

👁️ 3 人浏览 💬 0 人评论 ❤️ 添加收藏

本节的超时小工具:

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

往返 100,一个都没丢。RTO 定成 300 时每段发一次就够;定成 40 时定时器在 ack 回来之前会到期好几次,每到期一次就白发一次。补全 sends_no_loss(nsegs, rtt, rto):交回一共发了几次(每段 1 + 在 rtt 之内到期的次数 = (rtt − 1) // rto)。两种各算一次:

提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论