关于UDP实现可靠传输时有序包机制问题!

wyplyxj 2014-03-29 08:38:52
最近在做用UDP实现可靠传输的东西。


遇到个问题,用UDP协议,在网络情况不好时会出现包的乱序。 那么我查资料有些资料上面说的是,数据报超过64KB后,进行分发时才会出现乱序。有些资料上就直接说的乱序。

想请问下,到底是什么情况下出现乱序。。

还有,有没有好一点的,关于UDP实现可靠传输的资料。


谢谢各位网友了。
...全文
1518 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
UDX协议 2014-04-14
  • 打赏
  • 举报
回复
楼上可以到这里http://www.goodudx.com/web/download/34,下载WIN的可执行程序,你对远程主机上传或下载文件,可以在任何环境,与TCP对比。绝大多数环境UDX会胜出。
Squall_zy 2014-04-14
  • 打赏
  • 举报
回复
唉,看这些研发人员总把创新挂在嘴边,实在不能打击他们的积极性。 什么事都不绝对,我也承认,在和特殊的应用场合,某些改良协议是有优势的。但实在很难成为主流。 “ tcp over udp”,或者说“可靠传输 over udp”。我真不相信性能可以高到什么程度。 要知道协议栈里每高一层,就意味着一次封包。 Tcp 和 “tcp over udp” 本身都不在同一层,比都不好比。 其它的不讲,至少又多了一次内存拷贝吧?我想应该胜多败少吧? 我想类似udt的东西,必然有他存在的理由,一定在应付某种特殊应用的时候有优势, 但是还是那句结论:它不会成为主流。 如果你一定要说tcp性能表现不佳,那就去研究一下qos(qWAVE),看看能否有帮助。
  • 打赏
  • 举报
回复
tcp over udp有自身的优势,所以很有研究的必要。优势包括不易被旁路阻断,速度可以优化(比如重传机制),p2p通信等
UDX协议 2014-04-01
  • 打赏
  • 举报
回复
引用 18 楼 wyplyxj 的回复:
[quote=引用 12 楼 worldy 的回复:] UPD不保证包顺序,也不保证包能被接收,LZ应该在自己的协议中管理组装,并且建立失败重传机制
能否给个联系方式,交流交流想法? 因为第一次自己设计这样的协议![/quote] qq. 24508609
wyplyxj 2014-04-01
  • 打赏
  • 举报
回复
引用 12 楼 worldy 的回复:
UPD不保证包顺序,也不保证包能被接收,LZ应该在自己的协议中管理组装,并且建立失败重传机制
能否给个联系方式,交流交流想法? 因为第一次自己设计这样的协议!
worldy 2014-03-31
  • 打赏
  • 举报
回复
UPD不保证包顺序,也不保证包能被接收,LZ应该在自己的协议中管理组装,并且建立失败重传机制
UDX协议 2014-03-31
  • 打赏
  • 举报
回复
google现在开源的有一个项目是quickc,就是利用UDP传输HTTP协议,在WEB上应用,能大大提高响应速度。 google能做,国人为什么不能做?而要,想当然的去“老外自然去做”。 国人难道就比老外“笨”么?
UDX协议 2014-03-31
  • 打赏
  • 举报
回复
引用 9 楼 tiger9991 的回复:
换句话说如果这块真有效率提升的空间的话,老外早就设计相关的协议了。 要知道底层通信协议的应用面是无比的广泛的。
有点想当然啊,你。所以,太多你这样的思维,容易让你不能创新的。 如果你认为,没有必要,你可以收索一下UDX协议,UDT协议,这些在很多场合都比TCP跑得快得多。 有时相差成100倍,都是很正常的现象。如果你意识到这点,自然就会觉得,非常有必要做这样的“傻”事。
傻X 2014-03-31
  • 打赏
  • 举报
回复
换句话说如果这块真有效率提升的空间的话,老外早就设计相关的协议了。 要知道底层通信协议的应用面是无比的广泛的。
傻X 2014-03-31
  • 打赏
  • 举报
回复
引用 7 楼 wwwllg 的回复:
[quote=引用 1 楼 tiger9991 的回复:] 自己玩的安全性封装还不如TCP呢。 这类傻事之前也整过。
如果你这样认为,那我不是天天在做傻事?[/quote] 很有可能,关键就是效率对比,还有看你在5层中哪一层这么做。
UDX协议 2014-03-31
  • 打赏
  • 举报
回复
引用 1 楼 tiger9991 的回复:
自己玩的安全性封装还不如TCP呢。 这类傻事之前也整过。
如果你这样认为,那我不是天天在做傻事?
UDX协议 2014-03-31
  • 打赏
  • 举报
回复
我的主要观点是,在很多场合,研究这类协议是完全有必要,而不是做傻事。
bluesen 2014-03-31
  • 打赏
  • 举报
回复
我认为可以参考一下SIP之类的设计。
UDX协议 2014-03-31
  • 打赏
  • 举报
回复
引用 14 楼 tiger9991 的回复:
[quote=引用 10 楼 wwwllg 的回复:] [quote=引用 9 楼 tiger9991 的回复:] 换句话说如果这块真有效率提升的空间的话,老外早就设计相关的协议了。 要知道底层通信协议的应用面是无比的广泛的。
有点想当然啊,你。所以,太多你这样的思维,容易让你不能创新的。 如果你认为,没有必要,你可以收索一下UDX协议,UDT协议,这些在很多场合都比TCP跑得快得多。 有时相差成100倍,都是很正常的现象。如果你意识到这点,自然就会觉得,非常有必要做这样的“傻”事。[/quote] 当然是之前就看过了,我也不想舌仗,没意义。主要就是因为这些协议使用后提升效率的条件较多。 你提到创新,创新本身就分有意义和无意义的创新。 在中国经济效益决定是否有意义。 [/quote] 我只想说,你了解的还比较少在这方面。 在音视频方面,一直利用的是UDP,另外,你故意去忽略ibm收够aspera,udt,quickc,这类事实的存在。 大量提高TCP性能的研究中外论文及对现有tcp改进的事实。 另外,TCP其实默认允许存在这方面的缺陷,原因是保持一定的友好性及其历史原因,因为颠覆原有协议,造成的影响是大面积及不可预知的。
傻X 2014-03-31
  • 打赏
  • 举报
回复
引用 10 楼 wwwllg 的回复:
[quote=引用 9 楼 tiger9991 的回复:] 换句话说如果这块真有效率提升的空间的话,老外早就设计相关的协议了。 要知道底层通信协议的应用面是无比的广泛的。
有点想当然啊,你。所以,太多你这样的思维,容易让你不能创新的。 如果你认为,没有必要,你可以收索一下UDX协议,UDT协议,这些在很多场合都比TCP跑得快得多。 有时相差成100倍,都是很正常的现象。如果你意识到这点,自然就会觉得,非常有必要做这样的“傻”事。[/quote] 当然是之前就看过了,我也不想舌仗,没意义。主要就是因为这些协议使用后提升效率的条件较多。 你提到创新,创新本身就分有意义和无意义的创新。 在中国经济效益决定是否有意义。
xiaohuh421 2014-03-31
  • 打赏
  • 举报
回复
因为UDP包可能会通过不同路由到达你的机器, 而不的路由的响应速度肯定达到时间不同了.
  • 打赏
  • 举报
回复
乱序并非是说的一个包中的乱序, 一个包内部的数据只要能接收到,就不会乱序。 乱序说的是不同包之间的序,先发的不一定先到,后发的不一定后到,还有可能丢包(发送者无法得到反馈)
  • 打赏
  • 举报
回复
从理论上说,包含报头在内的数据报的最大长度为65535字节。 实际编程中,winsock中的sentto无法发送大于65500左右的限制,否则会返回10040错误
wyplyxj 2014-03-29
  • 打赏
  • 举报
回复
关键是 项目要求不准用TCP啊。。我也想用TCP。。 蛋都碎了一地。。唉。。
傻X 2014-03-29
  • 打赏
  • 举报
回复
自己玩的安全性封装还不如TCP呢。 这类傻事之前也整过。
加载更多回复(2)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧