KCP1
目录
1.0 KCP基础理解
KCP 与TCP,UDP的差异,适合的场景
| 特性 | TCP | UDP | KCP |
|---|---|---|---|
| 传输层类型 | 面向连接,可靠传输 | 无连接,不可靠传输 | 基于UDP协议的可靠传输 |
| 可靠性 | 強(丟包重传, 保序) | 不可靠传输(不保证到达,不保序) | 强(类似于TCP,但是重传更激进) |
| 连接方式 | 三次握手 | 无连接 | 无连接 基于会话ID conv |
| 传输速度 | 慢(受拥塞控制,延迟ACK限制) | 快(无确认,无重传) | 快(牺牲带宽换速度,延迟更低) |
| 拥塞控制 | 严格(AIMD,慢启动) | 无 | 可选(默认无) |
| Header大小 | 大(20-60字节) | 小(8字节) | 中(24-28字节) |
- KCP 适合对于实时性要求较高的场景,比如实时音频,语音,游戏等。
KCP 与TCP 可靠性区别
- KCP
- 快速重传。收到重复ACK 3(可配置次数)次,立即重传。
- 选择性确认(SACK):仅重传丢失的包,避免冗余传输。
- 低延迟。默认interva 10ms (TCP的RTO通常200ms)
- TCP
- 超时重传(RTO),累计确认(ACK),滑动窗口。
KCP与 TCP 拥塞控制区别
-
TCP
- 遵守AIMD策略(加性增,乘性减)策略,网络拥塞时大幅降低发送频率。
-
KCP
- 默认无拥塞控制。可以用户实现(cwnd和ssthresh参数)
- 灵活性:适合需要高吞吐但可容忍一定丢包的场景(如实时游戏)。
-
TCP 如何实现拥塞控制?(细节)
- 机制掌握
- 手动推导KCP 在特定网络环境下的行为
- 解释关键参数对性能的影响
- 实践
- 使用KCP库完成简单的数据传输Demo
- 通过Wireshark分析KCP会话,识别数据包、ACK、窗口更新等流程
- 根据模拟环境(如TC工具制造延迟/丢包)调优参数,提升传输效率