KCP 是一个追求低延迟和高效率的 快速可靠传输协议 (ARQ),专为对实时性要求高的应用(如在线游戏、音视频通话)设计。它通过更激进的重传策略和灵活的拥塞控制算法,显著降低了网络传输的延迟。
同时KCP协议设计足够简单,项目只有kcp.h和kcp.c两个源文件,整体代码在2000行以内,同时实现了可靠传输协议的大部分功能,非常适合作为计算机行业从业者学习网络传输协议的进阶材料。
本系列文章基于 github.com/skywind3000… 源码分析及文章写作。
KCP协议主要子模块和数据结构
flowchart TD
A0["KCP 控制块 (ikcpcb)
"]
A1["KCP 数据段 (IKCPSEG)
"]
A2["核心更新与刷新机制 (ikcp_update & ikcp_flush)
"]
A3["数据流转与队列管理
"]
A4["底层数据输入处理 (ikcp_input)
"]
A5["拥塞控制
"]
A6["用户接口 (ikcp_send / ikcp_recv)
"]
A6 -- "存取队列数据" --> A3
A4 -- "填充接收队列" --> A3
A2 -- "调度发送队列" --> A3
A3 -- "存储数据单元" --> A1
A2 -- "执行拥塞算法" --> A5
A0 -- "维护拥塞状态" --> A5
章节
- 用户接口 (ikcp_send / ikcp_recv)
- KCP 控制块 (ikcpcb)
- 核心更新与刷新机制 (ikcp_update & ikcp_flush)
- 数据流转与队列管理
- 底层数据输入处理 (ikcp_input)
- 拥塞控制
- KCP 数据段 (IKCPSEG)