ネットワーク ポートとは

明らかに、ポートという言葉の最も一般的な使用法は出荷を指します。 ただし、コンピューティングではポートという用語も使用されます。 実はこれには2つの用途があります。 1つ目は、ケーブルを差し込むことができるソケットを指します。 典型的な例には、USB またはイーサネット ポートが含まれます。 技術的には、イーサネット ソケットはネットワーク ポートと考えることができます。 これは、ネットワーキングにおけるポートという言葉の受け入れられた意味ではありません。 ネットワーク ポートは、ネットワーク トラフィックの宛先または送信元のプロセスまたはネットワーク サービスを識別する論理番号です。

ポート番号が必要な理由

コンピューターがインターネット上の Web サーバーと通信するとき、送信者フィールドに IP アドレスを入力します。 これにより、サーバーは応答を送信する必要がある IP アドレスを知ることができます。 その応答がコンピューターに返されると、ブラウザーは応答を解釈し、Web ページをレンダリングします。

これは、ネットワーク トラフィックを作成および受信する 1 つのソフトウェアを備えた理想的なシステムでは正常に機能します。 しかし、現実の世界はそうではありません。 どのコンピュータにも、ネットワーク トラフィックを作成するさまざまなソフトウェアがあります。 ネットワーク トラフィックが適切なプログラム (場合によっては、プログラム内の適切なプロセス) に正しく渡されるようにするため。 最後のアドレス指定層の 1 つはポート番号を使用します。

2 つのタブが開いている Web ブラウザと、オンライン ビデオ ゲームを同時に使用していると想像してください。 各ブラウザ タブは、ネットワーク トラフィックを送受信できる必要があり、場合によっては同時に行うこともできます。 オンライン ゲームでは、ネットワーク トラフィックの送受信も必要です。 ゲームでランダムな Web 応答をフィルター処理する必要はなく、ブラウザーでゲーム トラフィックをフィルター処理する必要もありません。 タブとゲームの両方に少なくとも 1 つのネットワーク ポートが割り当てられるため、目的の受信者プロセスを簡単に判断できます。

同じことがサーバーでも機能します。 Web サーバーと電子メール サーバーの両方を実行するサーバーがあるとします。 その場合、ポート番号により、オペレーティング システムは、どのネットワーク パケットがどのサービスに向けられているかを簡単に区別できます。

ポート番号とは

ポート番号は、16 ビットの符号なし整数の形式をとります。 これは、数値を構成する 16 のバイナリ ビットがあり、負の数値がなく、すべての数値が整数であることを意味します。 これにより、0 から 65535 までの範囲の 65536 の可能なポート番号が許可されます。 物理的なポート システムはありません。

IP アドレスや MAC アドレスと同様、アドレッシング スキーム全体は完全に論理的です。 IP アドレスと MAC アドレスは、家やコンピュータに届けるための手紙の住所と考えることができます。 このアナロジーでは、ポート番号は封筒に記載されている名前のようなもので、家/コンピューターの適切な人/プロセスに確実に到達するようにします.

ポート番号スペース内には、他の構造があります。 ポート番号 0 は予約済みです。 TCP トラフィックでは、0 はまったく使用されません。 UDP トラフィックでは、ポート番号はオプションで、ポート 0 は「ポートなし」を意味します。 これは、必ずしも応答を期待しないステートレス プロトコルであるため、UDP で機能します。 TCP ポートと UDP ポートは分離されています。 1 つのサービスは、一方または両方のプロトコルの 1 つまたは複数のポートにバインドできます。 通常、両方を使用するサービスは、TCP と UDP で同じポート番号に接続します。

ポート 1 ~ 1023 は「well-known」ポートとして知られており、通常、バインドするには管理者権限が必要です。 既知のポートには、HTTP 用の 80、HTTPS 用の 443、および DNS 用の 53 があります。 次に、1024 ~ 49151 の範囲を取得します。 これらは「登録済み」ポートと呼ばれます。 これらは特定のサービスで定期的に使用されるポートですが、1023 未満の番号を取得するには十分に一般的ではないか、初期段階ではありませんでした。 49152 から 65535 までのポートは、エフェメラル ポートと呼ばれます。

ポート番号の使用

Internet Assigned Numbers Authority である IANA は、既知の登録済みポート リストを管理しています。 既知のポートには、1 つのサービスのみが関連付けられています。 ただし、登録済みのポートには、デフォルトでポートを使用する一連の既知のサービスが含まれている場合があります。

一般に、プログラムがポート番号にバインドするのを実際に止めるものは何もありません。 前述のように、1024 未満のポート番号をバインドするには、管理者権限またはルート権限が必要になる傾向があります。 それでも、たとえば、Web サーバーでなくても、任意のサービスを強制的にポート 80 にバインドすることができます。 よく知られた登録済みの範囲のポート番号は、ネットワーク リスナーのみが使用する傾向があり、通常は一時ポートが接続の開始に使用されます。

リスナーは、開いたままにしておくポートです。 メッセージをリッスンして、メッセージを処理して返信を送信できるようにします。 これは、ほとんどの場合、Web サーバーなどのサーバー タイプのサービスの動作です。 Web サーバーはポート 80 と 443 でホストされ、これらのポートに接続するブラウザは一時ポートをローカルで使用します。

アプリケーション リスナーの標準ポート番号は、実際にサービスに接続する方法を簡単に知ることができることを意味します。 たとえば、HTTPS を URL の前に置くと、ブラウザはデフォルトでポート 443 に接続する必要があると想定します。 場合によっては、リスナーが代替ポートに設定されます。 これは、別のサービスまたはサービスのバージョンが既に標準ポートを使用していることが原因である可能性があります。 また、あいまいさによるセキュリティの試みである可能性もあります。

結論

ネットワーク ポートは論理アドレスです。 ソフトウェアはポートにバインドできるため、オペレーティング システムは、そのポートに送信されるすべてのトラフィックがそのプロセス向けであることを認識します。 ポート番号の範囲は 0 ~ 65535 です。 多くのサービスは、標準のポート番号に関連付けられています。 サーバーはこれらのポートを使用しますが、サーバーに接続するデバイスはランダムな大きな番号のポートを使用します。 これにより、サービスへの簡単なデフォルト接続が可能になり、そのようなサービスに接続しても、別のサービスを自分でホストできなくなることはありません。