ポート番号とは?一覧と確認方法をやさしく図解 — IPアドレスとの違い・ソケット
※この記事にはプロモーション(広告)が含まれます。広告表記の方針
「IPアドレスは分かるけど、ポート番号って何のためにあるの?」——ポート番号は、1台のコンピュータの中で「どのサービスに届けるか」を表す番号です。IPアドレスが建物の住所なら、ポートは部屋番号。この記事では、ポートの役割から、主要な番号、送信元ポート、そして接続を見分けるソケットまでを図解します。手を動かすなら ポート番号の可視化 も参考にしてください。
ポート番号とは — 「どのサービスか」を表す番号
データを相手に届けるには、「どのコンピュータか」だけでは足りません。1台のサーバーは、Webサイト・メール・SSHなどを同時に動かせるからです。そこで、「その中のどのサービスに渡すか」を表す0〜65535の番号が使われます。これがポート番号です。宛先は必ず IPアドレス:ポート番号(例 203.0.113.5:443)の形で指定されます。
IPアドレスとポート番号の違い
2つは担当する層(OSI)が違い、役割が分かれています。IPアドレスの詳細は IPアドレスの仕組み で解説しています。
| IPアドレス | ポート番号 | |
|---|---|---|
| 表すもの | どのコンピュータ(機器)か | その中のどのサービス(アプリ)か |
| 層(OSI) | 第3層(ネットワーク層) | 第4層(トランスポート層) |
| たとえ | 建物の住所 | 部屋番号・入口のドア |
| 範囲 | 32ビット(IPv4) | 0〜65535(16ビット) |
IPアドレスで「相手の機器」まで届き、ポート番号で「その中の正しいアプリ」へ渡される——両方そろって初めて通信相手が決まります。
ポート番号一覧 — ウェルノウンポートとよく使う番号
主要なサービスには、世界共通でポート番号が決められています。だから https:// と書くだけで、ブラウザは自動的に443番へつなぎます。下の表は、実務と試験でよく出てくる番号を用途別にまとめたものです。
| 用途 | ポート | TCP/UDP | サービス | 説明 |
|---|---|---|---|---|
| Web | 80 | TCP | HTTP | Webページ(暗号化なし) |
| 443 | TCP(HTTP/3はUDP) | HTTPS | Webページ(暗号化あり) | |
| 8080 | TCP | HTTP代替 | 開発用サーバー・プロキシでよく使う | |
| 8443 | TCP | HTTPS代替 | 管理画面などでよく使う | |
| 名前解決・設定 | 53 | UDP / TCP | DNS | ドメイン名 → IPアドレス |
| 67 / 68 | UDP | DHCP | IPアドレスの自動配布(67=サーバー側、68=クライアント側) | |
| 123 | UDP | NTP | 時刻同期 | |
| メール | 25 | TCP | SMTP | メールサーバー間の転送 |
| 587 | TCP | SMTP(サブミッション) | メールソフトからの送信 | |
| 465 | TCP | SMTPS | 暗号化したメール送信 | |
| 110 / 995 | TCP | POP3 / POP3S | メール受信(995は暗号化) | |
| 143 / 993 | TCP | IMAP / IMAPS | メール受信・同期(993は暗号化) | |
| ファイル | 20 / 21 | TCP | FTP | ファイル転送(20=データ、21=制御) |
| 69 | UDP | TFTP | ネットワーク機器の設定ファイル転送など | |
| 445 | TCP | SMB | Windowsのファイル共有 | |
| 137〜139 | UDP / TCP | NetBIOS | 古いWindowsの名前解決・ファイル共有 | |
| 2049 | TCP / UDP | NFS | Linux/UNIXのファイル共有 | |
| リモート操作 | 22 | TCP | SSH / SFTP / SCP | 暗号化したリモートログイン・ファイル転送 |
| 23 | TCP | Telnet | リモートログイン(暗号化なし・非推奨) | |
| 3389 | TCP / UDP | RDP | Windowsのリモートデスクトップ | |
| 5900 | TCP | VNC | 画面共有 | |
| 5985 / 5986 | TCP | WinRM | PowerShellのリモート実行(5986は暗号化) | |
| 1494 / 2598 | TCP | Citrix ICA / CGP | Citrixの仮想デスクトップ(2598はセッション画面保持) | |
| 認証・運用管理 | 88 | TCP / UDP | Kerberos | Active Directoryのログイン認証 |
| 389 / 636 | TCP | LDAP / LDAPS | ディレクトリ検索(636は暗号化) | |
| 161 / 162 | UDP | SNMP | 機器の監視(162はトラップ受信) | |
| 514 | UDP | Syslog | ログの収集 | |
| 1812 / 1813 | UDP | RADIUS | 無線LAN・VPNの認証と課金 | |
| VPN | 500 / 4500 | UDP | IPsec(IKE / NAT-T) | IPsec VPNの鍵交換(4500はNAT越え) |
| 1194 | UDP | OpenVPN | OpenVPNの既定ポート | |
| データベース | 1433 | TCP | SQL Server | Microsoft SQL Server |
| 1521 | TCP | Oracle | Oracle Database | |
| 3306 | TCP | MySQL | MySQL / MariaDB | |
| 5432 | TCP | PostgreSQL | PostgreSQL | |
| 6379 | TCP | Redis | Redis | |
| 27017 | TCP | MongoDB | MongoDB |
ここに書いたのは、IANA(番号を管理する団体)が割り当てた番号や、各製品の既定値です。サーバー側の設定で別の番号に変えることもできます。
番号の範囲は3つに分かれる
| 範囲 | 呼び方 | 使われ方 |
|---|---|---|
| 0〜1023 | ウェルノウンポート | HTTP・SSH・DNSなど主要なサービス |
| 1024〜49151 | 登録済みポート | データベースやリモートデスクトップなど、特定の製品・アプリ |
| 49152〜65535 | 動的/プライベートポート | 通信のたびにOSが一時的に使う番号(送信元ポート) |
実際にOSが送信元ポートとして使う範囲は、Windowsでは49152〜65535、Linuxでは多くの場合32768〜60999が既定です。
使用中のポート・開いているポートを確認する方法
「このサーバーで何が待ち受けているか」「相手のポートに届くか」は、トラブル対応で必ず確認するポイントです。自分のPCで使われているポートと、相手のポートに接続できるかは、別のコマンドで調べます。
Windowsで、自分のPCのポートを確認する
:: 待ち受け中(LISTENING)のポートと、使っているプロセスのID(PID)
netstat -ano | findstr LISTENING
:: 443番に関係する接続だけを表示
netstat -ano | findstr :443
:: PIDからプロセス名を調べる(1234の部分を置き換える)
tasklist /FI "PID eq 1234"
PowerShellなら、待ち受け中のTCPポートを番号順に一覧できます。
Get-NetTCPConnection -State Listen |
Sort-Object LocalPort |
Select-Object LocalAddress, LocalPort, OwningProcess, @{n='Process';e={(Get-Process -Id $_.OwningProcess).ProcessName}}
# UDPの待ち受け
Get-NetUDPEndpoint | Sort-Object LocalPort | Select-Object LocalAddress, LocalPort, OwningProcess
相手のポートに接続できるか確認する
# Windows(PowerShell):TcpTestSucceeded が True なら接続できる
Test-NetConnection -ComputerName server01 -Port 443
# Linux / Mac:succeeded や open と出れば接続できる
nc -vz server01 443
Linuxで、自分のサーバーのポートを確認する
# 待ち受け中のTCP・UDPポートと、使っているプロセス(プロセス名の表示にはsudoが必要)
sudo ss -tulnp
# 特定のポートを使っているプロセス
sudo lsof -i :443
| 結果 | 考えられること |
|---|---|
| 自分のPCでLISTENINGになっていない | サービスが起動していない、または別のポート番号で動いている |
| LISTENINGなのに、相手から接続できない | ファイアウォールで止まっている、待ち受けアドレスが 127.0.0.1(自分自身からしか受けない) |
Test-NetConnection が False | サービスが止まっている、途中のファイアウォールやルーターで遮断されている、名前解決に失敗している |
そもそもIPアドレスまで届いているかは ping で確認します。結果の見方とエラー別の原因は pingコマンドの使い方と結果の見方 にまとめています。
UDPは接続の手順(ハンドシェイク)がないため、TCPのように「開いているか」を確実に確かめるのが難しい点に注意してください。
送信元ポート(エフェメラルポート)
ここが見落とされがちな点です。宛先(サーバー側)のポートは固定ですが(Webなら443)、送信元(クライアント側)のポートは、接続のたびにOSが空いている番号を一時的に割り当てます。これをエフェメラルポート(動的ポート)と呼び、通信が終わると解放されます。「行きの宛先は443固定、でも自分の送信元ポートは毎回変わる」というわけです。
接続を見分ける「ソケット」— 4つ組
では、1台のPCから同じサイト(同じIP・同じ443番)へ同時に何本も接続したら、応答はどう区別されるのでしょう? 答えがソケットです。1つの接続は、次の4つの組(+プロトコル)で一意に識別されます。
宛先が同じでも、送信元ポートが違えば別の接続。だからブラウザで同じサイトのタブを何個開いても、どの応答がどのタブのものか取り違えません。実際に送るたびに送信元ポートが変わる様子は ポート番号の可視化 で見られます。
TCPとUDP、そしてNAPTとの関係
ポート番号はトランスポート層(TCP・UDP)のヘッダに入ります。TCPの80番とUDPの80番は別物で、独立して管理されます。だから接続の識別には、IP・ポートに加えてプロトコル(TCPかUDPか)も含めます。また、家庭や会社で1つのグローバルIPを多数の端末で共有できるのは、NAPT(IPマスカレード)がポート番号を付け替えて各端末を見分けているからです。この仕組みは NATの可視化 で確認できます。TCPの接続確立(3ウェイハンドシェイク)は TCPコネクションの可視化 を見てください。
基本情報技術者試験ではこう出る
「ポート番号は何を識別するか(→アプリケーション/サービス)」「HTTP=80、HTTPS=443、SSH=22、DNS=53、SMTP=25 の対応」「IPアドレスとポート番号の組で通信相手を特定する(ソケット)」「ポート番号は何ビットか(→16ビット、0〜65535)」が頻出です。ポート番号がトランスポート層(TCP/UDP)のものである点、NAPTがポート番号で端末を見分ける点もよく問われます。
よくある質問
Q. 使用中のポートを確認するには?
A. Windowsなら netstat -ano | findstr LISTENING で待ち受け中のポートとプロセスID、PowerShellの Get-NetTCPConnection -State Listen でも一覧できます。Linuxは sudo ss -tulnp です。相手のポートに接続できるかは Test-NetConnection -ComputerName 相手 -Port 番号 で確認します(確認方法)。
Q. ポート番号はいくつまで?
A. 16ビットなので 0〜65535 です。0〜1023がウェルノウン、1024〜49151が登録済み、49152〜65535が動的(エフェメラル)ポートです。
Q. なぜ「:80」や「:443」を省略できるの?
A. ブラウザが「httpなら80、httpsなら443」と知っているためです。http://example.com は example.com:80、https://example.com は example.com:443 を意味します。標準以外のポートで動かすときは example.com:8080 のように明示します。
Q. 「ポートが開いている/閉じている」とは?
A. そのポートでサービスが待ち受けているかということです。待ち受けていれば接続でき(開いている)、いなければ拒否されます(閉じている)。使わないポートを開けっぱなしにすると攻撃の入口になるため、ファイアウォールで不要なポートを閉じるのが基本です(ネットワークセキュリティの基礎参照)。
まとめ
ポート番号は、1台のコンピュータの中で「どのサービスに届けるか」を表す番号(0〜65535)。IP=住所、ポート=部屋番号です。宛先はIP:ポートで指定、主要サービスはウェルノウンポート(80/443/22/53…)、送信元ポートは毎回変わるエフェメラルポート、接続はソケット(4つ組)で識別——これらを押さえれば、通信の宛先の考え方がクリアになります。可視化で送るたびの動きを確かめておきましょう。
関連ページ: ポート番号の可視化 / TCPコネクションの可視化 / NATの可視化 / IPアドレスとMACアドレスの違い / 記事一覧