Welcher Dateizugriff ist der beste: Webdav oder FTP? [geschlossen]


72

Ich muss eine Java-Anwendung entwickeln, die einige Dateien im Netzwerk lesen, bearbeiten und zurücklegen muss.

Das Problem ist, dass ich immer (über das Netzwerk) Dateivorgänge über das FTP-Protokoll ausgeführt habe. Aber ich habe kürzlich von Webdav gehört, das HTTP-basiert ist.

Hat jemand einen Unterschied (in Bezug auf die Geschwindigkeit) zwischen ihnen bemerkt? Welches ist das beste ? Warum haben sie Webdav "erfunden", wenn das FTP dafür gut ist?


1
Wie ist diese Frage nicht geschlossen?
Nakilon

4
Ich frage mich, ob diese Frage umformuliert werden könnte, um eine Wiedereröffnung zu verdienen. Auf den ersten Blick scheinen FTP und WebDav genau den gleichen Zweck zu erfüllen, und es wäre sehr hilfreich zu wissen, wann sie übereinander verwendet werden müssen.
Ajedi32

11
Verwandte: Können Fragen, die einen Vergleich erfordern, konstruktiv sein? Demnach ist diese Frage nicht zu lösen. Auf der anderen Seite hat diese Frage derzeit fast 30.000 Ansichten und zahlreiche positive Stimmen, und trotz der Behauptung aus dem nahen Grund, dass "Antworten auf diese Frage eher fast ausschließlich auf Meinungen als auf Fakten, Referenzen oder spezifischem Fachwissen beruhen ", die Antworten auf diese Frage zeigen deutlich etwas anderes.
Ajedi32

Antworten:


79

WebDAV bietet gegenüber FTP folgende Vorteile:

  1. Durch die Arbeit über eine TCP-Verbindung ist es einfacher, diese so zu konfigurieren, dass Firewalls, NATs und Proxys umgangen werden. In FTP kann der Datenkanal Probleme mit der richtigen NAT-Einrichtung verursachen.

  2. Aufgrund einer TCP-Verbindung, die dauerhaft sein kann, wäre WebDAV beim Übertragen vieler kleiner Dateien etwas schneller als FTP - es ist nicht erforderlich, für jede Datei eine Datenverbindung herzustellen.

  3. Die GZIP-Komprimierung ist ein Standard für HTTP, jedoch nicht für FTP (ja, MODE Z wird in FTP angeboten, ist jedoch in keinem Standard definiert).

  4. HTTP bietet eine große Auswahl an Authentifizierungsmethoden, die in FTP nicht definiert sind. Z.B. Die NTLM- und Kerberos-Authentifizierung ist in HTTP üblich, und in FTP ist es schwierig, eine angemessene Unterstützung für sie zu erhalten, es sei denn, Sie schreiben sowohl die Client- als auch die Serverseite von FTP.

  5. WebDAV unterstützt Teilübertragungen und in FTP sind Teil-Uploads nicht möglich (dh Sie können einen Block in der Mitte der Datei nicht überschreiben).

Es gibt noch eine weitere Sache zu beachten (abhängig davon, ob Sie den Server steuern) - SFTP (SSH File Transfer Protocol, in keiner Weise mit FTP verbunden). SFTP ist funktionsreicher als WebDAV und SFTP ist ein Protokoll für den Zugriff auf entfernte Dateisysteme, während WebDAV mit Blick auf die Abstraktion entwickelt wurde (WebDAV war für "Dokumente", SFTP für Dateien und Verzeichnisse). SFTP bietet alle oben genannten Vorteile für WebDAV und ist sowohl bei Administratoren als auch bei Entwicklern beliebter.


3
Diese Header dienen speziell zum Abrufen und nicht zum Hochladen von Ressourcen. In den httpbis-Spezifikationen wird ausdrücklich davon abgeraten, Bereiche in Kombination mit PUT-Anforderungen zu verwenden, da dies zu unerwünschten Ergebnissen führen kann. Quelle: Ich bin der Autor eines großen Webdav-Servers und pflüge täglich durch RFCs.
Evert

1
@Evert (1) "Header sind zum Abrufen" - haben Sie eine normative Referenz? (2) Die Tatsache, dass ein Entwurf etwas entmutigt, bedeutet nicht, dass dies verboten ist. Wir entwickeln und verkaufen auch WebDAV-Komponenten :-P
Eugene Mayevski 'Callback

1
@Evert Es ist nur der Server, der melden muss, dass er keine Bereichsanforderungen unterstützt, wenn er eine empfängt. Nichts weiter als ein bisschen Sorgfalt vom Serverentwickler;).
Eugene Mayevski 'Rückruf

2
Meinetwegen. Denken Sie daran, dass dieser Absatz aufgrund von Problemen in der realen Welt hinzugefügt wurde, nicht weil sie das Gefühl hatten, restriktiver sein zu wollen.
Evert

1
@elmarco Sie scheinen den Dateizugriff (um den es bei der Frage geht) mit der Remote-Dokumentenverwaltung zu verwechseln. Wir sprechen hier über den Dateizugriff . Was die "Wide OS-Unterstützung" betrifft, ist dies Unsinn, da sowohl Clients als auch Server für SFTP für alle modernen Plattformen von Unix über Windows über Java bis Android und iOS existieren (ja, dort gibt es Server).
Eugene Mayevski 'Rückruf

29

Antwort auf Frage - Why did they "invent" Webdav

WebDAV steht für Web Distributed Authoring and Versioning.

Das Internet war einfach nicht für den Verbrauch von Ressourcen über URLs gedacht ( Uniform Resource Locator ).

Aber so wurde es.

Weil HTTP eine starke Semantik zum Abrufen von Ressourcen (GET) und (HEAD) hatte. (POST) deckte die Anzahl der semantischen Operationen ab, während (DELETE) in Misstrauen gehüllt war. HTTP fehlten einige andere Eigenschaften wie Multi-Resource-Operationen.

Kurz gesagt, es war ein Leseprotokoll und kein Schreibprotokoll.

Sie würden Ihre Ressourcen (URLs) zum Abrufen verfügbar machen, indem Sie sie über FTP und eine Vielzahl von Mechanismen hochladen.

WebDAV sollte die fehlende Geschichte des Internets liefern: Unterstützung für das Authoring von Ressourcen über denselben HTTP-Mechanismus. Es erweiterte seine Semantik und führte neues HTTP VERBS ein.

Außerdem wurde der Mechanismus eingeführt, mit dem eine Ressource (uris) nicht nur gelesen, geschrieben, geändert und gelöscht werden kann, sondern auch die Meta-Eigenschaften der Ressource abgefragt und geändert werden können. Es ist nicht so, dass man es vorher nicht machen konnte, aber es wurde durch einen Hintertürmechanismus gemacht.

Sie sehen, es hat einige der gleichen Mechanismen, die Sie bei Dateivorgängen auf dem Desktop erwarten, auf Internetressourcen übertragen.

Es folgen einige Analogien:

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

Ich hoffe, ich habe einige der noblen Ziele von WebDAV als Erweiterung von HTTP zur Unterstützung des Internet-Authoring festgelegt. Ich bin mir nicht sicher, ob wir es geschafft haben.

Für deine Frage

Ihre Anwendung ist ein Client und muss mit dem verfügbaren Mechanismus auskommen - FTP oder WebDAV auf der anderen Seite. Wenn WebDAV großartig verfügbar ist, können Sie es verwenden. Aber es wird einige Zeit dauern, bis man sich an die Semantik gewöhnt hat. FTP hat eine begrenzte Semantik und zeichnet sich durch Einfachheit aus. Wenn Sie es bereits verwenden, ändern Sie es nicht.

Welche ist schneller

Das ist vergleichbar mit Antworten, was ist schnelleres HTTP oder FTP?

Wenn es ein solches Problem wäre, hätten wir keine Dateien über HTTP heruntergeladen / hochgeladen;)


2
Interessant, um die Philosophie des Web und die Beziehung zwischen WebDav zu skizzieren. Danke pyfunc.
O'Rooney

4

Kommt darauf an, was du machen willst. Beispielsweise beträgt der Overhead auf FTP zum Abrufen einer Liste von Dateien 7 Byte (LIST -a), während er mit Webdav 370 Byte beträgt (PROPFIND + 207 Multi Status).

Beim Senden einer Datei ist der Overhead bei FTP geringer als bei Webdav usw.

Wenn Sie viele kleine Dateien senden / abrufen müssen, ist FTP schneller (Verwendung mehrerer Verbindungen für korrektes Pipelining und TCP-Verbindung pro Datei). Wenn Sie große Dateien senden / empfangen, ist dies bei beiden Technologien gleich. Der Overhead ist vernachlässigbar.

Weitere Informationen finden Sie unter: http://www.philippheckel.com/files/syncany-heckel-thesis.pdf


Nettes Detail und Zahlen
Jonathan

Sie sagen also, FTP ist in allen Fällen besser.
Milind R

Ich sage, wenn Sie (nur) Dateien senden und empfangen möchten, ist FTP besser als Webdav. Webdav verfügt jedoch über zahlreiche andere Funktionen (z. B. Sperren, Freigeben), die in FTP nicht enthalten sind. Wenn Sie mit großen Dateien arbeiten, ist der Overhead von webdav im Vergleich zu den zusätzlichen Funktionen vernachlässigbar.
Xryl669

1
WebDAV verwendet möglicherweise weniger Bytes, aber FTP benötigt mehr Verbindungen. Wenn die Latenz gering und die Pakete klein sind, ist FTP möglicherweise schneller, aber über den größten Teil der modernen Internetbandbreite ist sie beträchtlich, während die Latenz nicht unbedingt hoch ist - und hier ist es wahrscheinlich, dass WebDAV (Pipeline) FTP übertrifft.
Eamon Nerbonne

1
Mit Verschlüsselung, hinter Firewalls und NAT, ist die Wahrscheinlichkeit, dass WebDAV funktioniert, viel höher als bei FTP (S), da das Umschreiben und Schnüffeln von Inhalten erforderlich ist, damit FTP funktioniert ...
Gert van den Berg

4

Da DAV über HTTP funktioniert , erhalten Sie alle Vorteile von HTTP, die FTP nicht bieten kann.

Zum Beispiel:

Starke Authentifizierung , Verschlüsselung , Proxy-Unterstützung und Caching .

Es ist wahr, dass Sie einen Teil davon über SSH erhalten können , aber die HTTP-Infrastruktur ist viel weiter verbreitet als SSH. Darüber hinaus verfügt SSH nicht über die breite Palette an Tools, Entwicklungsbibliotheken und Anwendungen, die HTTP bietet.

DAV-Übertragungen (also HTTP-Übertragungen) sind auch effizienter als FTP. Sie können mehrere Übertragungen über eine einzige TCP-Verbindung weiterleiten, während für FTP für jede übertragene Datei (plus die Steuerverbindung) eine neue Verbindung erforderlich ist.

Referenz


2

Änderungszeit der Datei:

Es scheint einen Unterschied zu geben, wie ftp und webdav mit der Änderungszeit von Dateien umgehen.

Es scheint, dass es in ftp einen 'Befehl' gibt, um diese Zeit beizubehalten (mehrere ftp-Clients und -Server behaupten, dies zu tun), während webdav, wenn ich mich richtig erinnere, das Änderungsdatum der Datei abrufen kann, es aber beim Hochladen nicht festlegen kann.

owncloud-Client und einige proprietäre Webdav-Clients scheinen eine Problemumgehung zu haben, aber das funktioniert nur in ihrer Software

Je nach Verwendung ist dies ein starkes Argument für FTP. Ich möchte nicht, dass meine Dateien das Änderungsdatum == Upload-Datum haben. Nach einem späteren Download kann ich nicht anhand des Datums feststellen, welche Version der Datei ich habe.


1

Webdav bietet gegenüber FTP Vorteile hinsichtlich der einfachen Weitergabe von Firewalls (keine separaten Steuerungs- / Daten-Sockets). Die Geschwindigkeit sollte ungefähr gleich sein, da beide Protokolle die Datei über einen rohen TCP-Socket übertragen.


Können Sie bitte etwas mehr erklären?
David
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.