2016-05-27 6 views
1

私はtcp/ipネットワーク上で多くのファイルを転送するとき、tcp slowstartアルゴリズムと共通の問題について考えました。TCPスロースタートアルゴリズムは、多くの単一ファイルの転送が遅い理由ですか?

多数の小さなファイル(サイズ:50kb、量:10,000)を転送すると、同じamoutのデータ(50kb * 10,000 = 500,000 kb)を一度に転送する場合よりも時間がかかります。そして、私のために、それは(もちろん、オーバーヘッドのような他のものが...)、TCPの低速起動がその理由の1つです。

スロースタートが正しく理解されていれば、受信者からの確認なしに転送できる最大量のデータが発生します。各ファイルの新しい接続を確立すると、各転送の開始時にスロースタートが発生し、スロースタートアルゴリズムがスループットを向上させるため、ファイルが転送され、新しい接続が開始されます。したがって、最適化されたスループット・レートに達することはありません。一方、1つの大きなファイルを転送する場合、slowstartは最大の未確認のデータ量を最適化し、より高いスループット率に達することができます。

この仮定は正しいですか? もう1つの質問:cやC++や.netのslowstartの実装は同じですか?

「なぜ私のファイル転送は遅いのですか?」という複製は表示されません。スロースタートアルゴリズムが多くの小さなファイルの転送が遅い理由であるかどうか尋ねています。

答えて

1

いいえ、これは正確ではありません。スロースタートは接続に関連し、同じ接続で送信される個々のファイルではありません。接続が確立されている限り、1つの大きなファイルを同じ接続で送信するか、10個の小さいファイルを送信するかは関係ありません。

解決策は、接続を賢明に使用することです。多くのことを送信する必要がある場合は、単一の接続(モデルHTTP 1.1)を再利用してください。

TCPプロトコルの実装は、アプリケーションの言語とは無関係で、OSが提供する同じプロトコルスタックを使用しています。

+0

大丈夫、論理的に接続を再利用しています。 – whymatter

+0

パッシブFTPモードは、各ファイルに対して新しい接続を確立する必要があるため、低速になる可能性はありますか? – whymatter

+1

@whymatter、パッシブまたはアクティブFTPモードは、より遅くなる傾向があり、それは正しい観察です。 – SergeyA

関連する問題