栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么时候应该使用TCP_NODELAY,什么时候应该使用TCP_CORK?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么时候应该使用TCP_NODELAY,什么时候应该使用TCP_CORK?

首先,不是所有人都禁用Nagle的算法。

Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。

if [ data > MSS ]    send(data)else    wait until ACK for previously sent data and accumulate data in send buffer (data)    And after receiving the ACK send(data)

这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待ACK可能会增加延迟。另外,如果接收方实施“延迟的ACK策略”,则将导致暂时的死锁情况。在这种情况下,禁用Nagle算法是更好的选择。

因此,TCP_NODELAY用于禁用Nagle的算法。

TCP_CORK积极累积数据。如果套接字中启用了TCP_CORK,则在缓冲区填充到固定限制之前它不会发送数据。与Nagle的算法类似,它还会累积来自用户的数据,但是直到缓冲区填充到固定限制为止,直到接收到ACK。发送多个数据块时,这将很有用。但是在使用TCP_CORK时必须更加小心。

在2.6内核之前,这两个选项都是互斥的。但是在以后的内核中,它们可以一起存在。在这种情况下,将给予TCP_CORK更多的优先权。

参考:

  • http://baus.net/on-tcp_cork/
  • http://ccr.sigcomm.org/archive/2001/jan01/ccr-200101-mogul.pdf


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400958.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号