私は、各内部アプリケーションが個々のTomcatインスタンスで実行され、特定のTCPポートを使用する場所で働いています。 サーバー上の他のプロセスとのポート番号の衝突を避けるために、これらのアプリに使用する最適なIANAポート範囲は何ですか?
http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml に基づいて、これらは現在私が見ているオプションです:
a。ポートXを使用するようにアプリケーションの1つを構成します
b。アプリケーションは数分または数時間(アプリの性質に応じて)ダウンし、しばらくポートを使用しません。
c。たとえば、そのプロセスが別のサーバーへのTCP接続を必要とするクライアントとして機能する場合、オペレーティングシステムは別のプロセスにポート番号Xを割り当てます。ダイナミックレンジ内に収まり、オペレーティングシステムに関する限りXが現在使用されていない場合、これは成功します。
d。ポートXが既に使用されているため、アプリの起動に失敗します
どうして気にするのか分かりません。 「1024未満のポートを使用しない」特権ルール以外に、任意のポートを使用できる必要があります。これは、クライアントが任意のIPアドレスおよびポートと通信できるように構成する必要がある!
そうでない場合、それらはあまりうまくいっていません。戻って適切に実行します:-)
つまり、IPアドレスX
およびポートY
でサーバーを実行してから、その情報を使用してクライアントを構成します。次に、mustX
と競合する別のサーバーをY
と競合する場合は、新しいポートを使用するようにサーバーとクライアントを再構成します。これは、クライアントがコードであっても、ブラウザにURLを入力する人であっても当てはまります。
私は、あなたのように、IANAによって割り当てられた番号を取得しようとはしません。それは、多くの多く環境がそれらを使用する(SSH、FTP、またはTELNETを考えてください).
あなたのネットワークはyourネットワークであり、サーバーをポート1234(または、さらにはTELNETまたはFTPポート)にしたい場合、それはあなたのビジネスです。私たちのメインフレーム開発エリアでは、ポート23が3270ターミナルサーバーに使用されています。これは、telnetとは大きく異なるものです。メインフレームのUNIX側にtelnetする場合、ポート1023を使用します。ポート1023を指定せずにtelnetクライアントを使用すると、telnetプロトコルを何も知らないサーバーに接続するため、面倒な場合があります。 telnetクライアントから適切に実行します。
telnet big_honking_mainframe_box.com 1023
本当にできないクライアント側を構成可能にし、48042のように2番目の範囲から1つを選択して使用するだけで、それらのボックス上の他のソフトウェア(将来追加されるものを含む)を宣言します邪魔にならないようにしてください。
IANAから割り当てられたポート番号をダウンロードし、使用されているポートをフィルターで除外し、各「未割り当て」範囲を使用可能なほとんどのポートの降順で並べ替えることにしました。 csvファイルには、「未割り当て」とマークされた範囲が他のポート番号予約と重複しているため、これは機能しませんでした。assignedポート番号の範囲を手動で拡張し、割り当てられたすべてのポート番号のリストを残しました。次に、そのリストをソートし、未割り当ての範囲の独自のリストを生成しました。
このstackoverflow.comページは、トピックに関する私の検索で非常に高いランク付けされたので、私はここに興味のある他の人のために最大の範囲を投稿すると思いました。これらは、TCPとUDPの両方であり、範囲内のポートの数は少なくとも500です。
Total Start End
829 29170 29998
815 38866 39680
710 41798 42507
681 43442 44122
661 46337 46997
643 35358 36000
609 36866 37474
596 38204 38799
592 33657 34248
571 30261 30831
563 41231 41793
542 21011 21552
528 28590 29117
521 14415 14935
510 26490 26999
ソース(CSVダウンロードボタン経由):
http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
簡単な答え:未割り当てのユーザーポートを使用する
達成者の答えを超えて-リソース発見ソリューションを選択して展開します。サーバーがプライベートポートを動的に選択するようにします。クライアントにリソース検出を使用させます。
リッスンするポートが使用できないためにサーバーが失敗するリスクは現実的です。少なくともそれは私に起こった。別のサービスまたはクライアントが最初にそこに到達する場合があります。
クライアントに動的に配布されるプライベートポートを回避することにより、クライアントからのリスクをほぼ完全に減らすことができます。
ユーザーポートを使用する場合、別のサービスからのリスクは最小限です。割り当てられていないポートのリスクは、別のサービスがそのポートを使用して(または動的に)使用することだけです。しかし、少なくともそれはおそらくあなたの管理下にあります。
ユーザーポートを含むすべてのポート割り当てを含む巨大なドキュメントはこちらです http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt 未割り当てのトークンを探します。