2009-04-04 10 views
89

Was sind die Vorteile (oder Einschränkungen) für die Übertragung von Dateien über das Internet?Vergleichen von HTTP und FTP zum Übertragen von Dateien

(ich bin mir bewusst, sichere Formen der beiden Protokolle. Ich möchte Vergleiche durch persönliche Erfahrungen in Bezug auf Leistung, Zuverlässigkeit, Dateigrößenbeschränkungen usw. hören)

Antwort

79

Hier ist eine performance comparison der beiden. HTTP ist reaktionsschneller für die Anfrage-Antwort von kleinen Dateien, aber FTP kann für große Dateien besser sein, wenn es richtig eingestellt ist. Früher galt FTP als schneller. FTP benötigt einen Kontrollkanal und Status wird neben dem TCP-Status beibehalten, 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 Auswirkungen auf die Geschwindigkeit als der Unterschied zwischen den Anwendungsschichtprotokollen. Der Sun Blueprint Understanding Tuning TCP hat Details.

Heres eine weitere good comparison der einzelnen Merkmale jedes Protokolls.

+17

+1 gute Antwort. Ich denke, der FTP-Tag war und ist vorbei, er hat wenig Relevanz mehr. Es ist auch ein absolutes * Schwein * zu implementieren. – skaffman

+6

Welche Größe ist mit "kleinen" oder "großen" Dateien gemeint? – Urbycoz

+0

Der Link [Leistungsvergleich] (http://www.isi.edu/lsam/publications/http-perf/) verweist auf eine Analyse der erwarteten Gewinne aus der Implementierung von P-HTTP, T/TCP und S-TCB. Nein, wo erwähnt FTP. Außerdem ist der [richtig eingestellt] (http://www.sun.com/blueprints/0304/817-5773.pdf) Link unterbrochen. – Trisped

11

Eine Überlegung ist, dass FTP nicht-Standard-Ports verwenden kann, die Firewalls schwierig machen (vor allem wenn Sie SSL verwenden). HTTP befindet sich normalerweise an einem bekannten Port, daher ist dies selten ein Problem.

Wenn Sie sich entscheiden, FTP zu verwenden, stellen Sie sicher, dass Sie über Active and Passive FTP lesen.

In Bezug auf die Leistung, am Ende des Tages sind beide speien Dateien direkt nach TCP-Verbindungen, so sollte etwa gleich sein.

19

Viele Firewalls fallen ausgehende Verbindungen, die nicht zu den Ports 80 oder 443 sind (http & https); Einige löschen sogar Verbindungen zu solchen Ports, die nicht HTTP (S) sind. FTP kann oder darf nicht erlaubt sein, um nicht von den aktiven/PASV-Modi zu sprechen.

Außerdem ermöglicht HTTP/1.1 wesentlich bessere Teilanfragen ("nur senden von Byte 123456 an das Ende der Datei"), bedingte Anfragen und Caching ("nur senden, wenn Inhalt geändert/Datum der letzten Änderung geändert")) und Inhaltskomprimierung (gzip).

HTTP ist viel einfacher über einen Proxy zu verwenden.

Aus meinen anekdotischen Beweise, HTTP ist einfacher zu arbeiten mit fallen gelassen/langsam/flockige Verbindungen; z.B. Es ist nicht erforderlich, vor dem (erneuten) Transfer eine Login-Sitzung (erneut) einzurichten.

OTOH, HTTP ist zustandslos, Sie müssten also Authentifizierung durchführen und eine Spur von "wer hat wann was gemacht" erstellen.

Der einzige Unterschied in der Geschwindigkeit, die ich bemerkt habe, ist die Übertragung vieler kleiner Dateien: HTTP mit Pipelining ist schneller (reduziert Round-Trips, besonders bemerkbar in Netzwerken mit hoher Latenz).

Beachten Sie, dass HTTP/2 noch mehr Optimierungen bietet, während das FTP-Protokoll seit Jahrzehnten keine Aktualisierungen mehr gesehen hat (und sogar Erweiterungen von FTP von den Benutzern nur unwesentlich genutzt werden). Wenn Sie also keine Dateien über eine Zeitmaschine übertragen, scheint HTTP gewonnen zu haben.

(Tangential: Es gibt Protokolle, die für die Dateiübertragung besser geeignet sind, wie rsync oder BitTorrent, aber die nicht so viel Mindshare haben, während HTTP ist überall ™)

-3

Beide verwendet TCP als ein Transportprotokoll, aber HTTP verwendet eine persistente Verbindung, die die Leistung des TCP besser macht.

15

ich gebenchmarkt nur eine Dateiübertragung über FTP oder HTTP:

  • über zwei sehr gute Server-Verbindungen
  • gleich 1 GB unter Verwendung von .zip
  • unter den gleichen Netzwerkbedingungen (getestet einer nach Datei die andere)

das Ergebnis:

  • mit FTP: 6 Minuten
  • HTTP: 4 Minuten
  • eine gleichzeitige http Downloader Software (fdm): 1 Minute

Also, im Grunde unter einem "wirklichen Leben" Situation:

1) HTTP ist schneller als FTP beim Herunterladen einer großen Datei.

2) HTTP kann einen parallelen Chunk-Download verwenden, der es je nach Netzwerkbedingungen 6x schneller als FTP macht.

+9

Das scheint sehr anekdotisch. – spenibus

+0

danke für Korrekturen ;-) – BitQuestions

+1

@anecdotal er lieferte Zahlen (Fakten aus der Forschung), die weniger anekdotisch ist als jede andere Antwort bisher. – user1133275

Verwandte Themen