首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UDP文件传输-是的,UDP

UDP文件传输-是的,UDP
EN

Stack Overflow用户
提问于 2011-09-29 21:27:38
回答 5查看 6.6K关注 0票数 6

我需要创建一个UDP文件传输系统。我知道TCP是有保证的,而且更可靠,但是我需要在不同的位置之间传输巨大的文件,我认为这个项目的速度优势超过了使用TCP的好处。我刚刚开始这个项目,但希望得到一些指导,如果有人曾经这样做过。我将写双方(客户端和服务器),所以我不需要担心其他产品的功能限制。

简而言之,我需要:

  • 获取大文件,并将它们分块发送。
  • 能够从客户端控制带宽。
  • 为错误、重传和在服务器上按块组装文件创建某种类型的数据包编号系统(是的,我们从TCP免费获得的所有内容:-)
  • 可配置的数据报大小-我认为一些防火墙抱怨如果他们变得太大?
  • 还有什么我可能会错过的

我正在使用UdpClient开始这个旅程,我想用C#编写这个应用程序。除了使用TCP之外,还有其他的智慧吗?

已经取得了巨大的成功。我们过去使用RocketStream.com,但他们将产品卖给另一家公司,仅供内部使用。我们通常比FTP或原始TCP字节传输速度快30倍。

EN

回答 5

Stack Overflow用户

发布于 2011-09-29 21:47:32

关于

可配置的数据报大小-我认为一些防火墙抱怨如果他们变得太大?

一个数据报可能高达65,536字节。对所有ip报头信息进行编码,您将得到65,507字节的有效负载。但是,您必须考虑如何沿着网络路径配置所有设备。通常大多数设备设置的MTU大小为1500字节,所以这通常是您“在互联网上”的限制。如果您在您的位置之间设置了一个专用网络,您可以增加MTU和all设备。

进一步的关于

为错误、重传和在服务器上按块组装文件创建某种类型的数据包编号系统(是的,我们从TCP免费获得的所有内容:-)

我认为在您的情况下最好是实现应用程序级协议。喜欢

32字节序列号为8字节的crc32校验和(在字节大小上更正我)任何剩余的字节都可以用于数据

希望这能给你一些方向

*编辑::

根据经验,我可以告诉您,在专用和UDP调谐网络上,UDP比TCP快10-15%。

票数 2
EN

Stack Overflow用户

发布于 2011-09-29 21:31:44

我不相信速度的提高会是巨大的,但这是一个有趣的实验。这样的协议看起来和行为更像传统的基于调制解调器的协议之一,ZModem可能是从(实现ack窗口、自适应块大小等)中获得灵感的更好的例子之一。

已经有一些人尝试过这样做,请查看本站

票数 1
EN

Stack Overflow用户

发布于 2011-09-29 22:05:46

如果你成功了那就太酷了。

没有WireShark就不要进去。你会需要的。

对于算法,我猜你对如何开始已经有了很好的想法。也许是一些建议:

  1. 从两个端点共同使用的MTU开始,只使用这个大小的数据包,这样您就可以控制数据包碎片(当您从TCP下来时,我希望这是为了更好地控制低级别的东西)。
  2. 你可能会想看看眩晕或者把洞打到NAT身上。
  3. 查看ZModem --这也具有怀旧价值:)
  4. 因为您想从链接中挤出最大的时间,所以尽量在“控制数据包”中放置,这样就不会浪费一个字节。
  5. 我不会在数据包级别上使用任何CRC,因为我猜下面的网络正在处理这些东西。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7603591

复制
相关文章

相似问题

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