← 回到文章列表

修改TCP ACK 以减少FFxiv游戏延迟

TCP本身属面向链接的通讯协议 通讯双方的每壹个收发动作 需要以通讯链路正常为前提 因此TCP协议内部提供了默认的ACK验证机制 假定A、B之间存在壹条TCP通讯链路 某壹时刻A第壹次向B发送数据 而之后B未主动向A发送数据 则约200ms之后 B会自动向A回发壹个…

TCP本身属面向链接的通讯协议
通讯双方的每壹个收发动作
需要以通讯链路正常为前提
因此TCP协议内部提供了默认的ACK验证机制
假定A、B之间存在壹条TCP通讯链路
某壹时刻A第壹次向B发送数据
而之后B未主动向A发送数据 则约200ms之后
B会自动向A回发壹个长度为1的ACK确认包
而A在未收到ACK确认包之前
不允许第二次向B发送数据
因此B第二次收到数据时
会莫名其妙的产生壹个约200ms的延时——ACK确认包默认的发送时延


从系统的资源管理器中我们可以发现
FFxiv在正常连接伺服器之后会建立两条TCP通道
而TCP通道的延时确是不一致并且不稳定
但是使用ICMP进行ping伺服器得到的回应却很稳定
这时候我们可以进行tcp ack设定
从而避免TCP的ACK机制带来的异样Lag
点击妳电脑屏幕左下角的“开始”菜单 打开“运行”
键入“regedit”打开妳的注册表编辑器
选择HKEY_LOCAL_MACHINE 项目开始壹层层的往下点
壹直到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ 这里是关于妳网卡的数据
有很多项 且它们都有类似于{B796DCA-FFE8-4002-A28F-4D2B57AE8383}这样的名字
但是正确的那个会在右边窗口显示包括妳的IP地址和妳的服务器IP地址等等网络设定
妳找到DhcpIPAddress项符合妳的本机IP地址的那个
那么它就是妳连接因特网的那个网卡的设定项
我们的任务目标就是改动它来提高客户端ACK包的发送频率
其次 右键点击窗口右边的空白处 “新建”-“DWORD值”
给它改名成“TcpAckFrequency”
然后右键点击它 选择"修改”
在那个"数值数据"的空白处填"1″(无论管是16进制,还是10进制)
最后 关闭注册表编辑器 重启电脑 修改完毕
有关TcpAckFrequency的补充说明:
TcpAckFrequency 值这个值确定了windows用TCP/IP 发送应答消息的频率
也就是决定了在发送“命令正确应答”之前将等候几个数据包
默认值为 2 这时TCP/IP 将在接收到 2 个分段后发送应答
或是在接收了 1 个分段但在 200 毫秒内没有接收到其他分段的情况下发送应答
如果值为 3 则 TCP/IP 将在接收到 3 个分段后发送应答
或是在接收了 1 个或 2 个分段但在 200 毫秒内没有接收到其他分段的情况下发送应答 以此类推
如果需要通过消除 TCP/IP 应答延迟来缩短响应时间 则将该值设为 1
在这种情况下 Windows将每收到壹个TCP数据包就回送壹个“命令正确应答”
该值的有效范围是 0 到 255,其中 0 表示使用缺省值(2)。

在这里找找

输入关键词,找一篇过去的记录。