透過防火牆與 SQL 通訊所需要的 TCP/IP 連接埠號碼

文章翻譯 文章翻譯
文章編號: 287932 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

本文說明 Microsoft SQL Server 透過防火牆通訊所需要的 TCP/IP 連接埠號碼。預設的 SQL Server 連接埠值為 1433,而指派給用戶端連接埠的則是是介於 1024 和 5000 之間的隨機值。

如需有關 SQL Server 所需連接埠號碼的詳細資訊,請參閱本文<其他相關資訊>一節。

其他相關資訊

SQL Server 是 Winsock 的應用程式,它使用通訊端網路程式庫,可透過 TCP/IP 通訊。SQL Server 會在特定的連接埠聽候傳入的連線。預設的 SQL Server 連接埠為 1433。連接埠值不一定要是 1433,但 1433 是 SQL Server 的正式 Internet Assigned Number Authority (IANA) 通訊端號碼。

用戶端應用程式使用用戶端網路程式庫 Dbmssocn.dll (或者 SQL Server 2000 則使用 Dbnetlib.dll) 與 SQL Server 通訊,並使用 Microsoft Data Access Components (MDAC) 2.6 與任何用戶端通訊。

當用戶端建立了 TCP/IP 連線時,三向交握就此展開。用戶端會開啟來源連接埠,並傳送流量到預設值為 1433 的目的連接埠。使用中的用戶端來源連接埠是隨機的,但值會比 1024 來得大。根據預設,當應用程式向系統要求通訊端並發出輸出呼叫時,其值介於 1024 和 5000 之間的連接埠號碼就會供應。如需詳細資訊,請參閱下列 Microsoft 網站:
Microsoft Windows 2000 TCP/IP 執行方式詳細資料 (英文)
伺服器 (此案例中,也就是 SQL Server) 就透過從連接埠 1433 傳送流量回到用戶端建立的連接埠來與用戶端通訊。

觀察此行為的最佳方式就是使用「Microsoft 網路監視器」或網路窺探工具,以追蹤用戶端對伺服器的通訊。若要設定防火牆,您必須允許從連接埠 *任何大於 1024 的連接埠值* 傳送到 1433 的資料流量,以及從連接埠 1433 傳送到 *任何大於 1024 的連接埠值* 的資料流量。

除了使用 Microsoft 網路監視器之外,你您也可以使用 TCP/IP Netstat 公用程式來完成這項操作。從 MS-DOS 命令視窗向 Netstat 執行命令會產生下列結果,顯示三個已建立至 SQL Server 的連線。這個範例使用 157.54.178.42 當做 SQL Server 的 IP 位址,而使用 157.54.178.31 做為用戶端的 IP 位址。用戶端開啟的連接埠分別是 1746,1748 以及 1750。?
Proto   Local Address          Foreign Address        State
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 到 *任何大於 1024 的連接埠值* 連線設定為「已建立」。藉由完整的封包檢查,認可同步完成後,就會動態開啟回應連接埠。

沒有方法可以限制 SQL Server 用戶端用來連線的來源 TCP 通訊埠數目;這樣會違反讓用戶端可以配置到全新、未使用之動態通訊埠的目的。這是為 Winsock 應用程式定義的 TCP/IP 標準,並非 SQL Server 用戶端通訊的限制。

此外,SQL Server 2000 具名執行個體預設會使用動態的目的通訊埠。在設定防火牆之前,應該先將此通訊埠改為固定的通訊埠。您可以使用「SQL Server 網路公用程式」設定目的通訊埠。如需有關如何使用「SQL Server 網路公用程式」的詳細資訊,請參閱《SQL Server 線上叢書》。

否則,用戶端電腦就需要開啟隨機的 UDP 通訊埠,並且將使用伺服器 UDP 通訊埠 1434 傳送執行個體名稱,而且如果此執行個體是叢集的,那麼也會傳送 SQL 執行個體的版本、此執行個體接聽的 TCP 通訊埠編號,以及此執行個體所使用的具名管道。然而,如果您的目標是要將防火牆上開啟的通訊埠數目減到最少,則應該為預設執行個體與任何具名執行個體選擇靜態通訊埠編號。用戶端電腦需要設定為連線至特定 ServerName 或 ServerName 執行個體和特定通訊埠編號。

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
216415 如何將 SQL Server 與 Proxy Server 設定
(機器翻譯)
148942 如何使用網路監視器擷取網路流量
169292 讀取 TCP/IP 追蹤的基本知識
(機器翻譯)
269882 HOWTO:使用 ADO 連接到防火牆之後的 SQL 伺服器

屬性

文章編號: 287932 - 上次校閱: 2013年12月6日 - 版次: 7.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbsqlsetup kbinfo KB287932
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