🙌

ポートの基礎知識とよく使われるポート番号のまとめ

2024/08/20に公開

はじめに

開発中のアプリケーションのインフラ構築を進める中で、ネットワークの基本概念についてインプットしたことを後で確認できるように備忘録としてまとめます。

ポートの基本概念

ネットワーク通信におけるポートは、データがどのアプリケーションやサービスに送信されるかを示す番号です。ポート番号は、ネットワーク上の特定のプロセスやサービスを識別するために使用されます。これを例えると、ポート番号はオフィスビルの部屋番号に似ています。

  • オフィスビルと部屋番号とは? 大きなビルには多くの部屋があり、それぞれの部屋には番号があります。郵便物や訪問者が特定の部屋に届くように、部屋番号が使われます。ネットワークの「ビル」にあたるのがサーバーやコンピュータで、「部屋番号」がポート番号です。データが正しいアプリケーションに届くように、ポート番号が指定されます。

よく使われるポート番号とその説明

ポート80(HTTP)

用途: ウェブブラウザがウェブページを表示するために使用します。
特徴: 通常のウェブサイトで使用され、データは暗号化されません。

ポート443(HTTPS)

用途: 安全なウェブサイト通信に使用されます。オンラインバンキングやショッピングサイトなど、セキュリティが重要なサイトで使われます。
特徴: データが暗号化され、セキュアな通信が行われます。

ポート8080(HTTPの代替)

用途: 開発やテスト環境、またはプロキシサーバーでよく使用されます。
特徴: HTTPと同じく非暗号化の通信を行いますが、通常はポート80が使用される環境で代替として用いられます。

ポート3000(開発用)

用途: Node.jsやReactなどの開発サーバーがデフォルトで使用するポートです。
特徴: 主にローカル開発環境で利用されるポートで、プロダクション環境ではあまり使われません。

ポート22(SSH)

用途: セキュアなリモートアクセスやファイル転送に使用されます。
特徴: データが暗号化され、安全にリモート管理やファイル転送が行えます。

ポート21(FTP)

用途: ファイルの転送に使用されます。サーバーへのファイルのアップロードやダウンロードに利用されます。
特徴: デフォルトポートで、通信内容が暗号化されないため、機密データの送信には不向きです。

ポート3306(MySQL)

用途: MySQLデータベースサーバーの接続に使用されます。
特徴: データベースとアプリケーション間でのデータのやり取りを行います。

ポート5432(PostgreSQL)

用途: PostgreSQLデータベースサーバーの接続に使用されます。
特徴: PostgreSQLデータベースへの接続やデータのやり取りに用いられます。

ポート番号の設定方法

ポート番号の設定は使用するアプリケーションやネットワーク機器によって異なりますが、一般的な方法は以下の通りです。

アプリケーションの設定ファイル:

Webサーバー: httpd.conf や nginx.conf で Listen または listen ディレクティブを使用して設定します。
データベースサーバー: my.cnf や postgresql.conf で port パラメータを指定します。

コマンドラインでの指定:

一部のアプリケーションは起動時にコマンドラインオプションや環境変数でポート番号を指定できます。例えば、Node.js や Java のアプリケーションではコマンドや設定ファイルで設定します。

ネットワーク機器での設定:

ルーターやファイアウォールでポート転送(ポートフォワーディング)を設定し、外部からのアクセスを内部の特定ポートに転送します。

コンテナ化された環境(Dockerなど):

Docker では -p オプションを使用してポートマッピングを設定します。

クラウドサービス:

AWS、Azure、Google Cloud などのクラウドサービスでは、インスタンスやサービスの設定画面でポート番号を指定し、セキュリティグループやファイアウォールルールを設定します。

Discussion