2010-02-04 70 views
38

這是一個有點主觀,因爲沒有規則可以這麼說。每次我創建服務器時,我都會想,「什麼是最好的端口?」我猜答案是「任何,只要用戶可以改變它。」那麼,其他人如何決定如何選擇默認端口呢?就個人而言,如果它與HTTP相關,我喜歡使用類似8000的東西,並且我注意到這是一個相當普遍的趨勢。但是如果8000已經在使用了呢?使用8001?這似乎有點特別,我想它是。你如何決定使用哪個端口?

顯然我不是第一個問這個問題的人; IANA維持一個port numbers列表......這導致我進入未指定範圍(48620-49150)。我想我們應該真的在使用這些,但爲什麼沒有更多的程序員這樣做呢?你如何決定使用哪一個;如果每個人都從#1開始,那麼我們都將使用48620.

+1

+1回答你自己的問題 – fupsduck 2010-02-04 14:14:48

+1

謝謝 - 我想告訴大家我的思維過程,以便其他人可以打電話給我,如果我錯了。 – 2010-02-04 16:55:15

回答

20

我想你已經差不多回答了你的問題儘可能是可能的;沒有什麼嚴格的規定可以超越你所說的。但一般:

  • 看看IANA列表並選擇一個未使用的端口。
  • 選擇一個易於記憶的端口號。
  • 不要修復代碼中的端口號。某些其他產品可能選擇了與您相同的端口,並且您永遠不知道何時必須共存於服務器上,因此請將端口號置於某個配置文件中,以便在必要時可以更改而無需重新編譯。改變端口號的能力也可以幫助穿越防火牆而不必重新配置它們。 (如果配置文件不存在,您可以始終默認爲您選擇的值。)
  • 有一種觀點認爲,您不想挑選太高的東西,因爲您可能與用於ephemeral ports的範圍發生衝突。這不太可能會讓你受到影響,但是當它發生時,調試很難。

(如果你想有一個尖採摘難忘的端口號,有一次我和別人在他的同事的電話分機基於誰記得端口號的工作。)

+0

「看看IANA列表並選擇一個未使用的端口」或者只是選擇一個大的數字 – Patrick 2010-02-04 14:29:34

+2

顯然,在49152下有一大堆數據,我知道,我真的 – Patrick 2010-02-04 16:38:51

0

經過Google的快速搜索以確保它很清晰,我通常只選擇一些個人意義。

0

您是否回答了自己的問題?選擇任何未分配的端口並允許用戶更改它。

+0

感謝您的確認:) – 2010-02-04 16:56:29

6

在測試過程中始終...端口#666;)

+4

我認爲你總是以root身份運行? – 2010-02-04 16:26:59

+5

它爲Doom遊戲保留!你應該尊重它 – 2015-08-26 17:30:40

8

一些容易記住並適當討厭的未分配(每IANA)端口:

27182(E)

31415(PI)

60221(avagadro的)

0

如何:

defaultPort = (new Random()).Next(48620, 49150); 
0

我更喜歡這種方式:(下面的Python代碼)

#!/usr/bin/env python3 
import random as R 
r = R.SystemRandom() 
print([r.randrange(1024, 65535) for x in range(4)]) 

然後我挑,我最喜歡的號碼。 或者當然,如果您對可接受的數字有更嚴格的限制,請更改範圍。

0

我建議不要使用5位數的大數字的端口,因爲它可能會碰到其他操作系統進程並分配臨時端口。由於其侷限性,您將開始出現「已使用錯誤」。

相關問題