Nagle的算法是一个用来提高网络效率的系统,尤其是互联网。该系统涉及避免不必要的小批量发送数据,这也增加了发送的批处理数量。虽然Nagle的算法有其用途,但它与网络通信的其他元素之间的交互作用很差 Nagle的算法是一个...
Nagle的算法是一个用来提高网络效率的系统,尤其是互联网。该系统涉及避免不必要的小批量发送数据,这也增加了发送的批处理数量。虽然Nagle的算法有其用途,但它与网络通信的其他元素之间的交互作用很差

Nagle的算法是一个用来提高网络效率的系统,尤其是互联网一个叫约翰·纳格尔的人,纳格尔的算法适用于使用TCP/IP协议的网络。这些协议,或者说是网络如何传输数据的"规则"。虽然这些协议可以应用于任何网络,但它们最常与互联网相关联该算法处理数据以小块或"数据包"的方式传输。每个数据包都包含一些数据加上标头信息,这相当于物理信封上的发送方和接收方地址。数据包还包含校验和,一种数学等价物,相当于包括一份装箱单,以便收件人知道包裹中的所有内容都已安全到达。虽然该系统正常工作良好,但如果数据块特别小,则可能效率低下。在极端情况下在这种情况下,数据包中的数据可能只有一个字节,但是不管数据的大小,报头信息将占用40个字节这大致相当于给某人写一封信,然后把它剪成一个单独的信封发送。事实上,由于消息是以二进制的形式发送的,它的效率甚至比这个还要低。这不仅浪费了带宽,还增加了必须发送的包数,Nagle算法的原理是发送一个包后,发送计算机将等待两个事件中的一个发生,然后再发送下一个包如果它收到最后一个数据包已经收到的确认,它将立即发送它所拥有的数据,而不管它的大小。否则,它将等待直到它有一个"完整"的数据包发送。一旦发生这种情况,它将发送完整的包,而不管前一个包是否已收到在某些情况下,纳格尔的算法弊大于利。一个例子是在线视频游戏,其设计假设数据会立即发送。如果使用纳格尔算法,有些数据会被延迟到一个完整的数据包准备好,这会对玩家的反应速度产生明显的影响,并且会有效地降低玩家的反应速度。