最后更新:2022-03-27 19:32:12 手机定位技术交流文章
行文前先安利下《 再深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP 》、《 再谈UDP协议—浅入理解深度记忆 》
KCP是一个迅速和可靠的协议,其带宽的10%至20%将耗资TCP,以换取平均延迟减少30%至40%,最大延迟减少3倍于传输影响。。
纯算法实现,我们不负责接收和分发底线协议(如联合民主党)。用户必须指定如何提供较低级别的数据包 。通过回调, 向 KCP 提供 。时钟也必须从外面传来。内部不会打系统电话该传输协议考虑到了联合民主党的设想情况。

整个 KCP 协议主要基于 kcp_ update 周期来驱动整个算法 。所有的数据发送,接收,它决定了地位的变化。因此,如果一项活动消耗每一份更新资料的时间过长,或者规定一个过长的内部清新时间间隔。这将降低算法的总体效率。kcp_ flush 是 kcp_ update 中最后的调用 。这是一项关键的礼宾职能。将数据,确认包,对窗口的检测和反应传输到右边。
要传输数据, KCP 使用 kcp_ send 。为传输数据,该方法使用iccp_output。在现实中,它最终返回,通过预先登记的退款发送数据。KCP使用 kcp_recv 接收了这些数据。如果被分片发送,将在此自动重组,数据应与传输前收到的数据保持一致。
根据TCP和UDP之间的区别,如果两者都是转让级协议,两者之间的根本区别应当是,TCP比UDP多多少。
TCP接受者与发件人保持状态(连接、断开),双方都知道对方仍然在那里。
可靠:发送的数据必须相互提供,并按发送的顺序提供。
TCP保证以瞬间的方式利用滑动窗口接收所提供的数据,TCP无私地行事,并假定整个网络在包件丢失时被封锁,并减缓了数据传播本身的速度。
由于TCP协议的可靠性,很容易将TCP用于发展,但其设计也造成延误。
TCP用于交通(可在秒内提供KB数据的数量)和充分利用带宽。
TCP创造了繁琐的握手过程和再传输计划,采用了复杂的交通堵塞管理算法,以确保网络通信的可靠性。TCP是在一个系统协议仓库中建立的,其改进是极其艰难的。。
由于UDP协议是基本协议,因此速度更快。 尽管如此,UDP是不稳定的,在申请层面上收到的数据可能丢失或乱七八糟。
在越来越多的情况下,联合民主党协议取代了TCP, 因为它具有简单、快速传输的好处。例如,网络浏览、流视频、实时游戏和物体联网都是在线活动的例子。
随着网络技术的快速发展,网络速度已不再是传输的制约因素,由CDN服务供应商Akamai报告,2008年至2015年的七年中,网络平均速度为每个国家1个。 5Mbps达到5.1Mbps,净速度大约高出4倍。网络环境有所改善,网络传输的延迟性和稳定性也有所改善,UDP的下降率不到5%,如果应用层重复使用,完全保证了传输的可靠性。。
KCP协议的目的是在UDP快速保留和较容易应用层使用的基础上提供可靠的传输 -- -- TCP是可靠和简单,但复杂和无私,速度如此缓慢。 KCP在UDP快速通道特征下仍然尽可能可靠。
TCP用于交通(可在秒内提供KB数据的数量)和充分利用带宽。
KCP是按流动速度(从一端向另一端发送单一数据包所需时间)开发的,以换取比TCP快30-40%的传输率,以10-20%的浪费带宽为代价。
TCP是一条巨大的运河,流动缓慢,但每秒流量高,而KCP则有少量但集中的水流。
作为MOBA和吃鸡游戏的主要同步方法,频频使用框架。竞技性也较高,无论从流畅性,这不仅是一个公平问题,而且也是一个正义问题。最需要的是作出迟发反应。根据业内经验,如果客户网络和服务器网络相隔150毫秒以上,这样做是不可行的。会开始出现卡顿,当延迟超过250毫秒时,它将对角色的运作产生更大的影响。游戏无法公平进行。类似地,以鸡为食的游戏(例如,为了同步玩家的位置和行动, " 绝地为生命 " )要求特别高。由于延误,数据缺乏一致性将对经验产生重大影响。事实上,时间性要求游戏与MOBA游戏类似。就经典的mmorpgs而言,正在使用几种同步算法。必须优先进行属性育种和购买设备。也有一定竞技性,为了响应游戏平滑的呼声还有时间限制。同步方法的优化程度不尽如人意。这一要求也不一样,总而言之,为了保证比赛顺利进行答复所需时间仍然不到300毫秒。相比之下,像传说、角斗士、梦中漫步之类的圆形游戏数据两侧只有一个参与者参与其中。无数据竞争,且时间粒度较粗,使用特殊效果来掩盖延迟甚至不可行因此,该网络对潜伏期的要求微乎其微。潜伏时间甚至达到500毫秒至100毫秒。游戏也能正常进行
各种传输层协议在可靠性、流量管理和其他技术特点方面各不相同,这些技术细节可能影响延缓因子传输层协议在可靠性、流量管理和其他技术特征方面各不相同,这些技术细节可能影响延缓。
Tcp努力做到完全可靠,并按顺序排列;如果投下,将重新发送,直到对包件进行核查;否则,从上部将不接受随后的包件,并将采用指数飞行法重新发送。再传送超时间隔由不受控制的转口决定。 在下降率暂时急剧上升的情况下,这种技术将导致应用层反应的延迟性大幅提高,对高实时和复杂的网络环境来说是不合适的。
根据乌德普海关转移层协议增加一定程度的先后顺序和适当性,以及可调整性,修改流控算法。适当放弃重传,如果您对再传送的数量设定一个限制,即使重传失败,没有必要重新建立联系。Quic、 enet、 kcp 和 udt 是最著名的 tcp 快速开源程序。
在QUIC原则以及业绩分析和部署方案筹备期间写道:
Quic是一个全面的固定平台 http 协议 。这个故事是我们对2011年埃及抗议的特别报导的一部分。指定 udp 的用法( 但使用 udp 并非绝对必要) 。首要目标是将TCP的可靠性与Upp协议的速度和效率结合起来。其主要特点包括能够避免预先包装、减少数据包、纠正转发、重新开会和平行下载。另一方面,QUIC的目标是TCP+TLS+SPDY,QUIC的目标是TCP+TLS+SPDY。相比其他方案更重,目前全国网路游戏数量较少。
kcp 只不过是根据断开的数据报告收集连接和拥堵管理规程。在底部,没有限制。可以基于 udp,例如,它也可能基于假象(tcp/icmp)等。它还可以基于适合某些环境(例如一些现场通信主干线)的需要的非内部网络网络。
ENT: 存在 ARQ 协议 。 发送和发送不需要自我实现, 提供连接管理、 心跳机制。 支持的人数是固定的 。 这是跨平台的自我实现 。 没有抽搐控制 。 线条不安全 。
实际上, kcp 无法与 quic( quic 相对于 enet) 比较, 但对于联合民主党来说, 它与 QUIC 协议有关, 与 WebRTC 一样, 也与 QUIC 协议有关。
为什么采用UDP,协议的其余部分呢?例如,短链氯化石蜡的诞生带来一些TCP/UDP没有的好处(支持多主机多流并行战斗)。不过,它与Windows操作系统类似。没有支持路由器、网关或类似设备。它不能铺设(除非在私人或专门网络中)。况且,技术或战术解决了TCP/UDP的若干关切。
我们认为,传输在网络上不可信,在许多情况下,我们需要可靠的数据,即所谓的可靠数据,可以适当和按顺序接收,这是ARQ协议的基础,而ARQ协议是TCP可靠性的基础。
ARQ(自动重复查询)是传输层错误纠正方法之一。 它通过使用识别和超时技术,在不值得信赖的网络上实现可靠的信息转让。。
请求响应模式同步化,其依据是通过不同时间的再传输确保可靠性。

A是分配给每次即将发出的信息的数据编号,用于识别和排序数据。
A 发送数据时,将为其发送的数据设定一个计时器。
B 接收信息并作出确认答复,确认书有自己的独有编号。
确认副本将被删除, 定时器将被禁用, 并且由于可能的传输错误, 副本将被保存 。
B收到不正确的数据,或数据被重新定向,导致B没有收到所要求的数据。
A未在规定期限内获得确认,不得不重新分发数据。
TCP有32位位数的序列号和32位数的识别号码,TCP和UDP有16位数的校验和。
几个分组可以平行传送,而无需在每轮之后暂停确认。

我当时没有想到 HTTP1.Plubbing 模式与 HTTP1. Stop1 模式放在1 的 HTTP1. stop 模式中, 但这里有一点区别, HTTP1. 一是中端服务器对客户请求的按顺序回复, 而随后的 ARQ 协议并不对每个数据段做出回复, 而是对整个数据集做出回复 。UNA模型的定义是,仅对数字最高的数据部分作出答复,表示收到所有先前的数据。因此, " ACK " 方法可被视为避免等待 " ARQ协议 " 的一种方法。
现在可以在不可靠的网络上传送可依赖的数据,但这并不意味着可以随意发送数据;带宽受到限制,接受者的工作量也受到限制,因此建立了流动管理窗口方法。
为了防止将过多的数据注入网络,以免路由器和网络电缆不堪重负。
缓慢的启动、后退、快速再传输和快速恢复是与控制拥堵有关的一些问题。
缓慢的起始点是指在数据发布开始时窗口的扩展缓慢,半省略是指在网络拥堵期间窗口的缩小,而快速的再传输是指在网络恢复期间的及时反应。 这是一个快速的恢复。。
目的地通知发送者,它愿意接受缓冲区的面积,这经常与随后的 " 年度报告调查表 " 协议结合进行。
窗口协议得到TCP协议16位数窗口大小的支持。 UDP协议的目的是尽可能多地提供,无论您是否获得,因此没有字段。
TCP协议是一项以连接为导向的协议,在数据传输前通过握手连接了三次,在数据传输完成后,通过手波断开四次,整个程序意味着完全数据传输,因此,需要四个长的长度来通知提供的数据。
联合民主党协议与此无关。这两个数据传输没有共同之处。因此,它需要16位元来确定发送的数据数量。同时注意,联合民主党协议没有下列数据传输率:2:16-1-8-20(联合民主党长8个)。这个故事是我们对2011年埃及抗议的特别报导的一部分。而是与MTU有关,这是数据链层最大的传输单位(最大传输单位)。值是1500。
8个TCP协议标记表明了各种功能。例如,如果SYN = 1表示正在建立连接,就让音轨 = 后继 + 1 没有任何核查。当URG = 1 = 16 紧急点启动时,紧急指针显示正常数据的起始点。上述统计数字构成额外和关键的信息。可以被尽快处理。
当TCP和UDP的工作过程显而易见时,KCP很容易理解。
KCP 协议的默认模式是标准 ARQ, 必须设定该模式以打开加速开关 :
int ikcp_nodelay(ikcpcb *kcp, int nodelay, int interval, int resend, int nc)
无换代:是否启用了无换代模式; 0 表示没有启用无换代模式; 1 表示启用了无换代模式 。
间间隔:内部工作间隔以毫秒计,例如10毫米或20毫米
Resend: 快速再传输模式, 默认 0 关闭, 可以更改( 2 个 ACK 十字架被直接重新传送)
nc:是否默认关闭流量控制,有0个表示不应关闭,1个表示应关闭。
KCP有常规和快速模式,可采用下列战略提高流量率:
iccp_ nodelay (kcp, 0, 40, 0, 0, 0; 正常/ 正常模式) ;
ikcp_nodelay ( kcp, 1, 10, 2, 1) 是速度/ 快速模式 。
int ikcp_wndsize(ikcpcb *kcp, int sndwnd, int rcvwnd);
调用将设定协议的最大分布窗口和最大接收窗口大小, 默认情况下两者均设定为32。 这与 TCP 的 SND_ BUF 和 RCV_ BUF 类似, 但 SND/RCV_ BUF 的单位为字节, 而单位为包件 。
纯算算法协议没有检测到 MTU; 默认 mtu 是 1,400 字节, 并且该值可以使用 iccp_ setmtu 修改 。 当数据包合并和分割时, 此值会影响最大运输单位 。
TCP 超时计算为 RTOx2, 当它连续下降三次时, 它就会变成 RTOX8, 而当 KCP 开始快速模式时则更糟, 快速模式只是 x1.5( 专家证书 1) 。 5 是一种合理的体面价值, 能够提高传输速度 。
TCP的超时是RTOX2,所以RTOX 8连续三次,太可怕了
KCP 开始快速模式不是 x 2,而只是 x 1. 5( 专家证书 1) 。 5 是一个极好的值, 它可以加速传输速度 。
TCP在投放袋落下时将所有数据重新传送到投放袋中。
只有在有选择地重新传送 KCP 时才会丢失传真。 (TCP 还包括重写 SACK 的能力,但有一个区别,将在随后的一篇文章中涵盖。 )
与TCP相同,所有这些都以累积确认的方式完成。发送端发送了1,2,3,4,5几个包,然后,我得到了遥控 ACK 1:1 1 。3,4,5,当收到ACK = 3 时,发生下列情况:KCP知道有两人曾被跳过一次。下午4时=ACK众所周知,有2人被跳了两次。目前,可以假定2号不在。不用等超时,直接重传2号包,投放袋子时的传输速度大大加快。1字节 cmd 等于 81。在 TCP 中, SN 对应以下。当 cd 等于 82 时,在TCP, Sn与赛道相关。在 WebSocket 协议中, CMD 等于 OpenCode 。即操作码。
在随后的ARQ协议中,TCP它不会是对一系列事实的单一回答,但不会是单一回答。传送ACK时有个小问题这是以前讨论过的妇女署模式。目标是充分利用现有带宽。尽管如此,这将计算出难民审查法庭更长的时间。选择把袋子扔掉要花点时间KCP 的ACK 是否延迟, 是可以调和的 。
为了充分利用带宽,TCP延迟传输ACK(NIDELAY)变得毫无价值,导致RRT时间更长,在丢弃包件时延长了判断过程。
通过 KCP 传输 ACK 的延误已经解决 。
年度报告调查表模式有两份答复。UNA. (此数字适用于此数字之前收到的所有包件 。 )关于TCP和ACK(已收到一个包件),这将导致整个重新传送。光是使用ACK的费用太贵了以前,两者之间有一个选择。而 KCP协议中,除了个别的ACK包件之外可在所有产品中找到UNA信息。
KCP通常使用的模式与TCP使用公平特许权相同。换句话说,传输窗口的大小取决于发送缓存大小、接收剩余接收缓存大小、倾弃包件以及缓慢启动的四个因素。但是,关于提供少量必须及时发送的数据,通过配置您的系统, 您可以绕过以下两个阶段 。只有前两个用来控制传输频率政府的结论是,以部分公正和带宽消费为代价,它无法这样做。这是回报 广播通过BT。
在严格的时间限制下传输少量数据,可以通过定制上述窗口协议的拥挤窗口机制来实现这一点。完全依赖幻灯片窗口。两个字节 wnd 大小与 TCP 协议的 16 位窗口相同 。值得一提的是,还有其他技术来规范KCP协议的窗口。当 cmd 等于 83 时,这是关于远程控制窗口大小的询问 。当 cmd 等于 84 时,指定远程窗口的大小。
4 位元元conv 显示相匹配的会话数,这与WEB HTTP 协议中的会话ID相似,以便让未连接的协议知道,当KCP在UDP基础上实现时,是什么协议。
当数据被拆散时,一个字节frg代表数字,而四个字节则代表整个数据长度,类似于WebSocket协议中的 len 。
气候技术中心是气候技术中心最重要的结构,从会议一开始就建立,代表本届会议,因此它代表了届会必须包括的所有组成部分,其中一些特点已经在气候技术中心环境小组中作了具体说明,不再予以说明。
cnv: 注意到本届会议;
mtu表示最大传输单位,默认数据速率为1400,最低50。
ms:最大碎片大小,不超过mtu;
问题:连接状态(0x(0x#)信号断开);
sd_una: 第一个未知的软件包;
snd_nxt: 将要部署的以下包件的序列号;
要接收信件序列号,接收方将保留一个接收窗口,其起始序号为 rcv_nxt(接收的序列号)和尾号为 rcv_nxt + rcv_wnd(接收窗口的大小)。
sshresh: 包件对流窗口阈值( TCP 字节);
rx_rttval: 显示连接振动的 RTT 变化;
Rx_strtt:平滑的双程旅行时间,在平滑的RTT后计算;
rx_rto: 由ACK确定为接收延迟的再传送超时;
rx_minrto: 以秒数重新传送超时;
使用 snd_ wnd 传送窗口大小;
rcv_wnd: 接收窗口的大小;
rmt_wnd: 远程接收窗口的大小;
cwnd: 对流窗口尺寸;
probe:探查变量,IKCP_ASK_TELL指定远程窗口的大小。IKCP_ASK_SEND表示请求远端告知窗口大小;
间隔间隙:间隔内Flush更新对系统周期效率有重大影响。
ts_flush: 下一次闪光更新时间戳;
xmit: 发送文本的次数; 当文本长度过长时, xmit(第一次或再次发送除外)也一样。
rcv_buf: 接收信件缓存;
nrcv_buf: 在缓存中收到的信件数 。
snd_buf: 信件传输缓存;
nsnd_buf: 存储在缓存中的信件数量;
rcv_queue: 信件接收队列
nrcv_que: 当前队列中的信件数量;
snd_queue: 信息发送队列;
nsnd_que: 排队的信件数;
无延缓: 是否启动无延缓模式 。 无延缓模式 rtmin 将设置为零, 并禁用拥堵控制 。
更新:是否援引了更新功能的标识。
ts_ probe: 下一个搜索窗口的时间戳;
Probe_delay: 搜索窗口必须等待 。
(a) dead_link:被视为断开连接的再传输的最大数量;
Incr: 可能发送的数据的最大数量;
获取:要发送备份列表;
(a) 装船清单中的包数:装船清单,每个装船清单都储存在装船清单中;
accockblock: 以两位数乘数表示可容纳的ccocklist的最大数目;
用户: 可用于随意输入代表用户的数据的指针, 或在此过程中传送变量 。
缓冲: 用于存储消息字节流的设备 。
fastresresend: 导致快速再传输的重复 ACK 数量 。
注意:正在解除对拥挤的控制。
流:是否正在使用目前的传输方法;
日志: 日志类型, 如 IKCP_ LOG_ IN_ DATA, 以协助排除故障 。
输出 udp: 信息发送回声函数;
写法: 用于写入日志的回声函数 。
参考文章:
org. 我道歉, zhihu。 这篇文章是我们对2011年埃及抗争特别报导的一部分。
我不知道安全的UDP, KCP协议在哪里, qq. Co/lab/view/391.html。
KCP 议定书和来源分析 (i) https://github.com/skywind 300/kcp/此项目是我们特别报导全球之声在线.com/skywind 300/kcp/的一部分。
因特网编程懒惰者条目(v):http://ww.un.org/.52im.Net/thread-1277-11-1.html简要地说明了为什么UDP有时比TCP好。
KCP议定书重印了这篇文章:从TCP到UDP家庭QuIC/KCP/ENET。
本文是我们特别报导全球之声Online. net/html/theory/Computer ScienceTechnology/Network/1916_0106_387.html的部分内容。
本文由 在线网速测试 整理编辑,转载请注明出处。