概念kcp-afastandreliablearqprotocol、kcp高速可靠的网络传输协议
KCP的目标是在确保可靠性的同时提高传输速度。 kcp采取一系列措施尽量提高网络的传输速度。 在网络实时性和可靠性要求比较高的情况下,可以考虑kcp协议代替tcp协议。
KCP是一种快速可靠的协议,以KCP比TCP浪费10%-20%的带宽为代价,与平均延迟降低30%-40%的效果相反,获得了最大延迟降低3倍的传输效果。
整个协议只有两个源文件: ikcp.h和ikcp.c,可以轻松集成到您自己的协议栈中。 如果您实现的是P2P或基于UDP的协议,但缺少ARQ信任协议的完整实现,则只需将这两个文件轻松复制到现有项目中并编写两行代码即可。
KCP优势KCP受到越来越多的旅游开发项目的关注,最主要的原因是KCP协议能够克服UDP丢包的问题。 如果比TCP浪费10%~20%的带宽,则可以得到平均延迟降低30%~40%、最大延迟降低3倍的效果。
KCP特征KCP特征明显,比UDP可靠,比TCP流速快。
与TCP的区别1、TCP专为流量而设计,要求每秒传输多少KB的数据,充分利用带宽。
2、KCP被设计用于流速,用比TCP快30%-40%的传输速率来代替浪费带宽(单个分组从一端传递到一端需要多长时间)。
KCP用途KCP数据可靠、流速快的特性适用于使用帧同步的MOBA类游戏,视频也有一定的市场。
如果网络没有发生过丢包,直接使用TCP即可,直接裸UDP也没关系。 但是,网络会因丢包而引发纸箱,尤其是在高峰时段,丢包可能会上升到10%,而在移动设备上,这种情况会更加恶化。
KCP算法
旨在解决网络拥塞情况下tcp协议网络速度慢的问题。 kcp协议的热点主要是控制数据可靠性和提高传输速度,因此kcp没有规定下级的传输协议,一般使用udp作为下级的传输协议,kcp层协议的数据包在udp数据消息的基础上增加报头如果用户数据大于一个udp数据包所能负担的范围,kcp会将用户数据分片存储在多个kcp数据包中。 因此,每个kcp包都称为片。
KCP传输原理
KCP是可靠的传输协议,UDP不可靠,因此需要额外的信息来确保传输数据的可靠性。 因此,必须在KCP传输的数据中添加标头。 用于确保数据的可靠性和秩序。
数据接收过程KCP的接收过程对UDP收到的数据进行解压缩,然后重新组装顺序中的可靠数据并传递给用户。
对于TCP丢包,来自丢失数据包的所有数据都将被重新发送。 KCP被选择性地重发,只有丢失的数据包被重发。
高速重发发送端发送1、2、3、4、5个数据包后,接收到远程的ACK:1、3、4、5。 当接收到ack3时,KCP知道2被跳过了一次,并且当接收到ACK4时,KCP知道2被跳过了两次。 此时,虽然认为第2个丢失了,但是通过不等待超时就这样重新发送第2个分组,得到了大幅改善