Windows TCP/IP 臨時、保留和封鎖端口行爲

導言

TCP 和 UDP 使用端口號來標識源和目標應用程序。對於典型的客戶-服務器協議(例如那些用於 Web 和電子郵件訪問的協議),通信是由客戶端計算機發起的。服務器應用程序通常監聽衆所周知的 TCP 或 UDP 端口,它們是由 Internet 號碼分配機構 (IANA) 分配的。對於源端口,客戶端應用程序通常查詢操作系統中已不再由其他應用程序佔用的動態分配的 TCP 或 UDP 端口。當應用程序請求而後綁定到一個動態分配的端口時,這就是通常所說的通配綁定。

動態分配的端口也稱爲臨時端口。術語“臨時”(短暫)並不表示端口的生存期一定很短。例如,用於超文本傳輸協議的端口在數據傳輸完成之後會立即關閉。臨時是指,與通常在整個服務器計算機運行期間都保持打開的服務器應用程序端口相比,客戶端應用程序端口的生存期相對較短(至多隻在應用程序運行期間保持打開)。

客戶端計算機使用臨時端口而不是衆所周知的端口,以防與可能使用衆所周知端口的本地服務發生衝突。例如,運行 Microsoft Windows XP 的計算機可能會使用 Internet Explorer,還可能運行 Internet 信息服務 (IIS)。當 Internet Explorer 訪問網頁時,它無法將 TCP 端口 80 用作源端口,因爲該本地端口可能已被 IIS 佔用。如果兩個應用程序都設計成獨佔使用同一端口,則一次只有其中一個應用程序能夠成功運行。


 

臨時端口

在 Microsoft Windows XP 或 Windows Server 2003 中,由 Windows 套接字分配給應用程序的臨時 TCP 或 UDP 端口號的最大值是由註冊表設置 MaxUserPort 控制的,該參數的默認值爲 5000。臨時端口從端口號 1025 開始編號。因此,默認情況下,Windows XP 或 Windows Server 2003 會爲執行通配綁定的應用程序分配一個範圍從 1025 到 5000 的號碼。

//DZ論壇出現數據連接崩潰的情況,可以試一下以下增加臨時端口的做法

原因:默認的臨時 TCP 端口的最大數量太少僅爲 5000,
 L解決辦法:增加臨時端口的最大數量:65534

解決步驟:
默認的臨時 TCP 端口的最大數量是 5000"適用於"。在這些產品中已添加新參數。若要增加臨時端口的最大數量,請按照下列步驟操作:
1.啓動註冊表編輯器。
2.在註冊表中,找到以下註冊表子項,然後單擊參數(開始-運行-regedit)找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

3.在編輯菜單上單擊新建,然後添加以下註冊表項:值名稱: MaxUserPort
值類型: 雙字節(DWORD)

4.退出註冊表編輯器,然後重新啓動計算機。

要在運行 Windows XP 或 Windows Server 2003 的計算機上更改臨時端口的最大值,請執行以下操作:

1.

單擊開始,再單擊運行,鍵入 regedit.exe,然後單擊確定

2.

找到而後單擊以下註冊表子項:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters

3.

編輯菜單上,指向新建,然後單擊雙字節值

4.

鍵入 MaxUserPort,然後按 ENTER。

5.

雙擊 MaxUserPort 值,然後以十進制或十六進制鍵入最大值。

鍵入的數值必須在 5000¨C65534(十進制)之間。如果此參數設置的值超出有效範圍,則使用最接近的有效值(5000 或 65534)。

6.

單擊確定

7.

退出註冊表編輯器。

警告 如果錯誤使用註冊表編輯器,可能會導致嚴重問題以至於需要您重新安裝操作系統。Microsoft 無法保證您能夠解決由於錯誤使用註冊表編輯器而引起的問題。您必須自行承擔使用註冊表編輯器所帶來的風險。

必須重新啓動計算機,方可使 MaxUserPort 註冊表設置更改生效。

如果應用程序使用通配綁定同時打開大量連接,可能只需更改這個值,而且需確保應用程序不會用盡可用的臨時端口。例如,一個使用文件傳輸協議 (FTP) 傳輸大量小文件的數據備份應用程序就可能用盡臨時端口。


 

端口保留

通過端口保留,應用程序可以阻止一定範圍內的端口在通配綁定期間被分配。然而,保留某一端口範圍並不會阻止應用程序在保留的範圍內執行特定的綁定(請求使用特定端口)。保留端口範圍時,所選擇的端口號連續範圍必須是從 1025 到 MaxUserPort 設置值(默認值爲 5000)或從 49152 到 65535。多個客戶端應用程序可保留相同的範圍。取消保留(刪除保留)時,Windows 套接字會刪除它找到的第一個完全包含在取消保留請求內的條目。

還可以執行以下操作,通過註冊表來指定保留端口的範圍:

1.

單擊開始,再單擊運行,鍵入 regedit.exe,然後單擊確定

2.

找到而後單擊以下註冊表子項:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters

3.

編輯菜單上,指向新建,然後單擊多字符串值

4.

鍵入 ReservedPorts,然後按 ENTER。

5.

雙擊 ReservedPorts 值,使用以下語法鍵入端口範圍:x-y

要指定單個端口,請對 x 和 y 使用相同的值。例如,要指定端口 4000,請鍵入 4000-4000

6.

單擊確定

7.

退出註冊表編輯器。


 

端口封鎖

通過端口封鎖,應用程序可以防止其他應用程序執行對指定範圍內端口的特定綁定。封鎖端口範圍時,應用程序所選擇的連續端口號範圍必須介於 MaxUserPort 設置值(默認值爲 5000)+ 1 與 49151(對於未安裝服務包的 Windows XP 和 Windows Server 2003)或 65535(對於 Windows Server 2003 Service Pack 1)之間。不能存在到封鎖端口範圍內端口的現有綁定。Windows 套接字會以句柄形式返回封鎖範圍內的最後一個端口號。解除封鎖(取消封鎖)時,Windows 套接字會解除與解除封鎖請求具有相同左邊界的封鎖範圍。


 

端口範圍

對於運行未安裝服務包的 Windows XP 或 Windows Server 2003 的計算機,下面給出了不同的端口範圍:

衆所周知的端口範圍(由 IANA 保留):0 到 1023

臨時端口範圍(對於通配綁定):1025 到 MaxUserPort 註冊表設置值

可用作特定端口(對於特定綁定):從 0 到 65535 的任何未封鎖端口

保留端口的可用範圍:1025 到 MaxUserPort 以及 49152 到 65535

封鎖端口的可用範圍:MaxUserPort + 1 到 49151(除非 MaxUserPort 的值設置爲 49152 或更高,這種情況下沒有可封鎖端口範圍)

對於運行未安裝服務包的 Windows XP 或 Windows Server 2003 的計算機,下圖顯示了不同的端口範圍。

端口範圍

儘管將衆所周知的端口範圍、可保留的端口範圍以及可封鎖的端口範圍分開是很有意義的,但有時需要將 MaxUserPort 設置爲高於 49152 的值並且需要封鎖端口。爲了給端口請求提供服務並保持向後兼容,Windows Server 2003 Service Pack 1 (SP1) 允許在保留範圍內封鎖端口。因此,對於 Windows Server 2003 SP1,範圍如下所示:

衆所周知的端口範圍(由 IANA 保留):0 到 1023

臨時端口範圍:1025 到 MaxUserPort 註冊表設置值

可用作特定端口:從 0 到 65535 的任何未封鎖端口

保留端口的可用範圍:1025 到 MaxUserPort 以及 49152 到 65535

封鎖端口的可用範圍:MaxUserPort + 1 到 65535

對於運行帶 SP1 的 Windows Server 2003 的計算機,下圖顯示了不同的端口範圍。


 


 

端口範圍
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章