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

这篇文章是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、付费专栏及课程。

余额充值