WinSock send 呼び出しで 200ms 遅延する可能性があることがわかりました
MSDN から: http://support.microsoft.com/kb/214397/en
Nagle アルゴリズム: http://en.wikipedia.org/wiki/Nagle 's_algorithm
問題の概要:
SO_SNDBUF オプション「0」で small msg(< MTU)を繰り返し送信する場合は、ファンクションブロックを 200ms 送信する。
私の質問:最初にメッセージを送信するのに 200 ミリ秒かかるのはなぜですか?
TCP は最初の送信呼び出しの前にアイドル状態になっているため、最初のメッセージはすぐに送信する必要があると思います。
しかし、テスト結果は望ましくありません。
最初のメッセージも 200 ミリ秒遅れましたが、なぜですか?
回答ありがとうございます。
詳細を追加します。
Naggle アルゴリズムは、次のような小さなメッセージに対して機能します。
1. if wire is idle, send it immediately.
2. if formal message's ACK is not received, wait until ACK & send
3. Window's TCP ack delay mechanism send ack after 200ms.
したがって、私の予想では、最初のメッセージはすぐに送信され、2 番目のメッセージは最初のメッセージの ack を 200 ミリ秒待機します。
これは間違っていますか?