PR

ポート番号とは?3つの範囲と通信を識別する仕組みを解説

ネットワーク
スポンサーリンク

はじめに

Webサイトを閲覧するとき、IPアドレスは通信先の端末までデータを届けるために使われます。しかし、端末ではWebサーバー、メールサーバー、DNSサーバーなど複数のサービスが動くことがあります。IPアドレスだけでは、届いたデータをどのサービスへ渡せばよいかを区別できません。

区別に使われるのがポート番号です。この記事では、ポート番号の役割、送信元と宛先の違い、3つの番号範囲、複数の通信を識別できる仕組みを解説します。

この記事で分かること

  • ポート番号が必要な理由
  • 送信元ポート番号と宛先ポート番号の役割
  • ポート番号の3つの範囲
  • 同じ端末で複数の通信を区別できる理由
  • ポート番号とアプリケーションの関係で注意する点

ポート番号とは

ポート番号は、TCPやUDPが受信したデータを、端末内の適切なアプリケーションや通信の入口へ渡すために使う16ビットの番号です。0から65535までの値を取り、TCPとUDPのヘッダーには送信元ポート番号と宛先ポート番号が格納されます。

IPアドレスがネットワーク上の通信先を示すのに対し、ポート番号はその通信先でデータを受け取るサービスや通信を区別します。例えば、1台のサーバーがWebとメールの両方を提供していても、宛先ポート番号が異なれば、受信したデータを対応する処理へ振り分けられます。

トランスポート層全体の役割とTCP・UDPの違いは、トランスポート層とは?役割とTCP・UDPの違いを分かりやすく解説で解説しています。IPアドレスとネットワーク層の役割は、IPとは?ネットワーク層の役割やルーティングを初心者向けに分かりやすく解説を参照してください。

送信元ポート番号と宛先ポート番号

TCPやUDPの通信では、送信側と受信側の両方がポート番号を使用します。宛先ポート番号は受信側でデータを渡す先を示し、送信元ポート番号は通常、応答を返すときの宛先として使われます。

宛先ポート番号は受信側の入口を示す

宛先ポート番号は、受信側でデータを渡すサービスや通信の入口を示します。サーバーは、提供するサービスに対応するポート番号でデータを待ち受けます。

例えば、TCPを使う一般的なHTTPS通信では、クライアントはサーバーの443番ポートへ接続します。サーバー側は宛先ポート番号を確認し、HTTPSを処理するプログラムへデータを渡します。

送信元ポート番号は送信側の通信を区別する

送信元ポート番号は、送信した側でその通信を区別する番号です。受信側が応答するときは、通常、この番号を応答の宛先ポート番号として使います。クライアントが通信を開始するときは、OSが利用可能な番号から送信元ポート番号を選ぶのが一般的です。

サーバーは、受信した通信に送信元ポート番号が示されている場合、通常、その番号を応答の宛先ポート番号として使用します。UDPでは送信元ポート番号を0にして、応答先を示さないこともできます。これにより、1台のクライアントが同じサーバーへ複数の通信を行っていても、応答を対応する通信へ戻せます。

送信元ポート番号と宛先ポート番号がヘッダーのどこに格納されるかは、UDPヘッダーとは?4つのフィールドとIPv4・IPv6のチェックサムを解説で確認できます。

ポート番号の3つの範囲

ポート番号は、IANAの管理上、System Ports、User Ports、Dynamic/Private Portsの3つに分けられます。

番号範囲名称主な位置づけ
0~1023System Ports(Well Known Ports)広く利用されるサービスなどに割り当てる範囲。0番は予約されている
1024~49151User Ports(Registered Ports)アプリケーションやサービスが登録を申請できる範囲
49152~65535Dynamic/Private PortsIANAが個別サービスへ割り当てず、動的利用や私的利用に使う範囲

この区分は、ポート番号の登録や利用目的を整理するものです。System PortsとUser Portsのすべてに用途が割り当てられているわけではなく、未割り当ての番号もあります。また、ポート番号の登録はTCPとUDPで別に管理されるため、同じ番号でもトランスポートプロトコルが異なれば別の登録として扱われます。

クライアントの送信元ポート番号は一時ポートとも呼ばれます。Dynamic/Private Portsは一時ポートの利用を想定した範囲ですが、実際にOSが選択する範囲は実装や設定によって異なるため、必ず49152~65535から選ばれるとは限りません。

通信は5つの情報の組み合わせで識別する

ポート番号だけでは、通信を一意に識別できません。IPネットワーク上のTCP・UDP通信は、次の5つの情報の組み合わせで区別されます。

  • 送信元IPアドレス
  • 宛先IPアドレス
  • 送信元ポート番号
  • 宛先ポート番号
  • トランスポートプロトコルの種類

この組み合わせは5タプルと呼ばれます。宛先IPアドレスと宛先ポート番号が同じでも、送信元IPアドレスや送信元ポート番号が異なれば、別の通信として区別できます。

TCPでは、通信の両端にあるIPアドレスとポート番号の組み合わせによって接続を管理します。UDPでも、送信元と宛先の情報、UDPであることを組み合わせて、受信したデータを対応する処理へ渡します。

Webアクセスで見るポート番号の使われ方

同じクライアントが、同じWebサーバーへ2つのTCP接続を行う例を考えます。次のポート番号は説明用の例です。

通信送信元宛先プロトコル
接続Aクライアント:53001番Webサーバー:443番TCP
接続Bクライアント:53002番Webサーバー:443番TCP

2つの接続は、宛先サーバーと宛先ポート番号が同じです。しかし、送信元ポート番号が異なるため、クライアントとサーバーは接続Aと接続Bを別の通信として管理できます。

実際にはIPアドレスも識別情報に含まれます。別の端末から同じWebサーバーへ接続した場合は、送信元IPアドレスの違いによっても通信を区別できます。

ポート番号とアプリケーションの対応は絶対ではない

IANAの登録情報は、どのサービスがどのポート番号を一般的に利用するかを共有するためのものです。ただし、登録されたポート番号を使えば、必ずそのアプリケーションが動いていると断定できるわけではありません。

管理者はサービスを標準とは異なるポート番号で動かせます。ポート番号は通信の振り分けに必要な情報ですが、実際のアプリケーションや通信内容をポート番号だけで断定しないことが重要です。

まとめ

ポート番号は、TCPやUDPが受信したデータを、端末内の適切なアプリケーションや通信へ渡すために使う番号です。IPアドレスがネットワーク上の通信先を示し、ポート番号がその通信先にあるサービスや通信の入口を区別します。

要点は次のとおりです。

  • ポート番号は0~65535の16ビット番号である
  • 宛先ポート番号は受信側の渡し先を示し、送信元ポート番号は通常、応答時の宛先として使われる
  • 番号範囲はSystem、User、Dynamic/Privateの3つに分かれる
  • 一時ポートの実際の選択範囲はOSの実装や設定によって異なる
  • 通信はIPアドレス、ポート番号、TCP・UDPの別を組み合わせて識別する
  • 登録ポートと実際のアプリケーションの対応は絶対ではない

ポート番号を単独の番号ではなく、IPアドレスやトランスポートプロトコルと組み合わせて理解すると、同じ端末で複数の通信を処理できる理由が分かります。

関連記事


コメント

タイトルとURLをコピーしました