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


125

インターネット経由でファイルを転送する場合の利点(または制限)は何ですか?

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

回答:


99

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

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

各プロトコルの個々の特性の別の良い比較を示します。


22
+1良い答え。FTPの時代は終わったと思いますが、もう関連性はありません。また、実装する絶対的な豚でもあります。
skaffman

7
「小さい」または「大きい」ファイルはどのサイズを意味しますか?
Urbycoz

性能比較の P-HTTP、T / TCP、およびS-TCBを実装するから期待利益の分析へのリンクポイント。FTPについて言及しているところはありません。また、適切に調整されたリンクが壊れています。
2013

@Trispedはパフォーマンス比較リンクを読みましたか?FTPへの12の参照があり、最初のセクションは「HTTPプロトコルはもともとFTPの非効率性を減らすために開発された...」と言ってから説明を続けます。「Understanding Tuning TCP」リンクも更新しました... Oracleが古いSun Blueprintsホワイトペーパーをすべて捨てたようです。
John Ellinwood 2013

2
1996年8月16日 ...本当に?2009年の回答でさえ、これが現在の状況を表すとは期待できませんでした。-1
user541686

29

FTPとHTTPの両方でファイル転送のベンチマークを行ったところです。

  • 2つの非常に優れたサーバー接続
  • 同じ1GBの.zipファイルを使用
  • 同じネットワーク条件で(次々にテスト)

結果:

  • FTPの使用:6分
  • HTTPを使用:4分
  • 同時httpダウンローダーソフトウェアの使用(fdm):1分

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

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

2)HTTPはパラレルチャンクダウンロードを使用できるため、ネットワークの状態によってはFTPの6倍の速度になります。


18
これは非常に逸話のようです。
spenibus

5
@anecdotal彼は、これまでの他のどの回答よりも逸話的ではない数(研究からの事実)を提供しました。
user1133275 2017

時間は、少なくともおよそ再現可能ですか?
masterxilo

数日前、httpで90MBのファイルをダウンロードしようとしましたが、ネットワークが2MBで失敗しました。しかし、ftp(同じサーバー、同じファイル、モバイルホットスポットを介した同じネットワーク)では、ダウンロードは成功します。理由はわかりません。
Rahmat Ihsan

1
オーバーヘッドが低いため、単一ファイルの場合、ftpの方が高速です。テストで別の答えが得られた場合は、別のクライアント(または可能性は低いが別のサーバー)を試してください。httpは、最大ビットレートより速くダウンロードすることはできません。それを超えるために使用される並列オプションは、プロトコルのオーバーヘッドを引き起こします。対 マルチファイルは、プロトコルオーバーヘッドなしでFTP経由でラインスピードでバックツーバックで転送できます。FTPの並列オプションは、通常シングルポイント接続を超える複数のTCP接続を使用します(例:SMB3.1 vSMB2.1、3.xはマルチ接続を使用できます)。
アスタラ

27

多くのファイアウォールは、ポート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™です)


13

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

FTPを使用する場合は、アクティブFTPとパッシブFTPについて必ずお読みください。

パフォーマンスの点では、結局のところ、どちらもTCP接続を介して直接ファイルを吐いているので、ほぼ同じになるはずです。


-5

どちらもトランスポートプロトコルとしてTCPを使用しますが、HTTPは永続的な接続を使用するため、TCPのパフォーマンスが向上します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.