この Socket FAQ articleによると、Nagle のアルゴリズムは、多数のデータを TCP バッファに保持させ、ネットワークにヒットさせないアルゴリズムの 1 つです。Nagle アルゴリズムによる遅延は最大 200 ミリ秒です。
何らかの理由で、Nagle のアルゴリズムを完全にオフにすることはできますが、一度だけフラッシュすることはできません。これは本当に不可解です。なぜ「今回だけ、これ以上のデータを待たずに、ネーグルの 200 ミリ秒が経過したかのように振る舞う」と言う方法がないのはなぜですか。
それは完全に理にかなっており、Nagle をまったく使用しない、常に Nagle を使用する、および独自のプロトコルをゼロから実装することとの間でバランスが取れているのではないでしょうか?