そのため、Nagle のアルゴリズムに出くわし、小さいサイズのパケット (1 バイト データ) の ACK を遅延させたとき、TCP の処理を行っていました。その理由は、ネットワーク上で小さなパケットを大量に送信すること (Nagle) と、データをピギーバックすること (Delayed ACK) を回避するためです。ただし、バルク データのこれらのアルゴリズムについては言及されていません。つまり、8000 バイトを超える書き込みを行います。4 つの質問:
これらのアルゴリズムは小さなサイズのパケットにのみ適用できますか?
たとえば、write(8000) を実行すると、TCP は最初に 1500 バイトを送信します (1500 が MSS であり、スロー スタートが発生していると仮定します)。ACK が最初に受信される前に、別の 1500 バイトのデータを送信できます。ネーグルズに違反していませんか?
受信者は、遅延 ACK を送信するためにタイムアウトを待ちますか、それとも 1500 バイトのデータを受信した直後に送信しますか?
ACK を遅らせるタイミングをどのように知るのでしょうか? 受信バッファ内のバイトに基づいていますか?
ありがとう!