ポート番号の割り当ては、Internet Assigned Numbers Authority(IANA)によって行われます。 IANA は、アドレスに関する種々の標準規格を定める標準化団体です。
図 1 に示すように、いろいろな種類のポート番号があります。
- 既知のポート(0 ~ 1023) - これらの番号はサービスとアプリケーションのために予約されています。 また、HTTP(Web サーバ)、IMAP(Internet Message Access Protocol)/SMTP(Simple Mail Transfer Protocol)(電子メール サーバ)、Telnet などのアプリケーションによく使用されます。 サーバ アプリケーションに対してこれらのポートを定義することによって、その特定のポートおよびそれに関連付けられたサービスへの接続を要求するようにクライアント アプリケーションをプログラミングできます。
- 登録済みポート(1024 ~ 49151) - これらのポート番号は、ユーザ プロセスまたはアプリケーションに割り当てられます。 割り当て先のプロセスは、主として、既知のポート番号を受信する一般的なアプリケーションではなく、ユーザが自分で選んでインストールした特定のアプリケーションとなります。 これらのポートは、サーバ リソース用に使用されない場合には、クライアントの送信元ポートとして動的に選択されることもあります。
- ダイナミックまたはプライベート ポート(49152 ~ 65535) - これらのポートはエフェメラル ポートとも呼ばれ、通常、クライアントがサービスへの接続を開始するときに、クライアント アプリケーションに動的に割り当てられます。 ダイナミック ポートは通信中にクライアント アプリケーションを識別するためによく使用されますが、クライアントはサーバ上の要求先サービスを識別して接続するために既知のポートを使用します。 クライアントがダイナミックまたはプライベート ポートを使用してサービスに接続することはめったにありません(ただし、一部のピアツーピア ファイル共有プログラムはこれらのポートを使用します)。
図 2 は、TCP 内の一般的な既知のポートと登録済みポートを示しています。 図 3 は、UDP 内の一般的な既知のポートと登録済みポートを示しています。
TCP と UDP の併用
一部のアプリケーションは、TCP と UDP の両方を使用することがあります(図 4)。 たとえば、UDP はオーバーヘッドが少ないので、DNS が多数のクライアント要求を非常に迅速に処理できます。 ただし、要求された情報を送信するためには、TCP の信頼性が必要になることもあります。 その場合、このサービスでは既知のポート番号 53 が TCP と UDP の両方で使用されます。
ポート番号および関連するアプリケーションの最新のリストは、IANA の Web サイトで確認できます。