本文介紹 Windows 套接字應用程序可用的各類類型的傳輸控制協議 (TCP) 和用戶數據報協議 (UDP) 端口及其在 Windows XP 和 Windows Server 2003 中的範圍。服務器
TCP 和 UDP 使用端口號來標識源和目標應用程序。對於典型的客戶-服務器協議(例如那些用於 Web 和電子郵件訪問的協議),通訊是由客戶端計算機發起的。服務器應用程序一般監聽衆所周知的 TCP 或 UDP 端口,它們是由 Internet 號碼分配機構 (IANA) 分配的。對於源端口,客戶端應用程序一般查詢操做系統中已再也不由其餘應用程序佔用的動態分配的 TCP 或 UDP 端口。當應用程序請求然後綁定到一個動態分配的端口時,這就是一般所說的通配綁定。網絡
動態分配的端口也稱爲臨時端口。術語「臨時」(短暫)並 不表示端口的生存期必定很短。例如,用於超文本傳輸協議的端口在數據傳輸完成以後會當即關閉。臨時是指,與一般在整個服務器計算機運行期間都保持打開的服 務器應用程序端口相比,客戶端應用程序端口的生存期相對較短(至多隻在應用程序運行期間保持打開)。編輯器
客戶端計算機使用臨時端口而不是衆所周 知的端口,以防與可能使用衆所周知端口的本地服務發生衝突。例如,運行 Microsoft Windows XP 的計算機可能會使用 Internet Explorer,還可能運行 Internet 信息服務 (IIS)。當 Internet Explorer 訪問網頁時,它沒法將 TCP 端口 80 用做源端口,由於該本地端口可能已被 IIS 佔用。若是兩個應用程序都設計成獨佔使用同一端口,則一次只有其中一個應用程序可以成功運行。spa
在 Microsoft Windows XP 或 Windows Server 2003 中,由 Windows 套接字分配給應用程序的臨時 TCP 或 UDP 端口號的最大值是由註冊表設置 MaxUserPort 控制的,該參數的默認值爲 5000。臨時端口從端口號 1025 開始編號。所以,默認狀況下,Windows XP 或 Windows Server 2003 會爲執行通配綁定的應用程序分配一個範圍從 1025 到 5000 的號碼。操作系統
要在運行 Windows XP 或 Windows Server 2003 的計算機上更改臨時端口的最大值,請執行如下操做:設計
1.blog |
單擊開始,再單擊運行,鍵入 regedit.exe,而後單擊肯定。ip |
2.ci |
找到然後單擊如下注冊表子項:字符串 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 的計算機,下圖顯示了不一樣的端口範圍。