danscort2000的列

电脑杂谈  发布时间:2020-05-21 19:23:08  来源:网络整理

udp 传输_udp可靠传输 开源_udp可靠性传输

关于使用udp可靠传输代替tcp传输,我之前写过一篇文章,阐述了udp可靠传输相对于tcp的优缺点. 以udp传输代替tcp传输为宜,这是将网络传输的实时性作为首要考虑的实时游戏应用程序.

Internet上有很多文章都在谈论使用udp可靠传输而不是游戏中使用的tcp的原因. 我还看到了游戏中几个udp应用程序的实现. 尚未播放完毕,例如,无序的可靠传输只能视为可用的. 指导思想存在问题. 其中许多没有清楚地解释. 需要详细解释. 计划重写udp可靠传输的实时实现代码以进行比较和测试.

让我们看一下以下TCP协议栈的具体实现. tcp使用滑动窗口进行流量控制,将tcp层的数据分段并通过ip层传输,然后重新组合tcp层. 当发生丢包时,让我们看看会发生什么?通常基于当前的延迟数[根据前一个ip数据包的传输延迟计算的数字],第一个数据包丢失的计算方法为2 *延迟+延迟常数,且不小于定义的最小延迟数,延迟号不能在应用程序层强制修改,因为它是协议栈的实现,当达到延迟时间时,每次发生数据包丢失时都会重新发送一个ip数据包,tcp会“友好”地认为它是由网络拥塞和带宽不足引起的,它将缩小窗口[缓冲区]并降低传输速率. 如果所有的实现,包括udp可靠的传输,每个人都采用这种“友好”的方式,“ Pipeline不会为第一时间而战,这是没有问题的. 通常,网络带宽的浪费可以被最小化[因为当网络使用tcp / ip协议时堆栈已实现,1Mbps已经非常豪华了,因此优先考虑的是[以避免浪费带宽]udp可靠传输 开源,一些udp可靠的传输会说它们的实现可以抢占带宽,尼玛不抢占带宽,这是无赖,每个人都在开车根据规则等待交通,您的Y来到加瑟,没有人可以抓住你,但每个人都是文明人,在tcp的算法中,它使用缓慢启动,这在非实时情况下没有问题诸如文件传输之类的应用程序,以及带宽浪费(即错误发送重复数据包的可能性)较低的问题,只有1/1000,这是没有问题的,但是在实时性要求较高的游戏中,希望重新发送如果您在50毫秒内没有收到确认,并且浪费的带宽立即被实时需求所取代,但是tcp具有最低的重传率(不同的实现编号有所不同),通常至少为180毫秒,请立即凝视. 问题是什么? Tcp是一种有序的流传输,假设ip层发送了10个数据包,编号为1到10,但是这很糟糕. 数据包1丢失了,然后所有后续的数据包2到10必须在缓冲区中等待重新传输tcp还认为当前的重传是由于带宽不足引起的. 收缩窗户,好了,引发了一系列反应.

无线网络下的TCP性能,

在无线网络中,偶发的数据包丢失是高概率事件,这对于tcp来说是可怕的. 对于偶发的数据包丢失,正确的方法是尽快重新传输丢失的数据包,但是tcp算法确实做出了判断,顺便说一句,它认为网络很拥塞,应该减慢发送速度,然后更加悲惨. 这就是为什么我们经常说Niuniu的无线网络无法跟上垃圾有线网络的稳定性的原因.

udp可靠传输 开源_udp 传输_udp可靠性传输

初步总结,当前的tcp实现对由于网络连续拥塞而导致的数据包丢失具有很好的适应性,带宽浪费极低. 但是当遇到偶尔的数据包丢失时,当前的实现判断是错误的. 因此,在需要高实时性能的地方,效率是不够的.

使用tcp和udp进行可靠传输的相互干扰

如果游戏同时使用tcp和udp传输,则确实会相互干扰. 这主要是由tcp的拥塞控制机制引起的,因为tcp和udp最终通过ip层传输,并且tcp或udp可靠地传输. 实现,时延的控制和判断是相互独立的. 当双方同时传输大量数据时,ip层会出现类似于tcp包udp包udp包udp包udp包tcp包的传输队列,根据常规算法,除了恶意算法外,UDP可靠传输和TCP都会检测到增加的延迟,因此两者都将判断网络已拥塞并降低了传输速度.

Upd和tcp最终被密封到ip数据包中以进行传输. 让我们看看在什么情况下会发生IP数据包丢失

[1]发件人的网络拥塞导致多个应用程序同时启用大量数据传输,例如,当您在玩游戏时,同时有bt下载,而其他诸如手机访问网络,这种情况是在家庭中它通常发生在网络下. 在某个时间点,发送的ip层数据包数超过了路由器[网关]的处理队列限制. 这时,路由器将根据算法或随机[常见rom实现]丢弃数据包,或根据优化丢弃某些细节. 打包[通常是udp打包].

udp 传输_udp可靠性传输_udp可靠传输 开源

[2]由于物理错误,在物理链路的传输过程中,由于crc检查错误导致数据包丢失,因此这种可能性非常小,因此实际上ipv6只是在传输过程中取消了ip crc检查,但是还有可能是中奖了.

[3]在传输过程中丢失数据包. 在ip数据包通过isp线到达目标ip之前,该数据包由于错误的路由路径而丢失,或者由于通过某些节点时的拥塞而被随机丢弃. 该概率通常在1/1000以下.

[4]由于接收方的网络拥塞,许多应用程序在特定时间段突发并发送大量数据,尤其是发送大量UDP数据包,这超出了处理速度或队列限制. 其他路由器的[网关],并且也会出现随机丢失的情况

[5]无线网络传输过程丢失. 无线网络很方便,但不稳定. 在传输过程中,即使您只是在路由器和无线终端之间碰到一条狗,传输错误也可能导致数据包丢失. 无线数据包丢失的概率为千分之几到百分之几. 连接握手速度越高,丢包的可能性越高.

[6]其他,基本上应该是赢得大奖的可能性

udp可靠性传输_udp可靠传输 开源_udp 传输

那么,当发生丢包时,我们如何确定协议中发生了什么以及应该怎么做?

丢包的原因是123456. 由于没有反馈,无法知道ip层,并且不同的上层实现有不同的指导思想和处理意见

tcp的指导思想很简单. 如果发现在指定的延迟时间后仍未收到ACK确认的数据包,则认为该数据包丢失,请重新发送该数据包,并降低发送速度. 此处理方法的优势是,当发生数据包丢失时,人们一直认为,发生网络拥塞可以最大程度地减少重复传输数据包所造成的带宽浪费,即避免带宽浪费是主要的指导思想,因为100M连接,tcp应用在数据包丢失的可能性很小的情况下在这种情况下,它可能只能使用98%的带宽,但是由于重复报告而造成的带宽浪费可能达不到千分之一. 如果同时有两个以上的tcp应用程序,则基本上可以关闭到100%浪费率(错误重发)极低.

传统的udp可靠传输,除了可能由1到6引起的丢包外,还需要另外7个. 由于udp可靠传输是在应用程序层实现的,因此ACK确认也需要在应用程序层实现,那么当系统内核处理繁忙时,例如,大量的磁盘I / O并发操作或游戏进程占用大量时间片,且CPU资源不足,将导致应用层无法及时读取SOCKET缓冲区中的数据包,也不会向对方发送ACK,并且对方不知道接收系统正忙导致接收延迟,因此,如果在指定的延迟时间内没有ACK确认,则将重复发送该数据包并认为丢失了该数据包,并调整缓冲区或延迟会增加. 通常,可靠的udp传输的目的仅仅是利用udp的良好可塑性来实现数据包流的双传输部分,而不是tcp. 因此,通常基于最小化由重复分组传输引起的带宽浪费的原理. 我的实现可以抢带宽,尼玛您不是抢带宽,而是纯粹在玩流氓,每个人都在按规则排队,您是在闯红灯而不是在按规则打牌,当然,这是一个例外字段,它是需要优先级以实时传输网络数据的游戏应用程序.

现在,让我们看一下实时网络传输优先级游戏应用程序的特殊性,为什么选择UDP可靠传输:

udp可靠性传输_udp 传输_udp可靠传输 开源

[1]网络游戏应用程序将对硬件cpu等有基本要求,除了确保游戏内容本身的流畅性外,还确保应用程序层的udp可靠传输可以有足够的cpu时间片. <

[2]网络游戏应用程序通常要求带宽在1.2Mbps到4.8Mbps之间,相对于当前的平均带宽为10 + Mbps或更高,为了确保足够的网络实时性能,您可以要求不要执行同时可以进行其他类似bt的下载操作. 您可以要求用户不要同时执行其他高流量网络应用程序. 这样,在可靠传输udp时,可以丢弃tcp类作为指导思想. 对于网络拥塞,应该将其视为偶然情况. 该软件包的指导原则是,它可以流氓并使用少量带宽来确保实时性能,而不是节省带宽. 由于tcp拥塞算法的缓慢启动缺陷,仅将tcp用于游戏数据传输udp可靠传输 开源,因此不适用于tcp等此类应用. 在偶尔丢包的情况下,您可能只能实现180ms的延迟,但是使用UDP的可靠传输可以优化为60ms.

[3]在游戏中,有大量数据不需要可靠和有序的数据,只能通过udp传输. 同时,udp可靠传输也是唯一可以排序和混乱的可靠数据. 传输方法,此外您找不到其他合适的方法.

[4]在Tcp实现中,用于重传数据报的默认较低时间片数据过高,不适合实时游戏网络应用,即难以保证实时连续传输可以实现无序可靠传输和有序可靠传输,并且不会因丢失预定数据包而引起链式反应.

[5]游戏应用程序,因为服务器和客户端是唯一的匹配,因此无需考虑第三方兼容性,因此udp可靠的传输可以实现特定的优化,并且无需动态地确定缓冲区大小适应性尽管可以可靠地进行udp传输,但是可以在深度上进行优化,这对于tcp来说是不可能的.

游戏应用中udp可靠传输的优化与一般udp可靠传输或文件传输udp可靠传输相反. 游戏应用程序的优化是使用流氓方法来实现优化,即使有一定的可能性. 错误重传[浪费的带宽]也是不惜一切代价的. 所有丢包都被认为是偶发的错误,一般的udp可靠传输或文件传输类型udp可靠传输都类似于tcp算法,而丢包是由网络拥塞引起的. 并使用某种算法来增加传输延迟或降低传输速率,以减少带宽的浪费.

如何选择和优化,勇于尝试,这里没有特定的最佳算法,网络已经在发展,只有上帝知道.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-218067-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...