使用KCP 加速游戏消息,让全球玩家流畅联网

定义

           kcp协议是传输层的一个具有可靠性的传输层ARQ协议。

          它的设计是为了解决在网络拥堵情况下tcp协议的网络速度慢的问题。

           kcp力求在保证可靠性的情况下提高传输速度。

          kcp协议的关注点主要在控制数据的可靠性和提高传输速度上面,因此kcp没有规定下层传输协议,一般用udp作为下层传输协议,kcp层协议的数据包在udp数据报文的基础上增加控制头。当用户数据很大,大于一个udp包能承担的范围时(大于mss),kcp会将用户数据分片存储在多个kcp包中。因此每个kcp包称为一个分片。

其实kcp是在应用层上进行了一次拆包解包的过程,你可以把他作为tcp基础上拆解包的逻辑使用,也可以作为udp基础上的拆解包使用。至于kcp的一些简单基础的概念,我这里就不赘述了,大家可以在github上看下skywind的readme文档,这里我只说下kcp的重传机制,拥塞窗口。

KCP重传机制

         为了提供可靠性,kcp采用了重传机制。

        为实现重传机制,kcp为每个分片分配一个唯一标识,接收方收到一个包后告知发送方接到的包的序号,发送方接到确认后再继续发送。而如果发送方在一定时间内(超时重传时间)没有接到确认,就说明数据包丢失了,发送方需要重传丢失的数据包,所以发送方会把待确认的数据缓存起来,方便重传。  停等的重传机制发送一个包后必须等待确认后再发下一个包,传输速度较慢,所以为了提高发送速度,发送方可以不必再每发送一个包后就进行等待确认,而是可以发送多个包出去,然后等待接收方一一确认。又由于接收方不可能同时处理无限多的数据,因此需要

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode584. 寻找用户推荐人(SQL)

给定表 customer ,里面保存了所有客户信息和他们的推荐人。 ----------------------- | id | name | referee_id| ----------------------- | 1 | Will | NULL | | 2 | Jane | NULL | | 3 | Alex | 2 | | 4 | Bill | NULL | …

剖析KCP以及KCP在游戏中是如何使用的

亲爱的各位读者你们好,由于前段时间忙于部分项目的重构和优化,未能及时更新文章,不少读者催更,哈哈,我还是很开心能抽出时间给大家再来分享下kcp的相关技术内幕,以及之前完善自己的网络库增加了KCP的客户端服务器收发支持(结尾会分享封装的客户端服务器C++源码)。 KCP概…

leetcode585. 2016年的投资(SQL)

写一个查询语句,将 2016 年 (TIV_2016) 所有成功投资的金额加起来,保留 2 位小数。 对于一个投保人,他在 2016 年成功投资的条件是: 他在 2015 年的投保额 (TIV_2015) 至少跟一个其他投保人在 2015 年的投保额相同。 他所在的城…

暴雪游戏走后,谁来接盘?对网易有何影响?

11月16日,暴雪娱乐公司宣布,由于与网易的现行许可协议将于2023年1月23日到期,将暂停在中国大陆的大部分暴雪游戏服务。这些暴雪游戏包括《魔兽世界》《炉石传说》《守望先锋》《星际争霸》《魔兽争霸 III:重制版》《暗黑破坏神 II…

leetcode586. 订单最多的客户(SQL)

在表 orders 中找到订单数最多客户对应的 customer_number 。 数据保证订单数最多的顾客恰好只有一位。 表 orders 定义如下: | Column | Type | |-------------------|-----------| | order_number (PK) | int | | customer_number | i…

Oracle中删除一列

ALTER TABLE TBWORKER DROP COLUMN WTUIJIAN;

leetcode595. 大的国家(SQL)

这里有张 World 表 ---------------------------------------------------------------------- | name | continent | area | population | gdp | ---------------------------------------------------------------------- | Afghanistan …

leetcode596. 超过5名学生的课(SQL)

有一个courses 表 ,有: student (学生) 和 class (课程)。 请列出所有超过或等于5名学生的课。 例如,表: --------------------- | student | class | --------------------- | A | Math | | B | English | | C | Math | …

leetcode597. 好友申请 I :总体通过率(SQL)

在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。现在给如下两个表: 表: friend_request | sender_id | send_to_id |request_date| |-----------|------------|------------| | 1 | 2 …

leetcode543. 二叉树的直径

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]…

leetcode580. 统计各专业学生人数(SQL)

一所大学有 2 个数据表,分别是 student 和 department ,这两个表保存着每个专业的学生数据和院系数据。 写一个查询语句,查询 department 表中每个专业的学生人数 (即使没有学生的专业也需列出)。 将你的查询结果按照…

leetcode603. 连续空余座位(SQL)

几个朋友来到电影院的售票处,准备预约连续空余座位。 你能利用表 cinema ,帮他们写一个查询语句,获取所有空余座位,并将它们按照 seat_id 排序后返回吗? | seat_id | free | |---------|------| | 1 | 1 | …

leetcode607. 销售员(SQL)

给定 3 个表: salesperson, company, orders。 输出所有表 salesperson 中,没有向公司 RED 销售任何东西的销售员。 解释 输入 表: salesperson ---------------------------------------------------- | sales_id …

leetcode612. 平面上的最近距离(SQL)

表 point_2d 保存了所有点(多于 2 个点)的坐标 (x,y) ,这些点在平面上两两不重合。 写一个查询语句找到两点之间的最近距离,保留 2 位小数。 | x | y | |----|----| | -1 | -1 | | 0 | 0 | | -1 | -2 | 最近距离在点 (-1,-…

TCP与UDP特点与区别

TCP/IP协议 IP地址(IP Address) 计算机分布在世界各地,要想和它们通信,必须要知道确切的位置。确定计算机位置的方式有多种,IP 地址是最常用的,例如,114.114.114.114 是国内第一个、全球第三个…

leetcode613. 直线上的最近距离(SQL)

表 point 保存了一些点在 x 轴上的坐标,这些坐标都是整数。 写一个查询语句,找到这些点中最近两个点之间的距离。 | x | |-----| | -1 | | 0 | | 2 | 最近距离显然是 1 ,是点 -1 和 0 之间的距离。所以输出应该如下: | …

三次握手与四次挥手

三次握手 三次握手是指在建立TCP连接时,需要client端和server端共进行三次信息确认。 第一次握手:建立连接。client发送连接请求报文段(SYN位置为1,Sequence Number为x),然后,client端进入SYN…

leetcode619. 只出现一次的最大数字(SQL)

表 my_numbers 的 num 字段包含很多数字,其中包括很多重复的数字。 你能写一个 SQL 查询语句,找到只出现过一次的数字中,最大的一个数字吗? --- |num| --- | 8 | | 8 | | 3 | | 3 | | 1 | | 4 | | 5 | | 6 | 对于上面给出的样例…

socket入门

socket 简介 Socket即套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络…