问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

kcp到底是什么?

发布网友 发布时间:2024-10-22 19:48

我来回答

1个回答

热心网友 时间:2024-10-30 09:53

对于游戏开发,尤其是MOBA(多人在线竞技)游戏,延迟是需要控制的。然而,传统的TCP(网络友好,很棒)并不利于包的实时性传输,因为它有超时重传和拥塞控制,这些在网络友好方面表现出色,但对于包的实时性,缺乏优势。因此,通常需要基于UDP实现一套自己的网络协议,以保证包的实时性和可靠性。基于UDP,网络界有许多优秀协议,如KCP。

KCP是一种网络传输协议,被视为TCP的替代品,但运行于用户空间,专注于算法实现可靠传输,其特点是牺牲带宽以降低延迟。与TCP大公无私不同,KCP专注于提高传输效率,不顾及整个网络的拥塞情况。TCP在检测到丢包时,首要考虑的是网络拥塞,减慢自身速度以避免网络恶化,而KCP则立即重新传输,不耽误事。

KCP可以理解为可靠的UDP协议。UDP是面向无连接的协议,由于其实时性较好,通常用于游戏或音视频通话中。此外,它无需提前建立连接,节省设备资源,广泛应用于嵌入式设备。在大量数据传输(如文件下载)以及DNS中,客户端请求域名对应的地址环节,使用的是UDP。注意,DNS另一部分,域名服务器节点之间的数据同步则使用TCP。

为了提高UDP的可靠性,KCP在UDP协议上封装了一层可靠性传输机制,融合了TCP的安全性(如流量控制和拥塞控制)和UDP的实时性,并具备一定的灵活性(如超时重传、ACK机制等)。KCP协议是一个代表。

TCP的特点是可靠传输、流量控制、拥塞控制以及面向连接,而KCP基本可以调整这些参数,且无需建立或关闭连接的过程。

在KCP的协议头部中,包含有连接号、命令字、分片、接收窗口大小、时间戳、序列号、下一个可接收的序列号以及数据长度等关键信息。

KCP的流程包括数据接收和发送。数据接收时,数据被暂存于缓存中,并按序列号排序。发送时,数据先被放入缓存,随后进行分片以适应MTU(最大传输单元),再根据流量控制和拥塞控制进行发送。重要的是,不断调用ikcp_send()方法,数据会累积在snd_queue中,而对方的数据则会累积在对方的rcv_buf中。

KCP的确认机制分为una和单独的ACK。Una机制用于确认una之前的包全部收到,而单独的ACK机制则对特定的包进行确认。KCP优先检测una。KCP的重传机制灵活,允许自定义超时重传时间,并实现快速重传,当特定数量的数据包收到ACK时,即便未到该包的RTO(重传时间),也会立即重传。此外,KCP支持延迟ACK、非退让流控等特性,提高了传输效率。

KCP的实现原理是简单的算法实现,无需涉及底层调用。用户只需要在UDP系统调用时注册KCP回调函数即可使用。KCP可以理解为一个应用层协议。

对比TCP,KCP为了实现选择性重传(ARQ),维护接收窗口(滑动窗口)。收到有序数据会将其放入接收队列,以供应用层消费。若存在包丢失,会检查并根据设置的次数选择重传对应的包。

KCP使用数据包字段实现稳定通信,针对不同点进行优化。通过una和ACK机制实现选择性重传。发送逻辑涉及将数据分片放入发送队列,最终通过回调函数驱动实际数据发送。接收逻辑包括解析头部数据,解析ACK和UNA指令,以及处理数据报文。

KCP实现原理中,发送逻辑包括发送ACK、窗口探测、窗口大小调整、发送队列管理及重传逻辑等。接收逻辑处理数据包,解析头部信息,更新窗口大小,处理ACK和UNA指令等。这些操作确保了数据的稳定传输。

KCP的优点在于没有使用系统调用接口,无需建立/关闭连接(仅从KCP本身来看),并且可配置的参数较多。然而,学习成本相对较高,且可能受到某些运营商对UDP的*。

总的来说,KCP在丢包率高的网络环境下表现出色,特别是在对实时性要求较高的程序中,如LOL等。它通过算法优化实现了与TCP相似的功能,但在实时性和传输效率上提供了额外的优势,适用于游戏帧同步或数据实时传输领域。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 昭和假面骑士哪部比较好看? 为什么MOBA吃鸡游戏不推荐用tcp协议 那部假面骑士好看?推荐一下 音乐之声里《the lonely goatherd》 每一句的歌词 把每句是谁唱的和唱... 街上都由看过假面骑士系列的吗,进来说说最爱哪一部 昭和时代的哪部假面骑士最好看 ...形成原因用板块构造学说解释是( )板块 小儿皮肌炎有什么危害 吴中区社保局 从苏州金桥开发区怎么做车到苏州吴中区社保局 联想y470 w7系统dns出现服务器无法连接 ...windows无法与设备或资源(主DNS服务器)通信,怎么办 联想Y470 网络黄色感叹号,显示DNS服务器可能不可用,手动按照属性里的地... 伤感的句子带人生感悟,心疼图片带字伤感句子,感情伤感句子图片带字... 联想y470重装系统后桌面没有图标也连不上网 临沂市人民医院所获荣誉 如何有效应对高温底部硫化氢 临沂备用电源设备推荐 颞颌关节炎挂什么科 ...得不到及时处理时会产生大量什么气体他对温室效应的影响是二氧化碳... 面试中被问到"请以您以往的实际工作为例,详细的描述一次测试用例设计的... 什么是Internet控制信息协议? 我是做散装洗洁精的,现在想注册商标,让别的厂方加工,回来贴自己的商标... 手机变慢是机内内存用太多的原因吗 建筑陶瓷制品有哪些 找圣火世界传递路线图中考社会用 有酷狗的朋友们,搜索下(网络歌曲 dj 英文歌曲),会出来一些歌,第一首... 甲亢药吃多了会怎么样 抖音没有互相关注私信别人能看到吗 请问长时间吃甲亢药,对身体的那些器官有伤害? 甲亢药物吃多了有什么影响 处于恢复期 河北省国际展览中心展览优势 漯河食品工业学校属于公办啊还是民办啊? ...推荐一台运行速度快,内存大,配置较高极其适合办公的笔记本电脑 感叹时光飞逝友情岁月的句子 回忆和朋友在一起的美好时光说说 这花叫什么名字 有毒嘛? 小学一年级下册语文需要总结段意吗 新加坡共和国成立 下眼睑一直跳什么原因