通过Web传输单个大文件。应用程序层和传输层选项

时间:2013-10-29 11:30:22

标签: sockets networking tcp network-programming udp

虽然有类似的问题,但我无法找到一个能够总结数据传输协议的不同选项及其在速度,安全性和可靠性方面的优缺点。

作为开发人员,我创建了一个Web服务,它在服务器端生成一个文件,大小范围从500Mb到5Gb。我正在研究将文件传输到客户端的不同选项。

据我所知,传输层中最突出的两个解决方案是TCP和UDP,TCP提供更可靠的传输,并且成本准时,UDP牺牲了速度的可靠性。

在应用程序层中,我知道存在UDP的实现,提供可靠的传输,如RUDP和UDT。

提及可以使用的协议非常重要,无需客户端要求进行安装或特殊配置即可从服务器端获取数据。

我的问题是:

  1. 基于UDP的任何应用层协议是否在客户端开箱即用,如HTTP或FTP?

  2. 基于TCP的协议是否提供与UDP类似的速度?

  3. UDP协议是否提供了像Https一样传输数据的安全方式?

  4. 目标是

    1. 提供数据而不丢失任何包
    2. 以安全(加密)方式传送数据
    3. 对于实现,我目前正在使用JAX-WS和Glassfish作为应用程序服务器。

1 个答案:

答案 0 :(得分:1)

你的整个问题看起来就像你已经确定TCP“太慢”而UDP是你的救星。您的问题缺少重要细节:

  1. 文件收到后是否重要?
  2. 您使用哪些技术/框架进行网络服务?
  3. 您可以在客户端使用哪些技术/框架?
  4. 您目前是否真的遇到传输速度问题?这是谁的错,您的序列化,您的代码,您的网络或TCP?
  5. 对于1,如果是,则忘记UDP。 TCP相对较慢因为它保证了数据的有序传递(只要连接存在),这是你永远不会使用UDP的东西。见Which socket programming is best (TCP/UDP)?

    对于2和3,您可以通过应用不同的序列化程序,格式化程序或传输来解决您的一些问题,但这完全取决于您如何实施服务和客户端。

    4,我不相信TCP太慢了。一旦窗口足够大并且速度很快,它将在使用适当大小的数据时使用所有可用带宽。请参阅示例UDP vs TCP, how much faster is it?

    现在提出您的问题:

      

    基于UDP的任何应用层协议是否在客户端开箱即用,如HTTP或FTP?

    取决于你的盒子。

      

    基于TCP的协议是否提供与UDP类似的速度?

    是的,例如video streaming protocols,其中损失是可控的。

      

    UDP协议是否提供了一种安全的方式来传输数据,如Https?

    TCP和UDP是传输,它们不关心您传输的内容。安全性是最重要的,例如参见Datagram Transport Layer Security