问题标签 [nagle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
930 浏览

sockets - TCP_NODELAY 是否通过接受继承?

如果我要创建一个TCP_NODELAY启用该选项的 TCP 套接字并将其listen用于新连接,那么返回的新套接字是否accept也已TCP_NODELAY启用?

accept不同的套接字可以有不同的配置选项,尽管从产生它们的侦听套接字继承它们的选项返回的套接字是有意义的。这是否依赖于实现?

0 投票
0 回答
375 浏览

java - Socket.setTcpNoDelay() 与主机设置(Nagle 算法)

我只是想深入了解 Nagle 的算法是如何处理应用程序与主机的。

那么,假设主机启用了 TCP_NODELAY,但 Java 应用程序没有启用,那么哪个优先?

反过来呢?

0 投票
1 回答
953 浏览

c++ - 如何在 POSIX 函数 send() 中关闭 TCP PSH 标志?

我正在使用以太网向步进电机系统发送命令。命令使电机移动,或响应驱动器状态,或配置驱动器等......步进电机系统有时会挂起,或无法执行命令,制造商查看了我提供的所有内容后告诉我关闭 TCP 层中的 PSH 标志。

Wireshark 的屏幕截图显示了我的代码对 PSH 标志的使用:

在此处输入图像描述

我正在使用在 Ubuntu (16.04) 中运行的 C++11。

我的发送函数如下所示:

我查看了函数的编写,我知道最后一个参数(我在 0 处)是一个标志。我不明白的是我需要插入的值以关闭 PSH 标志而不更改任何其他内容(如果可能的话)。你能帮我吗?

编辑 消息的大小非常小。例如: const char m_ME[5] = {m_HEADER_ONE, m_HEADER_TWO, m_M_HEX, m_E_HEX, m_FOOTER_HEX};

发送时看起来像这样: 在此处输入图像描述

我发送的最大消息是 8 个字符,相当于 8 个字节。

编辑 我实现了这个答案(如何在 Linux 中禁用 Nagle 的算法?),在我看来 TCP_NODELAY 并没有关闭 PSH 标志。我用来检查的代码:

0 投票
2 回答
627 浏览

c# - (C#)Azure 函数 - 具有存储帐户绑定时禁用 Nagle 算法

在我看到的任何地方,要禁用 nagle 的算法,您可以在创建存储帐户客户端后通过服务点执行此操作。我还在几个地方读到,只有在你第一次请求之前这样做才有效。

就我而言,我的函数 (v2) 使用与存储帐户(blob 和表)的绑定。所以这意味着第一个连接是由我的函数而不是我的代码完成的,所以我想知道如何禁用这个 nagle 的算法。有功能设置吗?

0 投票
1 回答
68 浏览

c# - dotnet 的 tcp 套接字的发送方法究竟什么时候不发送所有字节?

像所有套接字 API 一样,它表示它返回实际发送的字节数。什么情况下返回的数字与输入的大小不匹配?

我幼稚的假设是它会发送完整的段,直到窗口已满,一旦它等待 ACK,它就会返回(我从 W10 发送到 Ubuntu,我假设默认情况下两者都使用 Nagle 的算法)。

但是,即使我传递一个 >100MB 的缓冲区来发送,它也总是返回输入缓冲区的大小。标准库会自动“在内部多次调用发送”,还是我的 ubuntu 发送 ACK 太快?还是我对 API 和/或 Nagle 算法的解释有误?

0 投票
1 回答
269 浏览

c - 如何为 libpq 和 postgres 服务器配置 TCP_NODELAY?

我试图确保为 Postgres 客户端和服务器设置 TCP_NODELAY(禁用 Nagle)。我可以看到 libpq 中有代码可以在定义 TCP_NODELAY 宏时使用该选项。我已经克隆了 postgres 存储库,运行:

并试图链接到生成的静态库。这导致undefined reference to symbol 'inet_net_ntop@@GLIBC_2.2.5'添加-lresolv修复程序,然后还有许多其他未定义的参考问题。我还没有找到关于 postgres 和 TCP_NODELAY 的任何官方文档。

libpq 和 postgres 服务器是否默认使用 TCP_NODELAY?或不?

我在上面的正确轨道上吗?似乎应该有更简单的方法?

0 投票
1 回答
204 浏览

c# - .NET WebSockets 和 TCP_NODELAY

是否可以在 C#.NET 中构建一个 WebSocket 客户端,允许我在套接字上将 TCP_NODELAY 属性设置为 True(即禁用 Nagle)?我已经尝试了一堆似乎没有这个选项的 WebSocket 库。谢谢

0 投票
1 回答
975 浏览

linux - setsockopt(TCP_NODELAY,1):权限被拒绝

我的代码自 90 年代以来一直在工作,但现在在尝试关闭 Nagle 算法时在 Linux 上被拒绝权限。阅读手册页和谷歌搜索并没有说明原因。有任何想法吗?

0 投票
1 回答
70 浏览

linux - TCP_NODELAY 参数对 MSS 和 CPU 利用率的影响

当我尝试使用 netperf 编写测试套件时,我必须仔细阅读手册,在该手册中我遇到了以下行以供选择-D

如果使用 -D 设置 TCP_NODELAY 会影响发送大小 (-m) 大于 MSS 的测试的吞吐量和/或服务需求,则表明 TCP/IP 堆栈的 Nagle 算法实现可能被破坏,可能解释了 Nagle 算法一个段一个段的基础,而不是正确的用户发送一个用户发送的基础

我的问题是 - 设置 TCP_DELAY 及其对吞吐量的影响如何确定 nagle 实现被破坏?有人可以帮助我对此进行合乎逻辑的解释吗?