Antworten:
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.
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.
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.)
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.