web-dev-qa-db-ja.com

ファイル転送のためのHTTPとFTPの比較

インターネットを介してファイルを転送する場合、一方の利点と他方の利点(または制限)とは何ですか?

(私は両方のプロトコルの安全な形式を知っています。パフォーマンス、信頼性、ファイルサイズの制限などの点で個人的な経験を通して比較を聞きたいです)

112
Mystic

これが パフォーマンス比較 の2つです。 HTTPは、小さなファイルの要求/応答に対してより応答しますが、適切に調整されていれば、大きなファイルに対してFTPの方が適している場合があります。 FTPは一般的に高速と見なされていました。 FTPでは、TCP状態以外に制御チャネルと状態を維持する必要がありますが、HTTPでは必要ありません。 FTPではデータの転送が開始される前に6つのパケット転送がありますが、HTTPでは4つだけです。

適切に調整されたTCP層は、アプリケーション層プロトコルの違いよりも速度に大きな影響を与えると思います。 Sun Blueprint nderstanding Tuning TCP に詳細があります。

ここに別の 良い比較 各プロトコルの個々の特性があります。

89
John Ellinwood

FTPとHTTPの両方でのファイル転送のベンチマークを行いました。

  • 2つ以上の非常に良好なサーバー接続
  • 同じ1GB .Zipファイルを使用する
  • 同じネットワーク条件下で(次々にテスト済み)

結果:

  • fTPを使用:6分
  • hTTPを使用:4分
  • 同時httpダウンローダーソフトウェアを使用する( fdm ):1分

したがって、基本的には「実生活」の状況下で:

1)1つの大きなファイルをダウンロードする場合、HTTPはFTPより高速です。

2)HTTPは、ネットワーク状況に応じてFTPの6倍の速度を実現する並列チャンクダウンロードを使用できます。

27
BitQuestions

多くのファイアウォールは、ポート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™であるのに対し、それらはそれほどマインドシェアはありません)

25
Piskvor

1つの考慮事項は、FTPが非標準ポートを使用できるため、ファイアウォールを通過するのが困難になる可能性があることです(特にSSLを使用している場合)。 HTTPは通常既知のポート上にあるため、これが問題になることはほとんどありません。

FTPを使用することに決めた場合は、必ず Active and Passive FTP を読んでください。

パフォーマンスの観点からは、1日の終わりに両方ともTCP接続に直接ファイルを吐き出しているので、ほぼ同じになるはずです。

12
brian-brazil