RTO翻倍vs不翻倍(RTO超时重传):TCP超时计算是RTOx2 , 这样连续丢三次包就变成RTOx8了 , 十分恐怖 , 而KCP启动快速模式后不x2 , 只是x1.5(实验证明1.5这个值相对比较好) , 提高了传输速度 。
选择性重传 vs 全部重传:TCP丢包时会全部重传从丢的那个包开始以后的数据 , KCP是选择性重传 , 只重传真正丢失的数据包 。
快速重传:发送端发送了1,2,3,4,5几个包 , 然后收到远端的ACK: 1, 3, 4, 5 , 当收到ACK3时 , KCP知道2被跳过1次 , 收到ACK4时 , 知道2被跳过了2次 , 此时可以认为2号丢失 , 不用等超时 , 直接重传2号包 , 大大改善了丢包时的传输速度 。
延迟ACK vs 非延迟ACK:TCP为了充分利用带宽 , 延迟发送ACK(NODELAY都没用) , 这样超时计算会算出较大 RTT时间 , 延长了丢包时的判断过程 。KCP的ACK是否延迟发送可以调节 。
UNA vs ACK UNA:ARQ模型响应有两种 , UNA(此编号前所有包已收到 , 如TCP)和ACK(该编号包已收到) , 光用UNA将导致全部重传 , 光用ACK则丢失成本太高 , 以往协议都是二选其一 , 而 KCP协议中 , 除去单独的 ACK包外 , 所有包都有UNA信息 。
非退让流控:KCP正常模式同TCP一样使用公平退让法则 , 即发送窗口大小由:发送缓存大小、接收端剩余接收缓存大小、丢包退让及慢启动这四要素决定 。但传送及时性要求很高的小数据时 , 可选择通过配置跳过后两步 , 仅用前两项来控制发送频率 。以牺牲部分公平性及带宽利用率之代价 , 换取了开着BT都能流畅传输的效果 。
如果网络永远不卡 , 那 KCP/TCP 表现类似 , 但是网络本身就是不可靠的 , 丢包和抖动无法避免(否则还要各种可靠协议干嘛) 。在内网这种几乎理想的环境里直接比较 , 大家都差不多 , 但是放到公网上 , 放到3G/4G网络情况下 , 或者使用内网丢包模拟 , 差距就很明显了 。公网在高峰期有平均接近10%的丢包 , wifi/3g/4g下更糟糕 , 这些都会让传输变卡 。
推荐阅读
- 带你玩转微信延期到账功能 微信转账延迟到账能撤回吗
- lol无限重连就是上不去 lol网络连接失败 请检查网络
- 2022永久免费的四款加速器 lol加速器排行榜
- 教大家Windows10打开游戏时鼠标操作出现延迟怎么办的方法
- lol新手剑圣怎么玩 lol剑圣怎么玩
- LOL游戏中怎么回复好友消息 lol游戏中怎么回复好友
- 人贱人爱的LOL小提莫 约德尔国队长
- lol控制技能最多的英雄 lol控线技巧和推线
- 延迟退休过渡期如何理解 过渡期是什么意思
- lol卡莎怎么玩,lol高端局十大英雄