1

2 台のコンピューターが非常に近い距離 (通常は数フィート以内) にあるアプリケーションを使用しています。

2 台のコンピューターのアプリケーション間に TCP 接続があります。サーバーは Linux では C で作成され、Windows ではクライアントは C# と TCPClient を使用して作成されました。

このソケットを介して、非常に大きなペイロード (多くの場合一度にギガバイト) を転送しています。

Wireshark を使用して通信を監視すると、送信されたパケットの約 66%が ACK であることがわかりました。各ペイロード パケットは約 5k になる傾向があります。したがって、 ACK 内のデータの割合は非常に低く、わずか 1 ~ 2 パーセントです。

ACK の数を気にする必要がありますか? パケット ロスは気にしていません。パケット ロスに関しては、接続が高品質であることを期待しています。

ACK の数を減らすためにできること (またはすべきこと) はありますか?

4

1 に答える 1

2

おそらくあなたが見ているのは、受信者が送信者の送信を確認していることです。受信者は他に送信するものがないため、ACK のみのパケットを使用する必要があります (送信者も ACK を送信します - すべての TCP パケットには ACK が含まれます)。

ACK の数に悩まされる必要はないと思います。ウィンドウ サイズが十分に大きい場合、送信者は ACK を待っていません。自問すべき質問は、LAN の速度で得られるはずのスループットが得られているかということです。

于 2012-04-19T05:03:39.440 に答える