3

デフォルト値で TCP 接続を受け入れ、SYN、ACK が 64K のウィンドウ サイズと 7 のウィンドウ スケール ファクタで送信されていることを観察します。

3 ウェイ ハンドシェイクが完了し、アプリの制御パケットを交換したら、setsockopt() を使用して SO_RCVBUF を 20K に設定します。私の質問は、この場合、広告されたウィンドウがいつ更新されるかです。sb_hiwat が小さい値に変更されたので、すぐにウィンドウ更新パケットが表示されるはずではありませんか? 私が見ているのは、アドバタイズされたウィンドウが徐々に減少し、7MB から 20K に達するまでに 4 秒かかります。

4

1 に答える 1

0

受信バッファを減らしたい理由がまったくわかりません。

送信が開始されるとできない場合もありますが、いずれにせよ、受信バッファーにデータがある場合、すぐにそれよりも小さい値に設定されるとは期待できません。そうしないと、データを破棄する必要があり、TCP はそれを許可しません。

放っておくことをお勧めします。

于 2013-07-26T07:17:25.530 に答える