ポート番号
Port Number
概要(サマリー)
ポート番号とは、通信するときに、コンピューターの中のどのサービスやアプリにデータを届けるかを示す番号のことである。
ローカルホストやIPアドレスが「住所」だとすると、ポート番号は「どの扉を使うか」「何号室に入るか」を決める番号のようなものだ。たとえばWeb開発では 3000 や 8080、SSH接続では 22 や 10022 などがよく使われる。ターミナルで「そのポートはすでに使われています」と出るときは、別のアプリがその入り口を先に使っていることが多い。
詳細解説
ポート番号は「同じコンピューター内の行き先」を分ける番号である
コンピューターは、同時にいろいろな通信を受け取ることがある。
たとえば、Web表示、SSH接続、メール送受信、データベース接続などである。
このとき、IPアドレスやlocalhostなどのホスト名だけでは「どのコンピューターに送るか」までは分かっても、「その中のどのアプリに渡すか」までは分からない。
そこで使われるのがポート番号である。
つまり通信では、ざっくり次の2つがセットで使われる。
- IPアドレスや localhost などのホスト名 = どのコンピューターに送るか
- ポート番号 = そのコンピューターのどの入口に送るか
この2つを組み合わせることで、通信の行き先が具体的に決まる。
たとえば「localhost:3000」はどういう意味か
初心者がよく見るのが、次のような形である。
http://localhost:3000
これは、次の意味になる。
localhost= 今使っている自分のパソコン自身3000= その中で3000番の入口を使う
つまり、今のパソコンの中で動いている、3000番ポートを使うアプリへアクセスしているということになる。
開発中のWebアプリでよくこの形を見るのは、そのアプリがローカル環境の特定ポートで待ち受けているからである。
なぜ番号が必要なのか
1台のコンピューターの中で、複数のサービスが同時に動くことは珍しくない。
もし入口が1つしかなかったら、どの通信をどのアプリに渡せばよいか分からなくなる。
たとえば同じPCで、次のようなものが同時に動いていることがある。
- 開発用Webサーバー
- データベース
- SSHサーバー
- メール関連サービス
これらを区別するために、サービスごとに違うポート番号を使う。
つまりポート番号は、コンピューターの中で通信先を整理するための仕組みである。
よく使われるポート番号の例
初心者向けによく出るものを挙げると、次のような番号がある。
- 80
HTTP通信でよく使われる - 443
HTTPS通信でよく使われる - 22
SSH接続でよく使われる - 25 / 587
メール送信で使われることがある - 3306
MySQLでよく使われる - 5432
PostgreSQLでよく使われる - 3000 / 5173 / 8000 / 8080
開発用サーバーでよく使われる
ただし、「この番号しか使えない」という意味ではない。
開発環境では、用途や設定に応じて別のポートを使うこともよくある。
「ポートが使われている」とはどういう意味か
開発中によくあるエラーのひとつが、「このポートはすでに使用中です」というものだ。
これは、その番号の入口を別のアプリやプロセスが先に使っている状態である。
たとえば、すでに 3000 番で別の開発サーバーが起動しているのに、新しく同じ 3000 番を使おうとすると競合する。
その結果、起動できなかったり、別のエラーが出たりする。
このときの対応は主に2つである。
- そのポートを使っているアプリを終了する
- 別のポート番号に変更する
初心者のうちは、「同じ入口で待ち受けるアプリは基本的に1つ」と考えるとイメージしやすい。
URL・IPアドレスとの違い
ここはかなり混同しやすい。
- IPアドレス
どのコンピューターかを示す番号 - ポート番号
そのコンピューター内のどのサービスかを示す番号 - URL
どこへどうやってアクセスするかを表す文字列
たとえば http://192.168.1.10:8080/test なら、
192.168.1.10がコンピューター8080が入口/testがその先のページやルート
というイメージになる。
また、先頭の http は、どの通信方式でアクセスするかを表している。
開発でよく使う場面
ポート番号は、初心者でも意外と早い段階で出会う。
たとえば次のような場面である。
ローカル開発サーバーを立ち上げるとき
React、Vue、PHPの簡易サーバー、Pythonの開発サーバーなどでよく登場する。
SSH接続するとき
サーバーへ接続する際、標準では 22 番ポートが使われる。
ただしセキュリティや運用の都合で 10022 のように変更していることもある。
データベースへ接続するとき
MySQLやPostgreSQLなども、それぞれよく使われるポート番号がある。
Dockerやサーバー設定を見るとき
コンテナやサーバー設定では、「どのポートを外へ公開するか」が重要になる。
このあたりでポート番号の理解がかなり役立つ。
AI時代にポート番号の理解が重要な理由
AIに「開発サーバーを起動して」と頼むと、localhost:3000 や localhost:8000 のような指示や出力がよく出てくる。
また、Docker、APIサーバー、フロントエンド、データベースなどをAIと一緒に扱うと、ポート番号の話はかなり高い頻度で出てくる。
このとき、ポート番号の意味が分かっていないと、
- どこにアクセスすればよいか分からない
- エラー原因を読み解けない
- 複数サービスのつながりが見えない
という状態になりやすい。
逆に、「ポート番号はサービスごとの入口」と理解しているだけで、AIの出力やエラーメッセージの意味がかなり読みやすくなる。
よくある勘違い
ポート番号 = IPアドレス?
違う。
IPアドレスはコンピューターそのものの場所を示し、ポート番号はその中のどのサービスかを示す。
ポート番号はURLの飾り?
飾りではない。
必要なときは、どのアプリに通信を届けるかを決める重要な情報である。
80や443以外を使うのはおかしい?
おかしくない。
本番では80や443がよく使われるが、開発中は3000や8080など別の番号を使うことが普通にある。
ポートが使われている = ネットが壊れている?
そうとは限らない。
多くの場合は、別のアプリが同じポート番号を先に使っているだけである。
ポート番号を変えれば何でも安全になる?
それだけで安全になるわけではない。
標準の番号を避けることで少し見つかりにくくなることはあるが、それだけで攻撃を防げるわけではない。認証、権限設定、ファイアウォール、更新管理などの対策が本質である。
AIコーディングとの関係
AIにコード生成や修正を依頼するとき、ポート番号の意味を理解していると、出力されたコードやエラー内容を判断しやすくなる。
通信するときに、コンピューターの中のどのサービスやアプリにデータを届けるかを示す番号のこと。
AIへ相談するときは、「何をしたいのか」「どの環境で起きているのか」「どのファイルやエラーを見ているのか」を一緒に伝えるとよい。
用語だけを投げるより、具体的な状況と期待する結果を添えることで、より実用的な回答を得やすくなる。
まとめ
- ポート番号は、通信するときに、コンピューターの中のどのサービスやアプリにデータを届けるかを示す番号のこと。
- 関連する用語や実際の作業場面と一緒に理解すると、使いどころを判断しやすい。
- AIコーディングでは、用語の意味を理解しているほど、AIの説明や生成コードを確認しやすくなる。
- 迷ったときは、エラー内容、目的、前提条件を整理してAIに聞くとよい。
より詳しくAIに聞いてみよう
- ポート番号とは何かを、中学生でもわかるように具体例つきで説明してください。
- IPアドレスとポート番号の違いを、初心者向けに整理してください。
- localhost:3000 の意味を、図解イメージでやさしく説明してください。
- ポートが使用中と言われたときの原因と対処法を、初心者向けに教えてください。
- Web開発やSSH接続でよく使うポート番号の例を、用途別に整理してください。