FTP、HTTP、SSH などの中で、一貫したブロードバンド インターネット接続が与えられた場合、ネットワーク上でファイルを転送する最速の方法は何ですか?
3 に答える
可能であれば Socket.SendFile() を使用してください。これは、ポイント A からポイント B にファイルを移動する最も簡単な方法です。達成しようとしていることの詳細を知らなければ、より適切な推奨事項を提供することは非常に困難です。それ以外の場合は、おそらく FTP を使用します。System.Net には、使用できるかなりまともな FtpClient オブジェクトがあり、サンプルにはそれがかなり詳しく記載されています。HTTP と FTP はどちらも TCP を使用するため、おそらくそれらの間に大きな速度の違いは見られず、HTTP には通常、他の潜在的な動作を伴うヘッダーがあります (AUTH を必要とするサーバーに、Expect-100 Continue で資格情報なしでファイルをアップロードしてみてください)。接続に何が起こるかを確認します)。Socket.SendFile() を使用すると、ソケットは定義上プロトコルに依存しないため、同じコードで UDP または TCP 経由でファイルを送信できる可能性があります。
これら 3 つの中で、その HTTP. 「ファイルを転送する」という効果的な行為は同じ速度ですが、
FTP は、セッションを安定させるためにあまりにも多くの「会話」を必要とし、データを転送するために並列接続を作成します。このすべての「会話」は、ファイルの転送を開始するのに少し時間がかかります。これと同じ理由で、特に FTP クライアントが「パッシブ モード」をサポートしていない場合、FTP がランダムにポートを開くため、ファイアウォールとルーターで問題が発生する可能性があります。
HTTP はより客観的であり、接続し、必要なものを伝え、それを回答として取得します。何とか何とか何とか。
SSH は転送プロトコルではありません。SSH は「セキュア シェル」の略です。SSLを意味する場合、それは転送プロトコルでもなく、HTTPセッションをカプセル化するために一般的に使用されるセキュリティ層でもあります。
しかし、どちらが速いかという問題ではないかもしれません。本当の問題は、何をしたいのかということです。問題によっては、それらのいずれもオプションではない場合があります。
エンドポイントと介在するファイアウォールの両方を制御できますか? FTP は、他のオプションよりもファイアウォールに優しくありません。SSH ベースのツール (sftp、scp) は非常に優れていますが、一部の ISP は暗号化されたトラフィックを抑制したり、干渉したりすることが知られています (Comcast、私はあなたを探しています!) rsync を検討しましたか? 私の職場では、長距離のインターネット接続を介して巨大なデータセットを転送するためにこれを使用しています。