1. ホーム
  2. networking

[解決済み] 内部アプリケーションに最適なTCPポート番号の範囲【終了しました

2022-09-19 10:14:04

質問

私は、社内の各アプリケーションが個別の Tomcat インスタンス上で動作し、特定の TCP ポートを使用するような場所で働いています。 サーバー上の他のプロセスとのポート番号の衝突を避けるために、これらのアプリケーションに使用する最良の IANA ポート範囲は何でしょうか?

ベースとなるのは http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml に基づいて、私が現在見ている選択肢は以下のとおりです。

  1. システム ポート (0-1023) です。これらのポートのいずれも使用したくない なぜなら、サーバーはこの範囲の標準ポートでサービスを実行している可能性があるためです。 範囲
  2. ユーザーポート (1024-49151)。アプリケーションは内部的なものであるため、私たちのアプリケーションのために番号を予約するよう IANA に要求するつもりはありません。しかし、同じポートが別のプロセス (たとえば、1521 の Oracle Net Listener) によって使用される可能性を減らしたいのです。
  3. 動的および/またはプライベート ポート (49152-65535)。この範囲は、カスタム ポート番号に最適です。唯一の懸念は、このような事態が発生した場合です。

    a. 自分のアプリケーションの1つがポートXを使用するように設定します。

    b. アプリケーションが数分または数時間(アプリケーションの性質に依存)ダウンし、少しの間ポートが使用されないままになっている。

    c. オペレーティングシステムは、たとえば、プロセスが別のサーバーへのTCP接続を必要とするクライアントとして動作する場合、ポート番号Xを別のプロセスに割り当てます。これは、それが動的範囲に該当し、X がオペレーティング システムに関する限り現在未使用であることを考えると、成功します。

    d. ポート X がすでに使用中であるため、アプリの起動に失敗する。

どのように解決するのですか?

なぜ気にするのかがわかりません。1024 未満のポートを使用しない」という特権ルール以外は、どのポートでも使用できるはずです。 クライアントは、任意の IP アドレスとポートに接続できるように設定可能であるべきだからです。

もしそうでないなら、それはあまりうまくできていないのです。戻ってきちんとやりましょう:-)

つまり、IPアドレスでサーバを起動する X とポート Y を設定し、その情報を元にクライアントを設定します。そして、もし が必要です。 で別のサーバを実行する必要がある場合 X と競合するような Y と衝突する場合は、新しいポートを使用するようにサーバーとクライアントを再設定してください。これは、クライアントがコードであろうと、ブラウザに URL を入力する人であろうと同じです。

私は、あなたのように、IANA によって割り当てられた番号を取得しようとは思いません。なぜなら、それは非常に一般的なサービスのためのものだからです。 多くの 環境でも使用されるほど一般的なサービス (SSH や FTP、TELNET を想定) のためのものだからです。

あなたのネットワークは あなたの ネットワークであり、1234 番ポート (あるいは、TELNET や FTP ポート) でサーバーを使用したいのであれば、それはあなたのビジネスです。例えば、私たちのメインフレーム開発エリアでは、ポート23は3270ターミナルサーバーに使用されており、これはTelnetとは全く異なるものです。メインフレームのUNIX側にtelnetしたい場合は、ポート1023を使用します。ポート 1023 を指定せずに telnet クライアントを使用すると、telnet プロトコルを何も知らないサーバーに接続されるため、時々迷惑をかけることになります - telnet クライアントから抜け出して適切に行う必要があります。

telnet big_honking_mainframe_box.com 1023

もしあなたが本当に できない クライアント側を設定可能にして、48042 のような 2 番目の範囲から 1 つを選び、それを使用するだけで、それらのボックス上の他のソフトウェア (将来追加されるものも含む) は邪魔にならないようにしなければならないことを宣言します。