From 408fe809086daaa07ab53c984729b8a993cba056 Mon Sep 17 00:00:00 2001 From: skywind3000 Date: Wed, 8 Jan 2020 02:40:06 +0800 Subject: [PATCH] update doc --- README.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dfbfa57..d083c35 100644 --- a/README.md +++ b/README.md @@ -201,13 +201,27 @@ TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的 - [Kcp a new low latency secure network stack](https://improbable.io/blog/kcp-a-new-low-latency-secure-network-stack) -# 项目历史 +# 关于作者 -See [Success Stories](https://github.com/skywind3000/kcp/wiki/Success-Stories). +我叫林伟,笔名韦易笑,写程序很多年,喜欢研究解决程序中的一些瓶颈问题,早年喜欢游戏开发,照着《VGA编程》来做游戏图形,读 Michael Abrash 的《图形程序开发人员指南》做软渲染器,喜欢鼓捣一些能够榨干 CPU 能够运行更快的代码,参加工作后,兴趣转移到服务端和网络相关的技术。 + +2007 年时做了几个传统游戏后开始研究快速动作游戏的同步问题,期间写过不少文章,算是国内比较早研究同步问题的人,然而发现不管怎么解决同步都需要在网络传输方面有所突破,于是开始花时间在网络传输这个领域上,尝试基于 UDP 实现一些保守的可靠协议,反照 BSD Lite 4.4 的代码实现一些类 TCP 协议,或者做个 P2P 的网络模块,实现个动态路由网络,而这个 KCP 协议基本算是自己做的好几个玩具中的一个。 + +Kcptun 的作者 xtaci 是我的大学同学,我俩都是学通信出身的,我们经常在一起研究如何进行传输优化。 + +# 关于协议 + +近年来,网络游戏和各类社交网络都在成几何倍数的增长,不管网络游戏还是各类互动社交网络,交互性和复杂度都在迅速提高,都需要在极短的时间内将数据同时投递给大量用户,因此传输技术自然变为未来制约发展的一个重要技术因素之一,而开源界里各种著名的传输协议,如 raknet/enet 之类,一发布都是整套协议栈一起发布,这种形式是不利于多样化的,我的项目只能选择用或者不用你,很难选择 “部分用你”,然而你一套协议栈设计的再好,是非常难以满足不同角度的各种需求的。 + +因此 KCP 的方式是把协议栈 “拆开”,让大家可以根据项目需求进行灵活的调整和组装,你可以下面加一层 reed solomon 的纠删码做 FEC,上面加一层类 RC4/Salsa20 做流加密,握手处再设计一套非堆成密钥交换,底层 UDP 传输层再做一套动态路由系统,同时探测多条路径,选最好路径进行传输。这些不同的 “协议单元” 可以像搭建积木一般根据需要自由组合,保证 “简单性” 和 “可拆分性”,这样才能灵活适配多变的业务需求,哪个模块不好,换了就是。 + +因此给大家一个可以自由组合的 “协议单元” ,胜过给大家一套完整成熟的 “协议栈”。 + +For more information, please see the [Success Stories](https://github.com/skywind3000/kcp/wiki/Success-Stories). # 欢迎捐赠 -![欢迎使用支付宝对该项目进行捐赠](https://raw.githubusercontent.com/skywind3000/kcp/master/images/donation.png) +![欢迎使用支付宝对该项目进行捐赠](images/donation.png) 欢迎使用支付宝手扫描上面的二维码,对该项目进行捐赠。捐赠款项将用于持续优化 KCP协议以及完善文档。