2009-06-24 97 views
1

我一直在研究Nagle的算法出於閒置的好奇心。我理解它背後的基本概念(TCP數據包包含大量開銷,尤其是在處理小型有效負載時),但我不確定我是否贊同實現。Nagle的算法不清楚

我讀維基百科this article,但我仍然在它的工作原理還不清楚。我們以Telnet連接爲例。連接建立後,我開始打字。比方說,我輸入三個字符(例如cat)並返回。現在我們正在說cat\r\n,它仍然只有5個字節。我認爲這不會被髮送,直到我們排隊足夠的字節發送 - 然而,它確實得到立即發送(從用戶的角度),因爲cat立即擊中後返回執行。

我想我有一個根本性的誤解這裏的算法是如何工作的,特別是關於位,其中「是否有未經證實的數據仍然在管,入隊,否則立即發送。」

+0

雖然這篇文章談論的是telnet會話是一個問題,所以它會立即發送。 – cloudhead 2009-06-24 19:38:26

回答

5

得到的數據立即發送只有當服務器已迴應任何以前的消息從您(或這是本次會議以這是您第接觸)。因此,隨着服務器越來越忙,響應速度變慢,爲了避免吞吐太多的數據包,數據在發送之前會被排隊等待最大數據包大小。

因此,無論數據被立即發送或不僅可以在以前的消息的情況下,確定如果有的話。

+0

所以我猜測Nagle的算法不適用於SYN/ACK數據包,那麼 - 即它發送那些沒有延遲? – FreeMemory 2009-06-24 19:38:03

0

閱讀this post,這是很深入,並澄清了很多的東西給我。