質問
WindowsサービスによってホストされるWCFサービスを作成しましたが、既知のTCP / IPポートでリッスンする必要があります。組織内で使用するポートをどの範囲から安全に割り当てることができますか?そのポートは、サービスおよびサービスを使用しているクライアントの構成ファイルに埋め込まれます。
解決
49152から65535までのポート番号を選択します。
IANAは現在割り当てられているポートのリストを公開します。
http://www.iana.org/assignments/port-numbers
動的ポートおよび/またはプライベートポートは49152から65535までのポートです。これは、社内アプリケーション用のポートを選択する必要がある範囲です。もちろん、公開されたリストの未割り当て範囲のいずれかに属するポートを使用できます。ただし、これらの割り当てられていない範囲からポート番号を選択しても、選択したポートが将来予約ポートにならないという保証はありません。
未割り当てのポート番号は使用しないでください 中古。 IANAが番号を割り当てます 申請後の港のために 承認されました。
そして、あなたが選んだポート番号があなたが述べたように設定可能であることを確かめてください:
そのポートは サービスの構成ファイルと 消費しているクライアント サービス。
これにより、他のサードパーティ製のタッチ不可ソフトウェアがポート番号を使用している場合の頭痛を回避できます。その場合は、設定ファイルでそれを変更するだけで機能します。
他のヒント
ポート0〜1023は既知のポートであり、IANAによって割り当てられます。これらは、パブリックネットワーク上の割り当てられたプロトコルにのみ使用してください。
ポート1024〜65535は、登録済みのポート番号と呼ばれていました( rfc1700 )が2つの領域に分割されました( rfc6335 を参照)。
>ポート1024-49151はユーザーポートであり、独自のプロトコルに使用するポートです。
ポート49152-65535は動的ポートであり、プロトコルに規定されるべきではありません。
ユーザーポートは任意のプロトコルに使用できますが、有限数があるため、どこかでネットワークで使用する他のユーザーと使用が競合します。 IANAは、登録されたポート番号(0〜49151)の記録を保持します。プロトコルがパブリックネットワークで使用される場合は、IANAへの登録を検討する必要があります。自分のネットワーク内でのみ使用している場合は、このエリア(1024-49151)内のポートを選択し、そのポートを IANA登録を使用して、ネットワークで使用できるプロトコルで使用されていないことを確認します。プライベートで使用する場合は、割り当てられていないため将来割り当てられる可能性があるプロトコルを選択するよりも、使用されないことがわかっているプロトコルに割り当てられている番号を選択する方がよいでしょう。
ダイナミックレンジ内のポート番号を使用しないでください。これらのポートは、オペレーティングシステムによって動的に、そして多少ランダムに割り当てられます。 port = 0でbind()を使用してクライアント接続を開くと、ダイナミックレンジから未使用のポートが割り当てられます。この範囲のポートがプロトコルに対して常に無料であることを保証する方法はありません。
簡単な答え:1023まで、または49152以上を避け、ネットワーク上のサービスに対して選択したポートをテストします。
あなたが持っているように見える合理的な予防措置を講じている場合(設定ファイルにポート番号を入力する)、後で競合を発見した場合、それは大きな混乱ではないはずです。
しかし(入力中にポップアップした他の候補に何かを追加できるように)変更しやすいようにしてください!構成ファイルにある場合は、明確にします。それを文書化し、トラブルシューティングで指摘します。間違った方向に進む可能性があるため、変更が必要な場合は簡単にデバッグできます。
一般的なアプリケーションポートの選択に関する他の提案に加えて、アプリケーション内でポートを構成可能にすることをお勧めします。特に後で後で別のアプリケーションとのポートの競合を発見し、変更する必要がある場合は、ハードコードされたポート番号は悪い考えです。
一般的なアプリケーションポートのリストがあります。空のスロットで独自の選択を行います。社内の特別なアプリケーションについてもネットワークをスキャンする必要があるかもしれません。
通常、高い数のポートが使用可能であり、それらを推奨しますが、ファイアウォールによってブロックされる可能性があります。
注意として、これらのポートをnetstat / a / nでチェックして、他のアプリケーションで使用されているかどうかを確認してください。何らかのアプリケーションレベルの理由で、vistaが49152を使用していることがわかりました。基本的に、システムレベルのリスナーのほとんどはポート共有を実装していないため、まったく使用されていないポートを使用しても安全です。
素敵なプログラミングの日を AMir