2011-06-26 6 views

答えて

2

@EugenはすでにTCP_NODELAYを指しています。これはおそらくあなたの質問に対する最も直接的な答えです。

私はむしろ異なる方向を見ています。帯域幅よりも待ち時間が多いように見えるので、TCPではなくUDPを使用することを検討してください。はい、一部の部品はあまり便利ではありませんが、レイテンシを最小限に抑えたい場合は、通常はより良い答えです(通常は?)。

+0

ああ、TCPはTCP_NODELAYオプションでUDPより遅いですか?詳細を知ることはできますか? – Eonil

+1

@ Eonil:その一部は間違いありません(たとえば、TCP接続を設定するために使用された3ウェイハンドシェイク)。他の部分は本当に遅くなる必要はありませんが、IPスタック、ルータなどは、TCPがより多くの遅延を許容し、トラフィックフローをその基準で最適化することを前提として設計されています。たとえば、ローカルIPスタックにTCP_NODELAYを設定した場合でも、ルータは帯域幅の使用を改善するために他のパケットと合体させることができます。 –

+1

@Eonil:重要な違​​いは、TCPは正しい順序でパケットが到着することを保証しますが、UDPは何も保証しません。パケットは間違った順序で到着する可能性があります。これを確実にするために、TCPはいくらかのオーバヘッド(接続を開始するためのハンドシェイク、番号付きパケット、到着パケットの確認(および到着していないものの再送信))を必要とします。 –

3

あなたはどのNagle's algorithmに言及している:

は、ネットワークを介して を送信する必要のあるパケットの 数を減らすことによって、TCP/IPネットワークの効率 を改善する手段です。

通常、アプリケーションレベルでTCP_NODELAYソケットオプションを使用して無効にすることができます。

+1

+1質問に答える。それでも、Nagleのアルゴリズムを無効にすると、トラフィックの少ない接続で重大な問題が発生する可能性があります。 Nagleのアルゴリズムは、TCP/IPオーバーヘッドを下げるためにデータをまとめてバッチ処理します。 TCP/IP経由の接続とTelnetのようなシンプルなサービスは、それがなければ最大4000%のオーバーヘッドで終わる可能性があります。 – jmkeyes

関連する問題