INF:通过防火墙与 SQL Server 进行通信所需的 TCP 端口

文章编号: 287932 - 查看本文应用于的产品
本文的发布号曾为 CHS287932
展开全部 | 关闭全部

概要

本文介绍通过防火墙与 SQL Server 进行通信所需的最少的 TCP/IP 端口。

更多信息

SQL Server 是 Winsock 应用程序,它使用套接字网络库通过 TCP/IP 进行通信。SQL Server 侦听特定端口上的传入连接;SQL Server 的默认端口是 1433。该端口不必是 1433,但 1433 是用于 SQL Server 的正式 Internet 号码分配机构 (IANA) 套接字编号。

客户端应用程序使用客户端网络库 Dbmssocn.dll(对于 SQL Server 2000 则为 Dbnetlib.dll)与 SQL Server 通信,使用 Microsoft 数据访问组件 (MDAC) 2.6 与任何客户端通信。

客户端建立 TCP/IP 连接时,会进行三向握手。客户端打开一个源端口并向目标端口(默认情况下是 1433)发送通信量。使用中的客户端源端口是随机的,但它大于 1024。默认情况下,在应用程序从系统为传出呼叫请求套接字时,会提供一个介于值 1024 和值 5000 之间的端口。有关详细信息,请访问下面的 Microsoft Developer Network (MSDN) 网站的“Microsoft Windows 2000 TCP/IP 实现详细信息”:
http://www.microsoft.com/technet/itsolutions/network/deploy/depovg/tcpip2k.mspx
然后服务器(在本例中是 SQL Server)通过将通信量从 1433 发送回客户端建立的端口与客户端通信。

观察此行为的最佳方式是通过使用 Microsoft 网络监视器或网络嗅探器工具,跟踪客户端与服务器之间的通信。要配置防火墙,您必须允许从 *ANY* 到 1433 和从 1433 到 *ANY* 的通信量,其中 *ANY* 是一个大于 1024 的端口。
*ANY* -> 1433
1433 -> *ANY*
除了使用 Microsoft 网络监视器之外,您还可以使用 TCP/IP Netstat 实用工具说明此操作。通过从 MS-DOS 命令窗口发出 netstat -an 命令,可以生成以下结果,显示三个与 SQL Server 已建立的连接。此示例使用 157.54.178.42 作为 SQL Server 的 IP 地址,使用 157.54.178.31 作为客户端 IP 地址。客户端打开的端口分别是 1746、1748 和 1750。
协议	本地地址			外部地址			状态
TCP    157.54.178.42:1433     0.0.0.0:0              LISTENING
TCP    157.54.178.42:1433     157.54.178.31:1746     ESTABLISHED
TCP    157.54.178.42:1433     157.54.178.31:1748     ESTABLISHED
TCP    157.54.178.42:1433     157.54.178.31:1750     ESTABLISHED
					
防火墙软件应该通过使用规则允许进行此动态分配。如果它允许进行此动态分配,则您可以配置已建立的 1433 -> *ANY*;通过全状态的数据包检查,在进行 syn(同步)并随后进行 syn/ack(同步/确认)后将动态打开响应端口。

没有任何方法可以限制用于要连接的 SQL Server 客户端的源 TCP 端口的数目;因此,客户端将不必分配新的、不使用的动态端口。这是为 Winsock 应用程序定义的 TCP/IP 标准,而不是 SQL Server 客户端通信的限制。

此外,SQL Server 2000 的命名实例默认情况下将使用动态目标端口。此端口应在配置防火墙前更改为固定端口。应使用 SQL Server Network 实用工具来配置目标端口。有关如何使用 SQL Server 网络实用工具的信息,请参见“SQL Server 联机图书”。

否则,客户机必须打开随机的 UDP 端口,并且将使用服务器 UDP 端口 1434 来发送实例名称;如果该实例是群集的,则发送 SQL 实例的版本、该实例正侦听的 TCP 端口号以及该实例正使用的命名的管道。但是,如果目的在于使防火墙上打开的端口的数目降至最低,则应选择静态的端口号来用于默认的实例和任何命名的实例。将需要把客户机配置为连接到特定 ServerName 或 ServerName 实例和特定端口号。

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
216415 如何使用 Proxy Server 安装 SQL Server
148942 如何使用网络监视器捕获网络通讯量
169292 关于读取 TCP/IP 跟踪的基础知识
269882 如何使用 ADO 连接到防火墙后的 SQL Server

属性

文章编号: 287932 - 最后修改: 2011年5月16日 - 修订: 6.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 6.5 标准版
  • Microsoft SQL Server 7.0 标准版
  • Microsoft SQL Server 2000 标准版
关键字:?
kbsqldeveloper kbinfo KB287932
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈