0

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

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

据我所知,传输层中最突出的两个解决方案是 TCP 和 UDP,TCP 提供更可靠的传输,但需要时间成本,而 UDP 会牺牲可靠性来换取速度。

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

重要的是要提到可以在不要求客户端进行安装或特殊配置的情况下使用的协议,以便从服务器端获取数据。

我的问题是:

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

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

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

目标是

  1. 交付数据,不丢失任何数据包
  2. 以安全(加密)的方式交付数据

对于实现,我目前使用 JAX-WS 和 Glassfish 作为应用服务器。

4

1 回答 1

1

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

  1. 在发送文件时接收文件是否重要?
  2. 您为 Web 服务使用了哪些技术/框架?
  3. 您可以在客户端使用哪些技术/框架?
  4. 您目前实际上在传输速度方面有任何问题吗?这是谁的错,你的序列化,你的代码,你的网络还是 TCP?

至于1,如果是,那么忘记UDP。TCP 相对较慢,因为它保证按顺序传输数据(只要连接存在),这是使用 UDP 永远无法实现的。请参阅哪种套接字编程最好(TCP/UDP)?

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

对于 4,我不相信 TCP 太慢。一旦窗口足够大并且达到速度,当输入适当大小的数据时,它将使用所有可用带宽。参见例如UDP vs TCP,它快多少?.

现在为您的问题:

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

取决于你的盒子。

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

是的,例如视频流协议,损失是可控的。

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

TCP 和 UDP 是传输,它们不关心你传输什么。安全性是在此之上分层的,例如参见Datagram Transport Layer Security

于 2013-10-29T11:56:02.153 回答