首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有基于UDP的协议可以在没有数据报可靠性的情况下提供更强大的大型数据元素发送?

是否有基于UDP的协议可以在没有数据报可靠性的情况下提供更强大的大型数据元素发送?
EN

Stack Overflow用户
提问于 2011-10-21 21:53:07
回答 1查看 1.2K关注 0票数 2

在一端,您有TCP,它保证数据包到达并且它们按顺序到达。它也是为商品互联网设计的,它的拥塞控制算法在流量中“表现良好”。在频谱的另一端,你有UDP,它不保证数据包的到达时间和顺序,它允许你向接收器发送大量数据。在中间的某个地方,您拥有可靠的基于UDP的程序,例如UDT,它们提供定制的拥塞控制算法和可靠性,但具有更高的速度和灵活性。

然而,我正在寻找的是通过UDP发送大块数据的能力(大于UDP的64k数据报大小),而不考虑每个单独数据报的可靠性。其思想是将大数据分解成指定大小的数据报(<= 64,000字节),可能将一些头数据粘贴在前面并通过网络发送。在接收端,这些数据报被读入并存储。如果数据报未到达,则与该传输相关联的所有数据报都将被客户端抛出。

大多数“可靠的UDP”实现都试图维护每个数据报的可靠性,但我只对整个数据报感兴趣,如果我不能得到整个数据报,那也没关系--把它全部扔掉,等待下一个。我必须深入挖掘,但使用UDT中的自定义拥塞控制算法可能是可能的。但是,有没有使用这种方法的协议?

EN

回答 1

Stack Overflow用户

发布于 2011-10-21 23:05:43

你可以尝试ENet,虽然它不是专门针对你想要做的事情,但它确实有“碎片数据块”的概念,即你发送的数据比它的MTU大,它以MTU的数据报序列的形式发送,报头详细信息将序列中的一部分与其余部分联系起来。我使用的版本只支持‘可靠’片段(即ENet可靠性层将启动以重新发送丢失的片段),但我似乎记得在邮件列表中看到过关于不可靠片段的讨论,这很可能就是你想要的;即,如果所有的片段都到达了,就发送整个有效负载,如果没有,就丢弃这些片段。

请参阅http://enet.bespin.org/

或者,看看这个问题的答案:What do you use when you need reliable UDP?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7850383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档