ポートとは
ポートとは、IPネットワーク上で、複数のアプリケーションが同時に通信を行うために設けられた論理的な通信の出入口です。TCPやUDPといったプロトコルで定義され、各ホスト上のアプリケーションを識別し、データの振り分けを行います。
ポートの概要
IPネットワークでは、ホスト間の通信は可能ですが、一つのホストへのすべての信号を単一のアプリケーションのみが受け取ると、複数のアプリケーションが同時に通信することはできません。この問題を解決するためにポートが導入されました。
ポートの仕組みでは、IP上で動作するプロトコルのヘッダに記載された番号に基づいて、データを特定のアプリケーションにルーティングします。この番号がポート番号であり、ホストのIPアドレスをマンションの住所に例えると、ポート番号は部屋番号に相当します。
ポート番号
ポート番号は、0から65535までの範囲で指定され、そのうち0から1023番まではシステムポート番号として予約され、特定の
サービスで使用されます。これにより、ポート番号から通信に使われている
サービスを特定できる場合があります。
ポートとソケット
プログラムでポートを利用して通信を行うには、一般にソケットと呼ばれる仕組みを使用します。ソケットは、通信の端点であり、通信路の両端、すなわちそれぞれのコンピュータに存在します。ソケットを利用したプログラムを記述することをソケットプログラミングと呼びます。
ソケット通信は、
クライアントサーバモデルに基づき、以下の手順で行われます。
1.
サーバプログラムは、ソケットを作成し、
サービス固有のポート番号を割り当てて、クライアントからの接続を待ち受けます。
2. クライアントプログラムは、ソケットを作成し、
サーバのIPアドレスとポート番号を指定して接続します。
3.
サーバは接続を受け付けると、新しいソケットを作成し、クライアントとの間に通信を確立します。元のソケットは再び待ち受け状態に戻ります。
4. 通信が終了すると、作成されたソケットは破棄されます。
このように、ポート番号は
サーバ上の
サービスを特定するための番号であり、
サーバ側のポート番号が重要になります。クライアント側のポート番号は、通常、空いている番号が自動的に割り当てられます。
ポート番号の種類
ポート番号は、以下の3種類に大別されます。
システムポート番号 (0-1023): よく知られた
サービスやプロトコルで使用される、予約済みのポート番号です。
ユーザーポート番号 (1024-49151): IANAが利便性を考慮して公開しているポート番号です。
動的/プライベートポート番号 (49152-65535): どの用途にも該当しない場合に利用するポート番号です。
クライアントが使用するポートはエフェメラルポートと呼ばれます。
よく使われるポート番号の例
TCP/20: FTP (データ)
TCP/21: FTP (制御)
TCP/22: SSH
TCP/25: SMTP
UDP/53: DNS
TCP/80: HTTP
TCP/443:
HTTPS
ポートと不正アクセス
コンピュータは、常に様々なプログラムが動作しています。これらのプログラムはポートを介して外部と通信を行いますが、プログラムの不備により
セキュリティホールが生じることがあります。
セキュリティホールを悪用されると、コンピュータ内の情報が漏洩したり、不正な動作をさせられたりする可能性があります。
このような不正アクセスを防ぐために、
ファイアウォールと呼ばれる仕組みが利用されます。
ファイアウォールは、特定のポートへの接続を制限したり、外部からの不正な通信を遮断したりする機能があります。これにより、コンピュータを安全に利用することができます。
ポートフォワード
NAT環境では、ポートフォワードという機能を使用することで、外部からの特定のポートへのアクセスを、LAN内の特定のコンピュータに転送することができます。これにより、複数のコンピュータで異なる
サービスを公開できるようになります。
まとめ
ポートは、ネットワークにおける重要な概念であり、アプリケーション間の通信を実現する上で欠かせないものです。ポート番号、ソケット、セキュリティ、ポートフォワードなどの仕組みを理解することで、より安全かつ効率的なネットワーク利用が可能になります。
ファイアウォールの設定やポートフォワードはネットワーク環境によって設定が異なるので、注意が必要です。