1

ネットワーク接続を介してバイナリデータの大きなブロブを送信する必要があるプロジェクトがありますが、さまざまな制約があるため、TCPラッパーを使用するのが最も簡単です。つまり、パケット(およびバイナリデータ)を手動で管理しているということです。

しかし、私の質問は単純です。パケットサイズはデータ転送速度に影響しますか?パケットとバッファのサイズによってメモリ使用量が変わることは理解していますが、ネットワークを介して転送される実際の速度はどうでしょうか。つまり、パケットが大きいほどパケットが少なくなるので速度が上がりますが、大きいパケットの転送速度も遅くなると思います...キャンセルしても問題ありませんか、それとも一方の変更が他方よりも大きいのでしょうか。そしてそれは違いを生むのでしょうか?そして、どの方向に?

また、ファイルストリームからデータを直接読み取り(メモリを効率的に使用するために、一度に1パケット)、バイナリデータをファイルストリームに直接渡します(一度に1パケット)。 、それがセットアップの効率に影響するのか、パケットサイズの変更の影響に影響するのかはわかりません。

これに関する助けをいただければ幸いです。

4

2 に答える 2

2

各パケットには一定のオーバーヘッドがあります(たとえば、送信元アドレスと宛先アドレス)。各パケットが大きいほど、固定オーバーヘッドは全体のパーセンテージとして小さくなります。したがって、パケットが大きいほどスループットが向上します。

とはいえ、実際にIPスタックをハッキングしたり、TCP_NODELAYのようなものを設定したりしない限り、通常のTCP実装はデータを蓄積して、より大きなパケットを自動的に送信しようとします。

于 2012-07-13T05:03:21.370 に答える
1

パケット(およびバイナリデータ)を手動で管理しています

あなたではない。あなたは自分がそうだと思うかもしれませんが、そうではありません。TCPは、発信データを最小数のパケットに統合するように特別に設計されており、それについてできることはあまりありません。

パケットサイズはデータ転送速度に影響しますか?

もちろん。オーバーヘッドを償却するには、パケットが少ないほど良いです。TCPパケットの最小オーバーヘッドは40バイトであるため、大きいほど良いです。

大きなパケットも転送速度が遅くなります

意味がない。Xバイトを転送する必要があります、それはそれがかかるのと同じくらい時間がかかります。最小化する必要があるのはオーバーヘッドです。これは、スペースの観点からはパケットヘッダーです。

TCPスループットの観点から見た親友は、受信側の大きなソケット受信バッファーであり、次善の友人は、送信側の大きなソケット送信バッファーです。TCPを考え抜こうとしないでください。これは、30年以上にわたって専門家によって取り組んできました。

于 2012-07-13T10:08:14.527 に答える