用于在 Windows 中控制 TCP 确认 (ACK) 行为的新注册表项

本文介绍 TcpAckFrequency,这是一个新的注册表项,用于确定) ACK (TCP 确认数。

适用于:Windows 10 - 所有版本,Windows Server 2012 R2
原始 KB 编号: 328890

摘要

TcpAckFrequency 是一个注册表项,用于确定在忽略延迟 ACK 计时器之前将未完成的 TCP 确认 (ACK) 数。

更多信息

如 RFC 1122 中指定的,TCP 使用延迟确认来减少在媒体上发送的数据包数。 Windows 中的 TCP 采用一种常见方法来实现延迟确认,而不是为每个收到的 TCP 段发送确认。 当 TCP 在特定连接上接收数据时,仅当满足以下条件之一时,它才会发送回确认:

  • 未为收到的上一段发送确认。
  • 收到段,但该连接在 200 毫秒内没有其他段到达。

通常,除非延迟的 ACK 计时器 (200 毫秒) 过期,否则会为连接上接收的每个其他 TCP 段发送确认。 可以通过编辑以下注册表项来调整延迟的 ACK 计时器。

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的更多信息,请单击下面的文章编号查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows 中备份和还原注册表

子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<接口 GUID>
条目: TcpAckFrequency
值类型:REG_DWORD、数字
有效范围:0-255
默认:2
说明:指定在忽略延迟的 ACK 计时器之前未完成的 ACK 数。 Microsoft 不建议在不仔细研究环境的情况下更改默认值。

如果将值设置为 1,则会立即确认每个数据包,因为仅收到一个段,因此只有一个未完成的 TCP ACK。 值 0 (零) 无效,被视为默认值 2。 当未收到段且主机不确认数据时,ACK 编号为 0 的唯一时间。