新Linux入門|ポート番号の種類と役割:ウェルノウンポートからプライベートポートまで

 今回は、ネットワーク通信の基本中の基本ともいえる ポート番号の種類と役割 について、やさしく丁寧に解説していきます。
 IPアドレスが「家の住所🏠」なら、ポート番号は「部屋番号🏢」のようなもので、どのサービスに通信を届けるかを決めるために使われます。

 たとえば、同じサーバーでWebサービス(HTTP)とメールサービス(SMTP)を同時に動かしていても、
それぞれが異なるポート番号を使って通信することで混線せずに動作できるわけです✨

🌐 ポート番号とは?

 ポート番号(Port Number)は、TCPUDP といったトランスポート層のプロトコルで使用される識別番号です。
ネットワーク通信において、どのアプリケーションとやり取りをするかを判断するために使われます。

項目内容
使用される層トランスポート層(TCP / UDP)
数値範囲0 ~ 65,535
役割通信の送信元・宛先を識別
利用例HTTP(80), SSH(22), DNS(53), MySQL(3306)

🔢 ポート番号の分類

ポート番号は大きく3つの範囲に分かれています。
この分類を理解しておくと、どのポートをどんな用途で使うのかがすぐにわかります。

種類範囲主な用途代表的な例
ウェルノウンポート(Well-known ports)0 ~ 1,023OSや主要サービスが使用する固定ポートHTTP(80), HTTPS(443), SSH(22), DNS(53)
登録ポート(Registered ports)1,024 ~ 49,151一般的なアプリケーションやソフトウェアが使用MySQL(3306), PostgreSQL(5432), Docker(2375)
ダイナミック/プライベートポート(Dynamic/Private ports)49,152 ~ 65,535クライアント通信など一時的に使用Webブラウザの動的ポートなど

💬ポイント
クライアント側は通常、ダイナミックポートをランダムに選んで通信を開始します。
一方、サーバー側は固定のウェルノウンポートで待機しています。
このように役割を分けることで、通信の整合性と識別が保たれています。

🌍 代表的なポート番号とアプリケーション

サービス名使用ポートプロトコル用途
HTTP80TCPWebページ閲覧
HTTPS443TCP暗号化されたWeb通信
SSH22TCPリモートログイン
DNS53UDP / TCP名前解決サービス
FTP21TCPファイル転送
SMTP25TCPメール送信
IMAP143TCPメール受信
MySQL3306TCPデータベース接続

💬ポイント
 もし「Webサーバーが動いているのに接続できない!」というときは、ファイアウォールが該当ポートを閉じていないか確認しましょう。

🧭 ポートを確認する

ネットワークポートの状態を確認するのに便利なコマンドがいくつかあります。

🔍 ssコマンド

コマンド書式

ss [オプション]

説明
 ss はネットワークソケット情報を表示するコマンドで、現在開いているポートや待受中のサービスを確認できます。

オプション説明
-tTCP接続のみを表示
-uUDP接続のみを表示
-lLISTEN(待受)状態のソケットのみを表示
-nポート番号を数値で表示(名前解決をしない)
-pポートを使用しているプロセスを表示

使用例

[root@AlmaLinux ~]# ss -tuln
Netid  State   Recv-Q  Send-Q  Local Address:Port   Peer Address:Port
tcp    LISTEN  0       128     0.0.0.0:22           0.0.0.0:*
tcp    LISTEN  0       128     0.0.0.0:80           0.0.0.0:*
udp    UNCONN  0       0       127.0.0.1:323        0.0.0.0:*

💬ポイント
この出力では、SSH(22番)とHTTP(80番)が待受状態であることが確認できます。

🧩 firewall-cmdコマンド

ファイアウォールでポートを開放するには、firewalld を操作する firewall-cmd コマンドを使用します。

コマンド書式

firewall-cmd [オプション]

説明
ネットワーク通信を制御するファイアウォール設定を管理します。

オプション説明
--list-ports現在開いているポートを一覧表示
--add-port=ポート番号/プロトコル指定ポートを一時的に開放
--permanent永続的に設定を保存
--reload設定を再読み込みして反映

使用例

[root@AlmaLinux ~]# firewall-cmd --add-port=80/tcp --permanent
success
[root@AlmaLinux ~]# firewall-cmd --reload
success

💬ポイント
これでHTTP通信(ポート80)が恒久的に許可されました。
サーバー公開時にはセキュリティを考慮し、必要なポートだけを開けるようにしましょう🔐

🖥️ 通信の流れのイメージ

ポート番号は、クライアントとサーバー間の通信を識別するための「番号札」です。

通信方向送信元ポート宛先ポート役割
クライアント → サーバー49512(動的)80(HTTP)リクエスト送信
サーバー → クライアント80(HTTP)49512(動的)レスポンス返信

💬ポイント
クライアントは都度ランダムなポートを選び、サーバーは常に特定のポートで待機しています。
この仕組みのおかげで、複数の通信が同時に行われても混乱しないんです🎯

✨ まとめ

  • 🔹 ウェルノウンポート(0~1023) は、一般的なサーバーサービスが使用
  • 🔹 登録ポート(1024~49151) は、特定アプリケーションが利用
  • 🔹 ダイナミック/プライベートポート(49152~65535) は、クライアントが動的に使用
  • 🔹 ss コマンドで開いているポートを確認し、firewall-cmd で安全に管理できる

🌟ポイント
ポート番号を理解することは、ネットワークの基本を理解する第一歩です。
AlmaLinuxの環境で実際にコマンドを試しながら、通信の仕組みを体感してみましょう😊