socket_nodelay:デフォルトはtrue。 TCPストリームでsetNoDelay()を呼び出すかどうか。基底の ソケットでNagleアルゴリズムを無効にします。このオプションをfalseに設定すると、さらに遅延が発生するため、スループットは になります。ほとんどのアプリケーションでは、 がtrueに設定されています。
なぜNagleのアルゴリズムを無効にしたいのですか?
socket_nodelay:デフォルトはtrue。 TCPストリームでsetNoDelay()を呼び出すかどうか。基底の ソケットでNagleアルゴリズムを無効にします。このオプションをfalseに設定すると、さらに遅延が発生するため、スループットは になります。ほとんどのアプリケーションでは、 がtrueに設定されています。
なぜNagleのアルゴリズムを無効にしたいのですか?
遅延が懸念される場合は、Nagleアルゴリズムをオフにします。アルゴリズムの私の理解は、それが送信する合理的な量があるまでデータを送信することを遅らせることです。これは、より多くのデータが単一のパケット(すなわち、単一ヘッダ)で送信されるため、ストリームのプロトコルオーバーヘッドを減少させる。
Nagleアルゴリズムをオフにしておくと、データはプロトコルスタックによってすぐに送信されるという考えがあります。
これは、ネットワークリソースがより制約された日に設計されたものです。そのため、オーバーヘッドの削減は、便宜的な配信にとって重要でした。しかし、今日では一般的に高速な相互接続と低レイテンシに対する要求がますます重要になってきています。 (ビデオストリーミングを考えよう)