阅读KCP源码总结

1、什么是KCP?
KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。 连时钟都需要外部传递进来,内部不会有任何一次系统调用。(摘自官方介绍)

2、KCP的实现原理?
KCP用到的技术有:快速重传,慢启动、滑动窗口。
KCP的报文类型:有4中,分别为
A)IKCP_CMD_ACK:ACK报文
B)IKCP_CMD_PUSH:数据报文
C)IKCP_CMD_WASK:探测窗口报文
D)IKCP_CMD_WINS:响应窗口报文

下面来介绍一下KCP源码的主要代码实现。
A)IKCPCB结构中一些字段的含义解析

在这里插入图片描述
B)IKCPSEG结构中一些字段的含义解释
在这里插入图片描述
C)void ikcp_flush(ikcpcb *kcp)
探测窗口 在这里插入图片描述
在这里插入图片描述
计算窗口大小
在这里插入图片描述
慢启动 在这里插入图片描述
3、KCP与TCP相比的特点?
A)TCP丢包时会全部重传从丢的那个包开始以后的数据,KCP是选择性重传,只重传真正丢失的数据包。
B)TCP为了充分利用带宽,延迟发送ACK(NODELAY都没用),这样超时计算会算出较大 rtt时间,延长了丢包时的判断过程。KCP的ACK是否延迟发送可以调节。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值