关于修改Tcp的几个参数来提高延迟敏感应用的心得

本文介绍了如何通过修改Windows操作系统的TCP参数来减少延迟,特别是在延迟敏感的应用场景中。具体包括设置TCPNoDelay注册表值为1,以及调整TcpAckFrequency以实现更快的ACK响应。这些改动有助于在接收到数据段后立即发送ACK,从而提高系统响应速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于修改Tcp的几个参数来提高延迟敏感应用的心得

在一个Tcp通信的实例里,需要通信的双方在接收到对方报文的时候回应一个Ack。但是,标准的Tcp/ip协议栈在收到对方的数据包时并不会立即回应一个Ack,而是会开启一个200ms的定时器来判断,200ms以后才会发送这个Ack。
那么如何来压缩这个时间来提高延时敏感应用的效果呢。

   以windows操作系统为例:
   regedit打开注册表:
   打开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters
   在右边窗口点右键,添加新的DWORD值,命名为TCPNoDelay,然后右键点击它,选择“改变”,把值设为1。
   点击“完成”,关掉注册表编辑器

   TcpAckFrequency

TcpAckFrequency 值确定了 TCP/IP 发送应答消息的频率。

如果值为 2,则 TCP/IP 将在接收到 2 个分段后发送应答,或是在接收了 1 个分段但在 200 毫秒内没有接收到其他分段的情况下发送应答。
如果值为 3,则 TCP/IP 将在接收到 3 个分段后发送应答,或是在接收了 1 个或 2 个分段但在 200 毫秒内没有接收到其他分段的情况下发送应答。
以此类推。
如果需要通过消除 TCP/IP 应答延迟来缩短响应时间,则将该值设为 1。在这种情况下,TCP/IP 会立即发送对每个分段的应答。如果您的连接主要用于移动大量数据,而 200 毫秒的延迟并不重要,则可以减小该值以降低应答的开销。

缺省情况下,Windows 使用值 2(每隔一个分段应答一次)。该值的有效范围是 0 到 255,其中 0 表示使用缺省值(2)。

     TcpAckFrequency的修改方法
     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\

下面会列出许多本机的网络接口,找到你连入互联网的那个网卡项(即绑定本机IP的那个项),在右边的窗口点鼠标右键,添加一个新的DWORD值,命名为TcpAckFrequency,然后右键点击这个字串,选择“改变”,把数值设为1。

    全部改完以后,重启你的pc即可生效。
    这种方法适用于对于延迟敏感的tcp应用有效。
如何修改TCP/IP并发连接数,网络上提供不少修改办法,但其中有不少是行通的,本文将做详细分析. 一、注册表修改法的误区 为了突破SP2对TCP并发连接数的限制,网上曾经流传过一种修改注册表的方法,操作步骤如下: 单击“开始”/运行,输入Regedit打开注册表,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,修改的“TcpNumConnections”的键值,将之由10改为150,即设置TCP最大并发连接数为150。 经过实际测试,我们发现该方法看起来有效,但实质上并不能突破并发连接数限制,提高SP2的多线程访问速度。因为SP2对线程数目的控制,是通过“Tcpip.sys”这个系统文件来实现的,并不是通过注册表实现的,因此,该方法不能增加SP2的TCP并发连接数。 二、使用工具来替换Tcpip.sys 为了突破SP2的TCP并发连接数限制,正确地方法是修改Windows XP SP2的系统文件Tcpip.sys。Tcpip.sys是Windows XP SP2重要的系统文件,位于“C:\Windows\system32\drivers目录下。该文件由于平时受到系统保护,所以正常情况下你是无法替换它的,必须在安全模式或纯DOS模式下才能替换,建议你使用以下专门工具、来替换“Tcpip.sys”文件,操作步骤如下: 从网上http://www.lvllord.de/download.php?url=en/EvID4226Patch223d-en.zip下载替换工具(仅为30KB),用它来修改系统文件Tcpip.sys最大安全并发连接限制;然后备份一下C:\Windows\system32\drivers\Tcpip.sys文件。 接下来,双击打开下载文件ZIP压缩包,运行其中的替换工具EvID4226Patch.exe,随之将弹出一个命令行提示符窗口,首先显示Windows当前的Tcpip.sys文件版本,以及并发连接的限制数值(默认为10);接着询问你是否将连接数限制在50,你可以选择“Yes/No/Change”,如果你输入“Y”,则会将并发连接数改为“50”,如果想改为其他数(例如150),可以在提示符后输入“c”,然后输入最大的并发连接数(例如150)回车,最后在提示符下输入“Y”并回车,这样就替换了Tcpip.sys文件;Tcpip.sys文件被替换后,随之会弹出系统文件保护对话框,你可以点击“取消”按钮,然后点击“是”按钮,重新启动后,Tcpip.sys文件的替换就大功告成了! 现在你的最大并发连接数已超过10个,达到了150个,因此Windows XP SP2的多线程访问速度得到了提升,当你用FlashGet、BT等多线程下载时,就不会感到网络带宽的限制了。 三、DOS下修改Tcpip.sys文件 以上替换程序EvID4226Patch.exe也可以在DOS下使用,方法是:首先把EvID4226Patch.exe拷贝到C盘根目录下;然后再进入DOS模式,进入C盘根目录,输入命令EvID4226Patch/L=$n$/w=C:\WINDOWS\system32\drivers/L=tcpip.sys即可修改Tcpip.sys文件。 注意:以上$n$为你要设置的最大安全连接数,假如要把最大并发连接数设置为150个线程,那么输入命令EvID4226Patch/L=150/w=C:\WINDOWS\system32\drivers/L=tcpip.sys即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值