如何在Linux中禁用Nagle的算法?

栏目: 编程工具 · 发布时间: 5年前

内容简介:有没有办法通过命令行执行此操作? man tcp告诉我我需要设置tcp_nodelay = 1,但我无法在/ proc / sys / net / ipv4下创建tcp_nodelay文件.如果有任何方法可以在Linux中禁用Nagle,请告诉我.翻译自:https://stackoverflow.com/questions/17842406/how-would-one-disable-nagles-algorithm-in-linux

有没有办法通过命令行执行此操作? man tcp告诉我我需要设置tcp_nodelay = 1,但我无法在/ proc / sys / net / ipv4下创建tcp_nodelay文件.如果有任何方法可以在 Linux 中禁用Nagle,请告诉我.

此标志(TCP_NODELAY)是一个可以基于每个套接字启用的选项,并在创建TCP套接字时应用.这样做是为了一个目的:Nagle的算法通常很有用,有助于处理网络拥塞.我怀疑你想在系统范围内禁用它,因为你的系统可能会遭受这种停用.

要为给定套接字禁用它,可以应用选项TCP_NODELAY,如C中的 herehere 所述:

int flag = 1;
int result = setsockopt(sock,            /* socket affected */
                        IPPROTO_TCP,     /* set option at TCP level */
                        TCP_NODELAY,     /* name of option */
                        (char *) &flag,  /* the cast is historical cruft */
                        sizeof(int));    /* length of option value */
 if (result < 0)
    ... handle the error ...

您可能必须适应您的编程语言,但基本上它将套接字sock的TCP_NODELAY标志选项设置为有效禁用Nagle的算法.这在任何支持TCP标准的套接字的操作系统上都有效.

如果您仍想在系统范围内禁用Nagle算法,可以使用两个选项.首先,您可以使用相应的标志重新编译内核(请参阅您的分发手册).第二个选项是创建一个软件,在每个现有连接上设置TCP_NODELAY标志,类似于 this code .每次在系统上创建新的TCP连接时,都应执行后一个选项.

有点清洁的是激活TCP的低延迟模式:

echo 1 > /proc/sys/net/ipv4/tcp_low_latency

这将提示TCP堆栈关于做出哪些决定以降低延迟(我猜这是你试图通过禁用Nagle算法来实现的).默认情况下,它设置为优化带宽(“/ 0”将从/ proc / sys / net / ipv4 / tcp_low_latency读取).

翻译自:https://stackoverflow.com/questions/17842406/how-would-one-disable-nagles-algorithm-in-linux


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

超级连接者:破解新互联时代的成功密码

超级连接者:破解新互联时代的成功密码

伊桑•祖克曼(ETHAN ZUCKERMAN) / 林玮、张晨 / 浙江人民出版社 / 2018-8-1 / CNY 72.90

● 我们生活在一个互联互通的世界,我们需要辩证地看待某些事件,发现隐藏在背后的真相。着眼当下,看清彼此之间的联系,而非凭空幻想未来世界联系之紧密。数字世界主义要求我们承担起责任,让隐藏的联系变成现实。 ● 我们对世界的看法是局限的、不完整的、带有偏见的。如果我们想要改变从这个广阔的世界所获取的信息,我们需要做出结构性的改变。 ● 建立联系是一种新的力量。无论是在国家层面、企业层面还是个......一起来看看 《超级连接者:破解新互联时代的成功密码》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具