4

BartがNATルーターでJMSメッセージをブロックしている問題に関して、 クライアントがopenJMSメッセージを受信するポート番号を見つけようとしています。Webで年齢を検索した後、サーバーポートに関する情報しか見つけることができず、クライアントには何も見つかりません。これはtcp接続用です。

誰かが私を正しい方向に向けることができれば、私は非常に感謝するでしょう。

ありがとう!

4

1 に答える 1

2

一般に、クライアントポート番号は新しい接続ごとに異なります。OpenJMSクライアントがサーバーと通信するときに特定のポート番号を使用しているという証拠は見つかりませんでした。ここにいくつかの説明があります。

  1. ポート番号

    クライアントプロセスが最初にサーバープロセスに接続するとき、既知のポート番号を使用して通信を開始する場合があります。よく知られているポート番号は、Internet Assigned Numbers AuthorityであるIANAによって、インターネット全体の特定のサービスに割り当てられています。既知のポート番号は0〜1023の範囲です。

    既知のポートは、クライアントプロセスとサーバープロセス間の通信を確立するためにのみ使用されます。これが行われると、サーバーは後で使用するために一時的なポート番号を割り当てます。エフェメラルポート番号は、プロセスが通信を開始するときに動的に割り当てられる一意のポート番号です。通信が完了すると解放されます。

  2. TCP / IPクライアント(エフェメラル)ポートとクライアント/サーバーアプリケーションポートの使用

    対照的に、サーバーはクライアントに応答します。彼らは彼らとの接触を開始しません。したがって、クライアントは予約済みのポート番号を使用する必要はありません。実際、これは実際には控えめな表現です。サーバーは 、既知のポート番号または登録されたポート番号を使用してクライアントに応答を送信するべきではありません。その理由は、特定のデバイスで、同じプロトコルのクライアントソフトウェアとサーバーソフトウェアの両方を同じマシンで実行できる可能性があるためです。サーバーがマシンのポート80でHTTP要求を受信し、クライアントマシンのポート80に応答を送り返した場合、サーバーは、送信したクライアントプロセスではなく、クライアントマシンのHTTPサーバー プロセス(存在する場合)に応答を送信します。最初のリクエスト。

    応答の送信先を知るには、サーバーはクライアントが使用しているポート番号を知っている必要があります。これは、要求の送信元ポートとしてクライアントによって提供され、応答を送信するための宛先ポートとしてサーバーによって使用されます。クライアントプロセスは、既知または登録済みのポートを使用しません。代わりに、各クライアントプロセスには、使用するための一時ポート番号が割り当てられます。これは一般にエフェメラルポート番号と呼ばれます。

  3. 別の質問に対する同様の回答:インターネット上のクライアントとサーバー間の通信間のポート番号を決定する方法

    また、クライアントは同じポート上の多数のサーバーに接続できます。クライアントが接続するとき、クライアントはそこでランダムなポートを使用します。

    サーバーだけが空きポートの使用について心配する必要があり、クライアントはこのポートが何であるかを知る必要があります。そうしないと、サーバーに接続できなくなります。

その他の可能なヘルプ:

于 2012-12-27T02:35:50.663 に答える