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,这是很深入,并澄清了很多的东西给我。