2

在 FTP、HTTP、SSH 等中,如果提供一致的宽带互联网连接,通过网络传输文件的最快方式是什么?

4

3 回答 3

1

在这3个中,它的HTTP。“传输文件”的有效行为具有相同的速度,但是:

FTP 需要太多的“对话”来稳定会话,并创建并行连接来传输数据,所有这些“对话”需要更多时间来开始传输文件。出于同样的原因,您可能会因为 FTP 打开随机端口而遇到防火墙和路由器问题,特别是如果 FTP 客户端不支持“被动模式”。

HTTP 更客观,你连接,说出你想要什么,然后得到它作为答案。没有废话废话。

SSH 不是传输协议。SSH 代表“安全外壳”。如果您的意思是 SSL,它也不是传输协议,它是一个安全层,通常用于封装 HTTP 会话。

但也许这不是哪个更快的问题,真正的问题是:你想做什么?根据您的问题,这些都不是一个选项。

于 2009-08-29T01:08:45.940 回答
1

如果可以,请使用 Socket.SendFile()。这是从 A 点到 B 点获取文件的最简单方法。在不了解您要完成的具体内容的情况下,很难给出更好的建议。否则我可能会使用 FTP,并且 System.Net 有一个相当不错的 FtpClient 对象,您可以使用它,并且示例很好地记录了它。HTTP 和 FTP 都使用 TCP,因此您可能不会看到它们之间的显着速度差异,并且 HTTP 通常会有带有其他潜在行为的标头(尝试使用 Expect-100 Continue 上传文件,并且没有凭据到需要 AUTH 的服务器看看你的连接会发生什么)。使用 Socket.SendFile() 因为套接字根据定义与协议无关,您可以使用相同的代码通过 UDP 或 TCP 发送文件,

于 2009-08-29T01:32:34.530 回答
0

您是否可以控制两个端点和任何干预防火墙?与其他选项相比,FTP 对防火墙不太友好。基于 SSH 的工具(sftp、scp)非常好,但已知一些 ISP 会限制或以其他方式干扰加密流量(Comcast,我在看着你!)你考虑过 rsync 吗?在我的工作中,这就是我们用来通过长途互联网连接传输大量数据集的方法。

于 2009-08-29T00:58:11.847 回答