4

アプリケーションが通常は小さいポート番号でリッスンするのに、接続のクライアント側が高いポート番号(エフェメラルポート)を使用するのはなぜですか?

アドバンのThx、Karthik Balaguru

4

5 に答える 5

15

サーバーは固定ポート番号でリッスンするため、クライアントはどこに接続するかを知ることができます。クライアントは誰も接続を開始していないため、固定ポート番号を使用する必要はありません。実際、同じマシン(Webブラウザーなど)で複数のクライアントが実行されている場合、クライアントは固定ポート番号を使用できません。同じサーバーに接続しています。 IANAは、0..49151の範囲のポートを特定のサービスの固定ポート番号として指定し、49152..65535の範囲のポートを、どのサービスにも割り当てられておらず、固定ポート番号の場合に使用できる動的(エフェメラル)ポートとして指定しています。必須ではありません。

ポート範囲0..49151は、特権プロセスのみがバインドできる既知の範囲0..1023(少なくともUnix / Linuxでは)と、登録された範囲1024..49151にさらに分割されます。1024..49151の範囲のポートは、非特権ユーザーとして実行される可能性のあるサーバープロセスで使用できます。また、サーバーで使用されていない場合は、クライアントがこの範囲のポートを使用することもできます(Linuxの動的ポートなど)。 Solarisは、デフォルトでは49152ではなく32768から始まります。

于 2010-02-20T17:57:24.667 に答える
6

1024未満のポート番号は「登録済み」と呼ばれ、それを超えるポート番号(65,535の制限)は「未登録」と呼ばれます。これらの2つの用語はすべて、1024未満のポートには標準サービスが関連付けられていることを意味します。IE:DNSの場合は53、HTTPの場合は80、SMTPの場合は25など。これらが関連付けられていることに注意してください。ポート53、25などを使用するようにアプリケーションを設定することを妨げるものはありませんが、他のサービスが接続を試みるため、お勧めしません。および/またはこれらのポートで動作するため、問題が発生する可能性があります。

未登録のポート領域は、クライアントアプリケーションによって動的に使用されます。IE:StackOverflow.comウェブサーバーのポート80に接続しているときにこの回答を読んでいますが、ブラウザは未登録のポートを使用してそのリクエストを開始しています。

于 2010-02-20T04:51:10.793 に答える
1

サーバーポートは通常、よく知られているポートであるためです。Unixボックスでは、ファイルにそれらの割り当てが表示され/etc/servicesます。一方、クライアントポートは通常、特定の高範囲からTCP/IPスタックによって選択されます。したがって、サーバーはリッスンするポートを認識し、クライアントは接続するポートを認識し、接続がどのポートから行われるかは誰も気にしませ

于 2010-02-20T04:51:41.293 に答える
0

小さいポート番号(<1024)は、特権プロセス用に予約されています。さらに、これらのポートの多くは、Internet AssignedNumberAuthorityによって特定のサービスに割り当てられています。クライアントは、これらの既知のポートをリッスンしているサーバーへの接続を確立しますが、使用可能なポートに応じて、より高い範囲で動的に割り当てられたポート番号を使用します。

于 2010-02-20T04:49:44.760 に答える
-2

通常、小さいポート番号は一般的なアプリケーション用に予約されています。短い=覚えやすい。

于 2010-02-20T04:50:48.880 に答える