最好访问哪个文件:Webdav或FTP?[关闭]


74

我必须开发一个Java应用程序,该应用程序必须读取网络上的一些文件,对其进行编辑并将其放回去。

问题是我总是通过FTP协议(通过网络)进行文件操作。但是,最近我听说了基于HTTP的Webdav。

有没有人注意到他们之间的差异(在速度方面)?哪一个是最好的 ?如果FTP可以做到这一点,为什么他们会“发明” Webdav?


1
这个问题如何解决?
Nakilon

4
我想知道是否可以将这个问题改写为值得重新讨论。乍一看,FTP和WebDav似乎具有完全相同的目的,知道何时在另一个之上使用将非常有帮助。
Ajedi32

12
相关:要求比较的问题是否具有建设性?因此,这个问题是无法解决的。另一方面,这个问题目前有将近3万的观点,并且有无数的赞成票,尽管有这样的紧迫理由:“对这个问题的回答将几乎完全基于观点,而不是事实,参考或特定的专业知识。 ”,这个问题的答案显然可以证明是相反的。
Ajedi32

Answers:


81

与FTP相比,WebDAV具有以下优点:

  1. 通过一个TCP连接工作,将其配置为绕过防火墙,NAT和代理更为容易。在FTP中,数据通道可能导致正确的NAT设置出现问题。

  2. 同样,由于一个TCP连接可以持久,因此在传输许多小文件时,WebDAV将比FTP快一点-无需为每个文件建立数据连接。

  3. GZIP压缩是HTTP的标准,但不是FTP的标准(是的,FTP中提供了MODE Z,但在任何标准中均未定义)。

  4. HTTP有很多未在FTP中定义的身份验证方法。例如。NTLM和Kerberos身份验证在HTTP和FTP中很常见,除非您同时编写FTP的客户端和服务器端,否则很难获得对它们的适当支持。

  5. WebDAV支持部分传输,在FTP中无法部分上传(即,您不能覆盖文件中间的块)。

还有另一件事要考虑(取决于您是否控制服务器)-SFTP(SSH文件传输协议,无论如何都与FTP不相关)。SFTP比WebDAV具有更多功能,SFTP是访问远程文件系统的协议,而WebDAV的设计考虑了抽象性(WebDAV用于“文档”,而SFTP用于文件和目录)。SFTP具有上面提到的WebDAV的所有优点,并且在管理员和开发人员中更受欢迎。


3
这些标头专门用于获取而不是上传资源。httpbis规范特别建议不要将范围与PUT请求结合使用,因为它可能导致不良结果。资料来源:我是一台主要的webdav服务器的作者,我每天都要翻阅rfc。
Evert 2013年

1
@Evert(1)“标题用于获取”-您是否有规范的参考资料?(2)有些草稿会阻止某些事情,但这并不意味着那是被禁止的。我们还开发和销售WebDAV组件:-P
Eugene Mayevski'Callback

1
@Evert只是服务器必须在收到请求时报告它不支持范围请求。服务器开发人员只需要多加关心即可;)。
Eugene Mayevski'Callback

2
很公平。请记住,添加该段是因为现实世界中的问题,而不是因为他们认为他们想限制更多。
Evert 2013年

1
@elmarco,您似乎将文件访问(问题所在)与远程文档管理混淆了。我们在这里谈论文件访问。至于“广泛的操作系统支持”,这是无意义的,因为从Unix到Windows到Java到Android和iOS的所有现代平台都存在SFTP的客户端和服务器。
Eugene Mayevski'Callback

30

回答问题- Why did they "invent" Webdav

WebDAV代表Web Distributed Authoring and Versioning

互联网并非旨在通过url(统一资源定位器)消耗资源。

但这就是事实。

因为HTTP具有用于获取资源(GET)和(HEAD)的强大语义。(POST)提供了语义操作数的覆盖范围,而(DELETE)被不信任所笼罩。HTTP缺乏其他一些特性,例如多资源操作。

简而言之,它是读协议,而不是写协议。

您将通过通过FTP和多种机制上载资源(URL)来获取资源(URL)。

WebDAV应该提供Internet缺少的故事:通过相同的机制HTTP支持创作资源。它扩展了其语义,引入了新的HTTP VERBS。

它还引入了不仅可以读取,写入,修改和删除资源(URI)的机制,还可以查询资源的元属性并对其进行修改。不是您以前做不到,而是通过后门机制完成的。

因此,您看到了它为Internet资源带来了一些您希望在桌面上的文件操作中使用的相同机制。

以下是一些类推:

MKCOL     ----- make collection ----- similar to make folder
PROPGET   ---- get properties (meta?) --- same as get info or extended attributes on mac
PROPPATCH --- modify properties
COPY      ---- cp
MOVE      ---- mv

希望我已经建立了WebDAV的一些崇高目标,作为对HTTP的扩展以支持Internet创作。不确定我们是否实现了目标。

你的问题

您的应用程序是一个客户端,必须与可用的机制相关联-另一方面是FTP或WebDAV。如果WebDAV很好用,则可以使用它。但是要花一些时间来适应语义。FTP具有有限的语义,并且在简单性方面表现出色。如果您已经在使用它,请不要更改它。

哪个更快

这类似于应答,哪个是更快的HTTP或FTP?

顺便说一句,如果是这样的问题,我们就不会通过HTTP下载/上传文件;)


2
概述网络的哲学以及WebDav的关系很有趣。谢谢pyfunc。
奥罗尼(O'Rooney)2012年

5

由于DAV通过HTTP运行,因此您可以获得FTP无法提供的HTTP的所有优点。

例如:

强大的身份验证加密代理支持缓存

确实可以通过SSH获得其中一些功能,但是HTTP基础结构的部署比SSH广泛得多。此外,SSH不具备HTTP所具有的广泛工具,开发库和应用程序。

DAV传输(HTTP传输)也比FTP更有效。您可以通过单个TCP连接流水线进行多个传输,而FTP要求为每个传输的文件建立一个新连接(加上控制连接)。

参考


4

取决于您要做什么。例如,FTP上用于获取文件列表的开销为7个字节(LIST -a),而Webdav的开销为370个字节(PROPFIND + 207 Multi Status)。

对于发送某些文件,FTP的开销比Webdav的开销低,依此类推。

如果您需要发送/获取大量小文件,则FTP会证明更快(使用多个连接进行正确的流水线传输和按文件的TCP连接)。如果您要发送/接收大文件,两种技术都是一样的,那么开销可以忽略不计。

请参阅:http : //www.philippheckel.com/files/syncany-heckel-thesis.pdf


精美的细节和数字
Jonathan

因此,您是说FTP在所有情况下都更好。
Milind R

我是说,如果您打算(仅)发送和接收文件,则FTP优于Webdav。但是,Webdav具有FTP中没有的许多其他功能(例如,锁定,共享)。如果处理大文件,则与其他功能相比,webdav的开销可以忽略不计。
xryl669

1
WebDAV可以使用更少的字节,但是ftp需要更多的连接。如果等待时间很短,并且数据包很小,则ftp可能会更快,但是在大多数现代互联网带宽上相当可观,而等待时间却不一定很大-在这里,(流水线化的)WebDAV可能会胜过FTP。
Eamon Nerbonne 2015年

1
通过加密,在防火墙和NAT之后,由于使FTP工作所需的内容重写和嗅探,WebDAV起作用的机会比FTP(S)高得多……
Gert van den Berg

2

文件修改时间:

ftp和webdav处理文件修改时间的方式似乎有所不同。

似乎ftp中有一个“命令”来保留该时间(几个ftp客户端和服务器声称可以做到这一点),而webdav(如果我没记错的话)可以获取文件修改日期,但不能在上传时进行设置。

owncloud客户端和某些专有的webdav客户端似乎有一种解决方法,但这仅在其软件中有效

根据使用情况,这是支持ftp的强烈建议。我不希望文件的修改日期==上传日期。稍后下载后​​,我将无法按日期告诉我该文件的版本。


1

与FTP相比,Webdav具有防火墙易于通过的优点(无需单独的控制/数据套接字)。速度应与两种协议都通过原始tcp套接字传输文件的速度大致相同。


你能再解释一下吗?
大卫(David
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.