Nagle 算法是一个用于提高网络(尤其是互联网)效率的系统。该系统涉及避免以不必要的小批量发送数据,这也会增加发送的批量数量。虽然 Nagle 的算法有其用途,但它与网络通信的其他元素的交互效果很差。
Nagle 的算法由一位名叫 John Nagle 的人创建,适用于使用 TCP/IP 协议的网络。这些是网络如何传输数据的协议或"规则"。虽然这些协议可以适用于任何网络,但它们最常与互联网相关。
该算法处理数据以小块或"数据包"传输的方式每个数据包都包含一些数据和标头信息,相当于物理信封上的发件人和收件人地址。数据包还包含校验和,数学上相当于包含装箱单,以便收件人知道邮件的所有内容。数据包已安全到达。
虽然该系统通常运行良好,但如果数据块特别小,则效率可能会很低。在极端情况下,数据包中的数据可能只有一个字节,但标头无论数据大小如何,信息都会占用 40 个字节。这大致相当于给某人写一封信,然后将其切割并在单独的信封中发送每个单词。事实上,因为消息以二进制形式发送,所以甚至效率比这还要低。除了浪费带宽之外,这还增加了必须发送的数据包数量,从而增加了传输过程中发生错误的机会。
Nagle算法的原理是:发送数据包后,发送计算机将等待两件事之一发生,然后再发送下一个数据包。如果它收到已收到最后一个数据包的确认,它将立即发送其拥有的数据,无论其大小如何。否则,它将等到有"完整"数据包要发送。一旦发生这种情况,无论是否已收到前一个数据包,它都会发送完整的数据包。
在某些情况下,Nagle 的算法弊大于利一个例子是在线视频游戏,其设计假设数据将立即发送。如果使用 Nagle 算法,一些数据将被延迟,直到完整的数据包准备好。这会对响应速度产生显着影响。与其他玩家相比,游戏会给玩家带来感觉,并且会有效地减慢他们的反应时间。
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!