回答:
ここだ性能比較 2の。HTTPは小さなファイルの要求/応答に対してより応答性が高くなりますが、適切に調整されている場合、FTPは大きなファイルに対してより良い場合があります。FTPは一般的に高速であると考えられていました。FTPでは、TCP状態以外に制御チャネルと状態を維持する必要がありますが、HTTPは維持しません。FTPでデータの転送が始まる前に6つのパケット転送がありますが、HTTPでは4つだけです。
適切に調整されたTCP層は、アプリケーション層プロトコルの違いよりも速度に大きな影響を与えると思います。詳細については、Sun BlueprintUnderstanding Tuning TCPを参照してください。
各プロトコルの個々の特性の別の良い比較を示します。
FTPとHTTPの両方でファイル転送のベンチマークを行ったところです。
結果:
fdm
):1分したがって、基本的には「現実の」状況下で:
1)1つの大きなファイルをダウンロードする場合、HTTPはFTPより高速です。
2)HTTPはパラレルチャンクダウンロードを使用できるため、ネットワークの状態によってはFTPの6倍の速度になります。
多くのファイアウォールは、ポート80または443(httpおよびhttps)以外の送信接続をドロップします。HTTP(S)ではないポートへの接続をドロップするものさえあります。FTPは、アクティブ/ PASVモードとは異なり、許可される場合と許可されない場合があります。
また、HTTP / 1.1では、はるかに優れた部分リクエスト(「バイト123456からファイルの終わりにのみ送信」)、条件付きリクエストとキャッシュ(「コンテンツが変更された場合のみ/最終変更日が変更された場合のみ」)およびコンテンツ圧縮が可能です(gzip)。
HTTPは、プロキシを介して使用する方がはるかに簡単です。
私の事例証拠から、HTTPはドロップされた/遅い/不安定な接続で動作する方が簡単です。たとえば、転送を(再)開始する前にログインセッションを(再)確立する必要はありません。
OTOH、HTTPはステートレスなので、認証を行い、「誰がいつ何をしたか」の証跡を自分で構築する必要があります。
私が気づいた速度の唯一の違いは、多くの小さなファイルを転送することです:パイプライン処理を使用したHTTPはより高速です(特に、待ち時間が長いネットワークで顕著です)。
なお、HTTP / 2申し出、さらに最適化を、FTPプロトコルは、任意の数十年の更新(FTPにも拡張がユーザーによる軽微取り込みを持って)見ていないのに対し。したがって、タイムマシンを介してファイルを転送しない限り、HTTPが勝ったようです。
(接線的に:rsync
またはBitTorrent などのファイル転送により適しているプロトコルがありますが、それらはそれほどマインドシェアがありませんが、HTTPはEverywhere™です)
1つの考慮事項は、FTPが非標準のポートを使用できるため、ファイアウォールを通過することが困難になる可能性があることです(特にSSLを使用している場合)。HTTPは通常、既知のポート上にあるため、これが問題になることはほとんどありません。
FTPを使用する場合は、アクティブFTPとパッシブFTPについて必ずお読みください。
パフォーマンスの点では、結局のところ、どちらもTCP接続を介して直接ファイルを吐いているので、ほぼ同じになるはずです。