未使用的端口信息: Winsock TCP 连接性能

文章翻译 文章翻译
文章编号: 175523 - 查看本文应用于的产品
展开全部 | 关闭全部

概要

本文讨论如何 TCP 上的各种 Winsock 实施Microsoft 平台控点建立套接字连接到不具有的端口倾听他们的服务器。它还介绍了有关性能-考虑事项,以及如何根据您的需要进行调整。

更多信息

当进程创建 TCP 套接字在 Microsoft Winsock 层和发出某些主机和端口号,TCP 协议 connect() 调用执行其标准"三次握手"的 SYN 数据包,确认通过 ACK/SYN,并且最后的 ACK,在目标主机中的开始客户端。但是,根据 RFC 793 (传输中所述 TCP 规范控制协议),可能会生成一个重置 (RST),如果 SYN 尝试发往存在于主机,但未使用的端口。这是最好的通过下面的 RFC 报价,从第 35 页所述:
重置代

一段到达时必须作为一般规则是,发送重置 (RST)这显然不是当前连接。重置必须不会发送如果不清楚这种情况...

如果连接不存在 (关闭),然后发送重置在向除另一个重置任何传入段的响应。特别是通过此方法不会拒绝 SYNs 定址到不存在连接。

重置处理 [第 36 页]

...在 SYN 发送状态 (RST 响应收到初始 SYN) RST 是可接受如果 ACK 字段确认 SYN.
在从目标主机,客户端收到 ACK/RST 客户端确定存在有侦听确实没有服务。在中TCP 的 Microsoft Winsock 实施,挂起的连接将保留试图发出 SYN 数据包,直至达到最大重试值 (设置在注册表中,此值默认为 3 个额外的时间)。ACK/RST 自接收到从目标主机,TCP 层知道,在目标主机是否确实可以访问,并将不增加一倍的数据包中的超时值IP 标头,因为在连接尝试与未确认的过程中是标准SYNs。相反,挂起的连接将等待的基本连接超时值,然后重新发出另一个启动连接的 SYN 数据包。作为长收到 ACK/RST 包从一个未使用的端口时,超时值值会增加,此过程将重复,直到最大重试值为止。

此行为可能会导致性能很差如果由于某种原因进程重复发出不包含任何内容,侦听的端口 connect() 调用导致该错误 WSAECONNREFUSED。请注意,与其他实现的 TCP,如那些在许多 UNIX 系统中,常见的connect() 在第一个 ACK RST 收到后立即失败数据包,导致错误的速度非常快。但是,这行为未指定的 Rfc 中并且仍为每个实施决定。Microsoft 平台的方法是,系统管理员可以自由地调整为 TCP 与性能相关的设置他们自己品位,最大值即试该默认值为 3。"这样的优点是可能必须要达到的服务临时关闭并在 SYN 尝试之间可能会 resurface。在此很方便 connect() 等待足够长的时间来获得的情况下,由于该服务实际上已有的连接。

它包含 NT TCP 注册表值的完整列表。特定的感兴趣的关键是:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

密钥: TcpMaxConnectRetransmissions
值类型: REG_DWORD-数字
有效范围: 0-0xFFFFFFFF
默认值: 3 (在 Windows NT)
(在 Windows 2000) 的默认值: 2
说明: 此参数确定 TCP 将重试次数中止前重新传输连接请求 (SYN)尝试。重新传输超时加倍与每个在给定的连接尝试中连续重新传输(在上面讨论的情况除外)。初始超时值 (因为 ACK/RST 的时间是 3 秒接收到上述的情况下,这是不相关)。
在 Windows 95 TCP 注册表项上的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
158474 Windows 95 TCP/IP 注册表项
特别感兴趣的是以下项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD\MSTCP

密钥: MaxConnectRetries
值类型: 双字节的 32 位数字
默认值: 3
说明: 指定的次数 (SYN) 的连接尝试将会放弃之前重新传送。初始重新传输超时为 3 秒 (不在相关上述情况) 中,它是成对使用 (每次以上是一个例外) 最多 2 分钟。
调整两个注册表值后,重新启动计算机。

警告: 修改这些值会影响所有 TCP 传出连接请求,从受影响的计算机。如果所有计算机上的 TCP 活动有很少的延迟和小距离旅行往返,减少为低为零 (尽管 Microsoft 建议不要这样) 将使没有差别。但是,如果应用程序或连接尝试失败定期与标准的 Winsock 错误并且已知的目标远程服务器不可用,可能是这些注册表项是导致。如果是这样,您可能不得不引发最大值重试次数,以使 TCP 将双 SYN 数据包的生存时间值在后续重试次数,直至其 IP 标头中有足够长的生命周期访问目标主机和接收 ACK/SYN.

参考

RFC-793,传输控制协议,1981 年 9 月

白皮书、 Microsoft Windows NT: TCP/IP 实现的详细信息 1996知识文库文章 158474

属性

文章编号: 175523 - 最后修改: 2011年5月26日 - 修订: 2.0
这篇文章中的信息适用于:
  • Microsoft Win32 Application Programming Interface
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 Service Pack 2?当用于
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
  • Windows Server 2008 for Itanium-Based Systems
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
  • Windows Web Server 2008
  • Windows Vista Service Pack 2?当用于
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Starter
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
  • Windows Vista Service Pack 1?当用于
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Starter
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
  • Microsoft Windows Server 2003 Service Pack 2?当用于
    • Microsoft Windows Server 2003 Standard Edition
    • Microsoft Windows Server 2003 Enterprise Edition
    • Microsoft Windows Server 2003 Datacenter Edition
    • Microsoft Windows Server 2003 Web Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows XP Service Pack 3?当用于
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional Edition
  • Microsoft Windows 2000 Service Pack 4
  • Microsoft Windows 98 Standard Edition
关键字:?
kbapi kbinfo kbnetwork kbwinsock kbmt KB175523 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 175523
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com