Vergleich von HTTP und FTP zum Übertragen von Dateien
125
Welche Vorteile (oder Einschränkungen) hat die Übertragung von Dateien über das Internet?
(Mir sind sichere Formen beider Protokolle bekannt. Ich würde gerne Vergleiche durch persönliche Erfahrungen in Bezug auf Leistung, Zuverlässigkeit, Dateigrößenbeschränkungen usw. hören.)
Hier ist ein Leistungsvergleich der beiden. HTTP reagiert schneller auf Anfragen und Antworten kleiner Dateien, aber FTP ist möglicherweise besser für große Dateien geeignet, wenn es richtig eingestellt ist. Früher galt FTP allgemein als schneller. Für FTP muss neben dem TCP-Status ein Steuerkanal und -status beibehalten werden, für HTTP jedoch nicht. Es gibt 6 Paketübertragungen, bevor die Datenübertragung in FTP beginnt, aber nur 4 in HTTP.
Ich denke, eine richtig abgestimmte TCP-Schicht hätte mehr Einfluss auf die Geschwindigkeit als der Unterschied zwischen Protokollen der Anwendungsschicht. Der Sun Blueprint Grundlegendes zur Optimierung von TCP enthält Details.
Hier ist ein weiterer guter Vergleich der einzelnen Merkmale jedes Protokolls.
+1 gute Antwort. Ich denke, der Tag von FTP war und ist vorbei, er hat wenig Relevanz mehr. Es ist auch ein absolutes Schwein zu implementieren.
Skaffman
7
Welche Größe ist mit "kleinen" oder "großen" Dateien gemeint?
Urbycoz
Der Link zum Leistungsvergleich verweist auf eine Analyse der erwarteten Gewinne aus der Implementierung von P-HTTP, T / TCP und S-TCB. Nein, wo wird FTP erwähnt? Außerdem ist die richtig eingestellte Verbindung unterbrochen.
Trisped
@Trisped hast du den Link zum Leistungsvergleich gelesen? Es gibt 12 Verweise auf FTP und im allerersten Abschnitt heißt es "Das HTTP-Protokoll wurde ursprünglich entwickelt, um die Ineffizienzen des FTP zu verringern ..." und wird dann erläutert. Ich habe auch den Link "Grundlegendes zum Optimieren von TCP" aktualisiert. Es sieht so aus, als hätte Oracle alle alten Sun Blueprints-Whitepapers weggeworfen.
John Ellinwood
2
16. August 1996 ... wirklich? Selbst in Ihrer Antwort von 2009 konnten Sie nicht erwarten, dass dies für den aktuellen Stand der Dinge repräsentativ ist. -1
user541686
29
Ich habe gerade eine Dateiübertragung über FTP und HTTP verglichen:
über zwei sehr gute Serververbindungen
Verwenden derselben ZIP-Datei mit 1 GB
unter den gleichen Netzwerkbedingungen (nacheinander getestet)
Das Ergebnis:
mit FTP: 6 Minuten
mit HTTP: 4 Minuten
Verwenden einer gleichzeitigen http-Downloader-Software ( fdm): 1 Minute
Also im Grunde genommen in einer "realen" Situation:
1) HTTP ist beim Herunterladen einer großen Datei schneller als FTP.
2) HTTP kann parallelen Chunk-Download verwenden, wodurch es abhängig von den Netzwerkbedingungen 6x schneller als FTP ist.
@anecdotal gab er Zahlen (Fakten aus der Forschung) an, die weniger anekdotisch sind als jede andere Antwort bisher.
user1133275
Sind die Zeiten zumindest annähernd reproduzierbar?
Masterxilo
Vor ein paar Tagen habe ich versucht, 90MB-Dateien mit http herunterzuladen, Netzwerk bei 2MB fehlgeschlagen. Aber mit FTP (gleicher Server, gleiche Datei, gleiches Netzwerk über mobilen Hotspot) ist der Download erfolgreich. Ich weiß nicht warum.
Rahmat Ihsan
1
FTP ist für einzelne Dateien aufgrund des geringeren Overheads schneller. Wenn Ihre Tests eine andere Antwort erhalten haben, versuchen Sie es mit einem anderen Client (oder weniger wahrscheinlich mit einem anderen Server). http kann nicht schneller als die maximale Bitrate heruntergeladen werden, und jede parallele Option, mit der versucht wird, diese zu überschreiten, führt zu einem Protokoll-Overhead. Vs. Multi-Dateien können ohne Protokollaufwand mit Leitungsgeschwindigkeit über FTP hintereinander übertragen werden. Die parallele Option von FTP verwendet mehrere TCP-Verbindungen, die normalerweise die Einzelpunktverbindungen übertreffen (z. B. SMB3.1 vSMB2.1, 3.x kann Multi-Connect verwenden).
Astara
27
Viele Firewalls trennen ausgehende Verbindungen, die nicht zu den Ports 80 oder 443 (http & https) führen. Einige trennen sogar Verbindungen zu Ports, die nicht HTTP (S) sind. FTP kann erlaubt sein oder nicht, ganz zu schweigen von den aktiven / PASV-Modi.
Außerdem ermöglicht HTTP / 1.1 viel bessere Teilanforderungen ("nur vom Byte 123456 bis zum Ende der Datei senden"), bedingte Anforderungen und Zwischenspeicherung ("nur senden, wenn sich der Inhalt geändert hat / wenn sich das Datum der letzten Änderung geändert hat") und Inhaltskomprimierung (gzip).
HTTP ist über einen Proxy viel einfacher zu verwenden.
Nach meinen anekdotischen Beweisen ist es mit HTTP einfacher, mit unterbrochenen / langsamen / flockigen Verbindungen zu arbeiten. Beispielsweise ist es nicht erforderlich, eine Anmeldesitzung (erneut) einzurichten, bevor die Übertragung (erneut) gestartet wird.
OTOH, HTTP ist zustandslos, daher müssten Sie sich authentifizieren und eine Spur erstellen, wer wann was getan hat.
Der einzige Geschwindigkeitsunterschied, den ich bemerkt habe, ist das Übertragen vieler kleiner Dateien: HTTP mit Pipelining ist schneller (reduziert Roundtrips, insbesondere in Netzwerken mit hoher Latenz).
Beachten Sie, dass HTTP / 2 noch mehr Optimierungen bietet, während das FTP-Protokoll seit Jahrzehnten keine Aktualisierungen mehr aufweist (und selbst Erweiterungen von FTP von den Benutzern nur unwesentlich akzeptiert werden). Wenn Sie also keine Dateien über eine Zeitmaschine übertragen, scheint HTTP gewonnen zu haben.
(Tangential: Es gibt Protokolle, die besser für die Dateiübertragung geeignet sind, wie z. B. rsyncBitTorrent, aber diese haben nicht so viel Mindshare, während HTTP Everywhere ™ ist.)
Eine Überlegung ist, dass FTP nicht standardmäßige Ports verwenden kann, was das Durchlaufen von Firewalls erschweren kann (insbesondere wenn Sie SSL verwenden). HTTP befindet sich normalerweise an einem bekannten Port, daher ist dies selten ein Problem.
Ich habe gerade eine Dateiübertragung über FTP und HTTP verglichen:
Das Ergebnis:
fdm
): 1 MinuteAlso im Grunde genommen in einer "realen" Situation:
1) HTTP ist beim Herunterladen einer großen Datei schneller als FTP.
2) HTTP kann parallelen Chunk-Download verwenden, wodurch es abhängig von den Netzwerkbedingungen 6x schneller als FTP ist.
quelle
Viele Firewalls trennen ausgehende Verbindungen, die nicht zu den Ports 80 oder 443 (http & https) führen. Einige trennen sogar Verbindungen zu Ports, die nicht HTTP (S) sind. FTP kann erlaubt sein oder nicht, ganz zu schweigen von den aktiven / PASV-Modi.
Außerdem ermöglicht HTTP / 1.1 viel bessere Teilanforderungen ("nur vom Byte 123456 bis zum Ende der Datei senden"), bedingte Anforderungen und Zwischenspeicherung ("nur senden, wenn sich der Inhalt geändert hat / wenn sich das Datum der letzten Änderung geändert hat") und Inhaltskomprimierung (gzip).
HTTP ist über einen Proxy viel einfacher zu verwenden.
Nach meinen anekdotischen Beweisen ist es mit HTTP einfacher, mit unterbrochenen / langsamen / flockigen Verbindungen zu arbeiten. Beispielsweise ist es nicht erforderlich, eine Anmeldesitzung (erneut) einzurichten, bevor die Übertragung (erneut) gestartet wird.
OTOH, HTTP ist zustandslos, daher müssten Sie sich authentifizieren und eine Spur erstellen, wer wann was getan hat.
Der einzige Geschwindigkeitsunterschied, den ich bemerkt habe, ist das Übertragen vieler kleiner Dateien: HTTP mit Pipelining ist schneller (reduziert Roundtrips, insbesondere in Netzwerken mit hoher Latenz).
Beachten Sie, dass HTTP / 2 noch mehr Optimierungen bietet, während das FTP-Protokoll seit Jahrzehnten keine Aktualisierungen mehr aufweist (und selbst Erweiterungen von FTP von den Benutzern nur unwesentlich akzeptiert werden). Wenn Sie also keine Dateien über eine Zeitmaschine übertragen, scheint HTTP gewonnen zu haben.
(Tangential: Es gibt Protokolle, die besser für die Dateiübertragung geeignet sind, wie z. B.
rsync
BitTorrent, aber diese haben nicht so viel Mindshare, während HTTP Everywhere ™ ist.)quelle
Eine Überlegung ist, dass FTP nicht standardmäßige Ports verwenden kann, was das Durchlaufen von Firewalls erschweren kann (insbesondere wenn Sie SSL verwenden). HTTP befindet sich normalerweise an einem bekannten Port, daher ist dies selten ein Problem.
Wenn Sie sich für die Verwendung von FTP entscheiden, lesen Sie unbedingt Informationen zu aktivem und passivem FTP .
In Bezug auf die Leistung spucken beide letztendlich Dateien direkt über TCP-Verbindungen aus und sollten daher ungefähr gleich sein.
quelle
Beide verwenden TCP als Transportprotokoll, HTTP verwendet jedoch eine dauerhafte Verbindung, wodurch die Leistung des TCP verbessert wird.
quelle