udp可靠传输那些事之游戏篇

本文探讨了在网络游戏场景中,UDP可靠传输相对于TCP的优势。分析了TCP的滑动窗口机制在实时性上的不足,并指出UDP在偶发丢包情况下的优势。同时,提到了TCP与UDP共存时的干扰问题以及丢包的多种原因。文章强调了游戏应用中,可以通过优化UDP实现以牺牲部分带宽来换取更低延迟,更适合实时性强的网络游戏需求。
摘要由CSDN通过智能技术生成

    关于使用udp可靠传输在替代tcp传输方面,我之前已经写过文章,http://blog.csdn.net/danscort2000/article/details/8432778,说明了udp可靠传输相对tcp的优点和缺点,这里不再重复说明,但是,有一个特殊的应用范围是非常适合使用udp传输代替tcp传输的,这就是对网络传输的实时性为第一考虑的实时网络游戏应用.

   网上有不少文章都谈到了使用udp可靠传输替代tcp,应用在网络游戏中的原因,也看了几个udp在游戏中应用的实现,感觉存在不少的误解,有些udp的特性并没有发挥出来,例如乱序可靠传输,只能算是能用,指导思维有问题, 很多都没有解释清楚,需要详细解释一下,计划重写一个udp可靠传输实时性实现代码来对比测试一下.

       我们来看以下TCP协议栈的具体实现, tcp是通过滑动窗口进行流量控制的, 而tcp层的数据是通过ip层进行分片传输,然后tcp层重新组合,而当其中任意一个ip包发生丢包的时候,让我们来看看会发生什么事情?通常是根据当前的延迟数字[根据之前ip包的传输延迟来综合计算的一个数字], 第一次丢包的计算方法是 2*延迟+延迟常量,并且不小于定义的最小延迟数字, 这个延迟数字我们在应用层是无法强制修改的,因为是协议栈的实现,到了延迟时间后重新发送一个ip包, 每当发生丢包,tcp会"友好"的认为,是网络发生了拥堵,带宽不够导致的,然后就会缩小窗口[缓冲],降低传输速率, 如果所有的实现,包括udp可靠传输,大家都采用这种"友好"的流水不争先思想,这没什么问题.通常可以把网络带宽浪费降低到最低 [因为tcp/ip协议栈实现时候的网络,1Mbps已经很奢侈了,因此优先考虑的就是避免带宽浪费], 有些udp可靠传输会说自己的实现可以抢带宽, 尼玛这不是抢带宽,这是耍流氓,大家开车都在按规则排队等待通行,你Y的来加塞,不是别人抢不过你,而是人家都是文明人.  tcp的算法里,它采用了慢启动,这在文件传输等非实时应用里,没什么问题,而且带宽的浪费,也就是错误发送重复包的概率,要低于1/1000,这没什么问题,但是在对实时要求性很高的网络游戏里,你可能期望如果50ms没有收到ack,就立即重新发送,带宽的浪费让位给实时

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值