Fre*_*ory 1 algorithm networking tcp
我一直在闲着好奇地研究Nagle的算法.我理解它背后的基本概念(TCP数据包包含大量的开销,特别是在处理小的有效负载时),但我不确定我是否实现了实现.
我正在维基百科上阅读这篇文章,但我仍然不清楚它是如何工作的.我们以Telnet连接为例.建立连接,然后我开始输入.假设我输入三个字符(cat
例如)并点击返回.现在我们谈论cat\r\n
的仍然只有5个字节.我认为这不会被发送,直到我们排队足够的字节发送 - 然而,它确实立即发送(从用户的角度来看),因为cat
在点击返回时立即执行.
我认为我对这个算法是如何工作有一个基本的误解,特别是关于"如果管道中仍有未经证实的数据,入队,否则立即发送"的位.
仅当服务器已经响应您之前的任何消息(或者这是您在此会话中首次与其联系)时,才会立即发送数据.因此,当服务器变得更繁忙且响应更慢时,为了避免使用太多数据包淹没它,数据在发送之前排队到最大数据包大小.
因此,无论是否立即发送数据,都可以在先前消息的上下文中确定(如果有的话).