欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > HTTP:Nagle算法与TCP_NODELAY

HTTP:Nagle算法与TCP_NODELAY

2025/2/5 11:51:39 来源:https://blog.csdn.net/weixin_45450567/article/details/145175233  浏览:    关键词:HTTP:Nagle算法与TCP_NODELAY

背景:TCP 有一个数据流接口,应用程序可以通过它将任意尺寸的数据放入 TCP 栈中—— 即使一次只放一个字节也可以!但是,每个 TCP 段中都至少装载了 40 个字节的标记和首部,所以如果 TCP 发送了大量包含少量数据的分组,网络的性能就会严重 下降。

Nagle算法

Nagle 算法(根据其发明者 John Nagle 命名)试图在发送一个分组之前,将大量 TCP 数据绑定在一起,以提高网络效率。

Nagle 算法鼓励发送全尺寸(LAN 上最大尺寸的分组大约是 1500 字节,在因特网上是几百字节)的段。只有当所有其他分组都被确认之后,Nagle 算法才允许发送 非全尺寸的分组。如果其他分组仍然在传输过程中,就将那部分数据缓存起来。只 有当挂起分组被确认,或者缓存中积累了足够发送一个全尺寸分组的数据时,才会 将缓存的数据发送出去。

Nagle 算法会引发几种 HTTP 性能问题。首先,小的 HTTP 报文可能无法填满一个 分组,可能会因为等待那些永远不会到来的额外数据而产生时延。其次,Nagle 算 法与延迟确认之间的交互存在问题——Nagle 算法会阻止数据的发送,直到有确认 分组抵达为止,但确认分组自身会被延迟确认算法延迟 100 ~ 200 毫秒。

TCP_NODELAY

HTTP 应用程序常常会在自己的栈中设置参数 TCP_NODELAY,禁用 Nagle 算法,提高性能。如果要这么做的话,一定要确保会向 TCP 写入大块的数据,这样就不会产生一堆小分组了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com