2008-10-20 72 views
23

我已經編寫了由Windows服務託管的WCF服務,它需要偵聽已知的TCP/IP端口。從哪個範圍可以安全地分配一個端口供我的組織使用?該端口將嵌入到服務的配置文件以及使用該服務的客戶端中。爲內部應用程序使用分配TCP/IP端口

+0

重複的http://stackoverflow.com/questions/10476987/best-tcp-port-number-range-for-internal-applications – matt2000 2014-10-21 12:30:48

+0

這是一個有用的問題,和其他答案者作出「良好的情況下接受「(由喬治費雷拉回答)是不正確的,或者至少是不完整的,關於這是重複的問題的答案也是如此。是否有可能「不接受」這個答案? – 2017-12-17 15:33:04

回答

26

選擇從49152端口號到65535

IANA發佈的當前分配端口的列表。

http://www.iana.org/assignments/port-numbers

動態和/或私有端口是從49152到65535。這是你應該選擇最符合您的內部應用程序的端口範圍。當然,可以使用屬於已發佈列表中未分配範圍之一的任何端口。但請注意,通過從未分配的範圍中選擇一個端口號,不能保證您選擇的端口將來不會成爲保留端口。

未分配的端口號不應該是 已用。在您申請 後,IANA將爲該端口分配號碼 已獲得批准。

,並確保當你說你選擇的端口號是可配置的:

該端口將被嵌入在 配置文件服務和 客戶所消耗 服務。

這樣可以避免某些其他第三方軟件無法使用您的端口號時頭疼的問題。如果發生這種情況,您只需繼續並在配置文件中對其進行更改即可。

+5

_另一方面,應用軟件絕不能假定動態端口範圍內的特定端口號始終可用於通信,並且該範圍內的端口號因此不得**用作服務標識符。[RFC 6335](http://tools.ietf.org/html/rfc6335#page-20) – Bolu 2014-09-22 10:39:49

0

這是一個很好的list of common application ports。在一個空的插槽中做出自己的選擇。也許您還應該掃描您的網絡以獲取任何內部特殊應用程序。

通常情況下,高數字端口是可用的,我會建議他們,但他們可能被防火牆阻止。

+0

鏈接已損壞。請修復 – German 2017-06-16 14:16:47

3

除了關於選擇通用應用程序端口的其他建議之外,我建議您在應用程序中配置端口。硬編碼的端口號是一個糟糕的主意,特別是如果您稍後發現端口與另一個應用程序衝突並需要更改您的端口號。

4

簡答題:避免任何事情,包括1023或超過49152,並測試所選的端口對網絡上的服務。

如果您已經採取了合理的預防措施(將端口號碼置於配置文件中),如果您稍後發現衝突應該不會造成巨大的中斷。

但是(爲了讓我可以在打字時彈出的其他建議添加一些內容),請確保您輕鬆地更改!如果它在配置文件中,請使其明顯。記錄並在故障排除時指出。這是可能出錯的事情,所以如果需要更改,可以很容易地進行調試。

0

請注意,請記住通過netstat/a/n檢查這些端口是否由其他應用程序使用。我發現Vista使用了49152 ....因爲某些應用程序級別的原因。基本上,因爲大多數系統級偵聽器沒有實現端口共享,所以使用那些根本不使用的端口是非常安全的。

有很好的編程天 阿米爾

17

端口0-1023是衆所周知的端口,並且由IANA分配。這些應該只用於公共網絡上分配的協議。

端口1024-65535以前稱爲註冊端口號(請參閱rfc1700),但現在分爲兩個區域(請參閱rfc6335)。

端口1024-49151是用戶端口,用於您自己的協議。

端口49152-65535是動態端口,不應規定爲協議。

用戶端口可以用於任何協議,但有一個有限的號碼,所以你的使用將與別人在某個網絡上使用某人的衝突。 IANA保留註冊端口號碼(0-49151)的記錄。如果您的協議將用於公共網絡,那麼您需要考慮向IANA註冊。如果您只在自己的網絡中使用它,請在該區域內選擇一個端口(1024-49151),然後檢查該端口與IANA register,以確保它不被可用於網絡的協議所使用。對於私人用途,選擇分配給您知道不會使用的協議的號碼比選擇未分配的號碼可能更好,因此未來可能會分配該號碼。

請勿在動態範圍內使用端口號。這些端口由操作系統動態分配,並且有些隨機。如果您打開客戶端連接(使用port = 0的bind()),您將被分配一個未使用的動態範圍端口。無法保證此範圍內的端口對您的協議始終是免費的。