kcp 介绍与源代码分析_KCP源码分析

本文深入分析KCP协议的源代码,涵盖Command、Segment、KCP包头结构等核心部分。讲解了KCP的数据发送流程,包括Input()、Recv()、Update()和Flush()函数的作用,涉及接收窗口、拥塞控制和数据重组等内容。
摘要由CSDN通过智能技术生成
本文为自己的理解,不代表完全正确,如有错误还请批评。

KCP的一些概念性东西这里就不介绍了,感兴趣的同学可以自行谷歌,本文主要分析KCP的源码。

Command

224b805105abee483a6df7878ce36947.png

Segment

300203bbd72090144338e1f4322682e3.png

KCP包头结构

dd1e86452ce6e62d45d4569457384065.png

Property

ada49e56aebddfac9e6b0c9a2db0e21c.png

消息发送时: buffer -> snd_queue -> snd_buf

消息接收时:rcv_buf -> rcv_queue -> buffer

所以这里的两个queue只是一个Temp Container,作为变换的中间站。

这里的output就是KCP发送消息时的回调。

Constructor

这个就是UDP的构造

d147c97f9e53857bdadc61215653a605.png

一些重要的函数

KCP函数的调用顺序:Input()-->Recv()-->Update()-->Flush()

Input()

该函数主要功能是处理接收到的数据

首先先解析数据,得到segmentsnuna等数据包头信息。

2a44c630e80b6f0c51aa1284ef9cedf6.png

之后根据una清除掉snd_buf中已经确认接收到的segmentuna即表示该seg之前数据包均已收到)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值