web-dev-qa-db-ja.com

どのポートを使用するかをどのように決定しますか?

いわばルールがないため、これは少し主観的です。サーバーを作成するたびに、「使用するのに最適なポートは何ですか?」 an答えは「ユーザーが変更できる限り」と思います。では、他の誰もがデフォルトのポートを選択する方法をどのように決定するのでしょうか?個人的には、HTTP関連の場合は8000などを使用するのが好きで、これはかなり一般的な傾向であることに気付きました。しかし、8000がすでに使用されている場合はどうなりますか? 8001を使用しますか?それは少しアドホックに思えますが、そうだと思います。

明らかに、この質問をしたのは私が初めてではありません。 IANAは ポート番号 リストを保持しています...これにより、未割り当ての範囲(48620-49150)に移動します。本当にこれらを使用するべきだと思いますが、なぜもっと多くのプログラマーがそうしないのですか?どちらを使用するかをどのように決定しますか。全員が1番から始めた場合、48620を使用します。

61
Nick Bolton

質問にはできる限り答えていると思います。あなたが言ったことを超えてここで従うことができる厳密なルールは本当にありません。しかし、一般的に:

  • IANAリストを見て、使用されていないポートを選択します。
  • 覚えやすいポート番号を選択してください。
  • コードのポート番号を修正しないでください。他の製品はあなたと同じポートを選択している場合があり、サーバー上で共存する必要がある時期がわからないので、必要に応じて再コンパイルせずに変更できるように、ポート番号を構成ファイルのどこかに置きます。ポート番号を変更する機能は、ファイアウォールを再構成せずにファイアウォールを通過するのにも役立ちます。 (構成ファイルが存在しない場合は、選択した値をいつでもデフォルトに設定できます。)
  • 一時ポート に使用される範囲と競合する可能性があるため、高すぎる値を選択したくないという議論があります。これに遭遇する可能性は低いですが、発生したときにデバッグするのは難しい問題です。

(そして、覚えやすいポート番号を選ぶためのヒントが必要な場合は、同僚の内線番号に基づいてポート番号を覚えていた人と一緒に仕事をしたことがあります。)

32
Dave Webb

覚えやすく、適切に割り当てられていない(IANAごとの)ポート:

27182(e)

31415(パイ)

60221(アバガドロ)

16
Cooper

テスト中...常にポート#666;)

8
Aistina

どうですか:

defaultPort = (new Random()).Next(48620, 49150);
1
Benny Jobigan

私はこの方法を好む:(Pythonコードは以下)

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

そして、私は私が最も好きな番号を選びます。または、許容範囲の数値にさらに厳しい制限がある場合は、範囲を変更します。

1
Sarge Borsch

他のオペレーティングシステムプロセスにヒットしてエフェメラルポートを割り当てる可能性があるため、5桁のような大きな番号のポートを使用しないことをお勧めします。その制限により、「使用中のエラー」が発生し始めます。

0
mani_nz

Googleで簡単に検索して明確にした後、私は通常、個人的な重要性をいくつか選択します。

0
James Cronen

あなたは自分の質問に答えましたか?割り当てられていないポートを選択し、ユーザーが変更できるようにします。

0
fupsduck