web-dev-qa-db-ja.com

社内アプリケーションで使用するTCP / IPポートの割り当て

WindowsサービスでホストされるWCFサービスを作成しましたが、既知のTCP/IPポートでリッスンする必要があります。組織内で使用するポートを安全に割り当てることができる範囲はどれですか。そのポートは、サービスとサービスを消費しているクライアントの構成ファイルに埋め込まれます。

40
Howard Pinsley

49152〜65535のポート番号を選択します。

IANAは、現在割り当てられているポートのリストを公開しています。

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

ダイナミックポートまたはプライベートポート、あるいはその両方は49152〜65535です。これは、社内アプリケーション用のポートを選択する必要がある範囲です。もちろん、公開リストの割り当てられていない範囲の1つに属する任意のポートを使用できます。ただし、これらの割り当てられていない範囲からポート番号を選択しても、選択したポートが将来予約ポートにならないという保証はありません。

未割り当てのポート番号は使用しないでください。 IANAは、アプリケーションが承認された後、ポートの番号を割り当てます。

また、選択したポート番号が指定したとおりに構成可能であることを確認してください。

そのポートは、サービスとサービスを消費しているクライアントの構成ファイルに埋め込まれます。

これにより、タッチできない他のサードパーティ製ソフトウェアがポート番号を使用している場合の問題を回避できます。その場合は、先に進んで構成ファイルを変更すれば、問題なく動作します。

27
Jorge Ferreira

ポート0〜1023は既知のポートであり、IANAによって割り当てられます。これらは、パブリックネットワークで割り当てられたプロトコルにのみ使用してください。

ポート1024〜65535は、以前は登録済みポート番号と呼ばれていましたが( rfc17 を参照)、2つの領域に分割されています( rfc6335 を参照)。

ポート1024〜49151はユーザーポートであり、独自のプロトコルに使用するポートです。

ポート49152-65535は動的ポートであり、プロトコルに規定されるべきではありません。

ユーザーポートは任意のプロトコルで使用できますが、有限数があるため、どこかで使用している他のネットワークと競合します。 IANAは登録されたポート番号(0-49151)の記録を保持します。プロトコルがパブリックネットワークで使用される場合は、IANAへの登録を検討する必要があります。自分のネットワーク内でのみ使用している場合は、このエリア(1024-49151)内のポートを選択し、そのポートを IANAレジスタ と照合して、それが可能性のあるプロトコルで使用されていないことを確認します。ネットワークで使用できます。プライベートで使用する場合は、未使用で将来割り当てられる可能性のあるプロトコルを選択するよりも、使用されないことがわかっているプロトコルに割り当てられた番号を選択する方が良いでしょう。

動的範囲内のポート番号を使用しないでください。これらのポートは、動的に、ややランダムに、オペレーティングシステムによって割り当てられます。 (port = 0でbind()を使用して)クライアント接続を開くと、ダイナミックレンジから未使用のポートが割り当てられます。この範囲のポートが常にプロトコルに対して空いていることを保証する方法はありません。

67
adrianwadey

短い答え:1023まで、または49152以上を避け、選択したポートをネットワーク上のサービスに対してテストしてください。

あなたが持っていると思われる合理的な予防策を講じた場合(構成ファイルにポート番号を入れる)、後で競合を発見したとしても、それは大きな混乱であってはなりません。

ただし、(入力中にポップアップした他の提案に何かを追加できるように)簡単に変更できるようにしてください。構成ファイルにある場合は、それを明確にします。それを文書化し、トラブルシューティングで指摘します。これは問題が発生する可能性があるため、変更が必要な場合にデバッグしやすくします。

7
Keith Lawrence

一般的なアプリケーションポートの選択に関する他の提案に加えて、アプリケーション内でポートを構成可能にすることをお勧めします。特に、後で別のアプリケーションとのポートの競合が見つかり、ポート番号を変更する必要がある場合は、ハードコードされたポート番号はお勧めできません。

5
Kluge

これは良い 一般的なアプリケーションポートのリスト です。空のスロットであなた自身の選択をしてください。おそらく、社内の特別なアプリケーションについてもネットワークをスキャンする必要があります。

通常、多数のポートが利用可能であり、それらをお勧めしますが、ファイアウォールによってブロックされる可能性があります。

0
Veynom

注として、これらのポートをnetstat/a/nで確認し、他のアプリケーションで使用されているかどうかを確認してください。 Vistaが49152 ....をアプリケーションレベルの理由で使用したことがわかりました。基本的に、システムレベルのリスナーのほとんどはポート共有を実装していないため、まったく使用されていないポートを使用しても安全です。

素敵なプログラミングの日AMirがあります

0
Amir