新Linux入門|ポート番号とは:通信を識別するための基本概念と分類

 今回は、ネットワーク通信の中でもとても大切な「ポート番号」についてわかりやすく説明していきます。
IPアドレスが“家の住所”だとしたら、ポート番号は“部屋番号”のようなものです🏠✨

 同じコンピューターの中で複数のアプリケーションが同時に通信を行うとき、どの通信がどのアプリのものかを識別するためにポート番号が使われます。

🌐 ポート番号の概要

 ポート番号(Port Number)は、TCPUDP といったトランスポート層プロトコルで使われる識別番号です。
 1台のマシンが複数のサービス(例:Web、メール、SSHなど)を動かしていても、ポート番号を使えば正しく通信を振り分けることができます。

項目説明
対象プロトコルTCP / UDP
範囲0 ~ 65,535
役割通信をアプリケーションごとに識別
表記例HTTP: 80 / HTTPS: 443 / SSH: 22

💬ポイント
たとえば、ブラウザでウェブサイトを開くときには「宛先ポート80番(HTTP)」に通信を送ります。
メールを受け取るときは「ポート110(POP3)」や「ポート993(IMAPS)」を使います📬

🔢 ポート番号の分類

ポート番号は、利用目的や割り当て方によって3つの範囲に分類されます。

区分範囲主な用途
ウェルノウンポート(Well-known ports)0 ~ 1,023OS標準サービスや一般的なサーバ用HTTP(80)、HTTPS(443)、SSH(22)
登録ポート(Registered ports)1,024 ~ 49,151一般アプリや特定サービス用MySQL(3306)、PostgreSQL(5432)
ダイナミック/プライベートポート(Dynamic/Private ports)49,152 ~ 65,535一時的・動的に割り当てるクライアント通信用Webアクセス時の動的ポートなど

💬ポイント
 クライアント側のアプリケーション(ブラウザなど)は、通信ごとに動的ポートを自動的に選んで接続を行います。
そのため、同じサーバーに複数のクライアントが同時にアクセスしても混線しません🎯

🌍 代表的なポート番号一覧

サービス名使用ポートプロトコル説明
HTTP80TCPWebページ閲覧用
HTTPS443TCP暗号化されたWeb通信
SSH22TCPリモートログイン用
FTP21TCPファイル転送(制御)
DNS53UDP/TCP名前解決サービス
SMTP25TCPメール送信
POP3110TCPメール受信
IMAPS993TCP暗号化されたメール受信

💡ポイント
 もしWebサーバーを立ち上げたのにアクセスできない場合、ポート番号が閉じている可能性があります。
そのときは、ファイアウォールの設定を確認してみましょう。

🔍 ポート番号の確認コマンド

開いているポートや待ち受け中のサービスを確認するために、
ssnetstat コマンドを使用します。

🔧 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番で待ち受けていることが確認できます。

🧩 netstatコマンド(旧コマンド)

コマンド書式

netstat [オプション]
オプション説明
-tTCP接続のみ表示
-uUDP接続のみ表示
-lLISTEN状態のみ表示
-pプロセス情報も表示
-nポート番号を数値で表示

使用例

[root@AlmaLinux ~]# netstat -tuln
Proto Recv-Q Send-Q Local Address   Foreign Address State
tcp   0      0      0.0.0.0:22      0.0.0.0:*      LISTEN
tcp   0      0      0.0.0.0:80      0.0.0.0:*      LISTEN

💬ポイント
新しい環境では ss コマンドが推奨されていますが、
古いドキュメントでは netstat を目にすることも多いので両方覚えておくと安心です。

🖥️ ポート番号の動作イメージ

例えば、suzuki さんのPCからWebサーバーにアクセスする場合の通信の流れは次のようになります👇

通信方向送信元ポート宛先ポート説明
suzukiのPC → Webサーバー49512(動的)80(HTTP)リクエスト送信
Webサーバー → suzukiのPC80(HTTP)49512(動的)レスポンス返信

💬ポイント
このように、クライアント側は毎回異なる動的ポート番号を使用し、
サーバー側は固定のウェルノウンポートで待ち受けています。

✨ まとめ

  • ポート番号は「通信を識別するための番号」
  • 0〜1023はウェルノウン、1024〜49151は登録、49152〜65535は動的ポート
  • ss -tuln で現在開いているポートを確認できる
  • クライアントは動的ポートを使い、サーバーは固定ポートで待ち受ける

ポート番号の理解は、セキュリティ設定やトラブルシューティングの第一歩です。
これを押さえておけば、「どの通信がどのサービス?」がすぐに判断できるようになります😊