it

TCPのポート番号とは?一覧と確認方法も!(ウェルノウンポート:80:443:22:決め方:UDPとの違い:開放など)

当サイトでは記事内に広告を含みます

TCPのポート番号とは?一覧と確認方法も!(ウェルノウンポート:80:443:22:決め方:UDPとの違い:開放など)

ネットワーク通信を学ぶうえで、TCPのポート番号は避けて通れない重要な概念です。Webサイトの閲覧やファイル転送、リモート接続など、私たちが日常的に使うインターネットのサービスはすべて、ポート番号という「仕分けの仕組み」によって正しい宛先に届けられています。

「ポート80って何?」「443と80の違いは?」「そもそもポート番号はどうやって決まるの?」といった疑問を持つ方も多いのではないでしょうか。本記事では、ポート番号の基本から、よく使われるウェルノウンポートの一覧、確認方法、UDPとの違い、そして開放・設定の考え方まで、わかりやすく解説していきます。

TCPのポート番号とは?その役割と重要性

それではまず、TCPのポート番号とは何かという根本的な問いから解説していきます。

ポート番号とは、1台のコンピュータ上で動作する複数のアプリケーションを識別するための番号です。インターネット通信では、IPアドレスによってコンピュータを特定し、その先でポート番号によってどのアプリケーションへデータを渡すかを決定します。

たとえるなら、IPアドレスはマンションの住所、ポート番号は部屋番号のようなもの。住所が同じでも部屋が違えば届く相手も異なるように、同じコンピュータ宛てでもポート番号が違えば処理するアプリケーションが変わります。

ポート番号は0〜65535までの整数で表され、TCPおよびUDPプロトコルで使用されます。この番号によって、1台のサーバーが同時にWebサービス・メールサービス・SSHなど複数のサービスを提供できるようになっています。

TCPとは何か

TCP(Transmission Control Protocol)は、インターネットで最も広く使われる信頼性の高い通信プロトコルです。データを送信する前に「3ウェイハンドシェイク」と呼ばれる手順で接続を確立し、データが正しく届いたかどうかを確認しながら通信を進めます。

順序の保証や再送制御が備わっているため、Webページの閲覧やファイルのダウンロードなど、データの欠損が許されない用途に向いているプロトコルです。

ポート番号の範囲と分類

ポート番号は大きく3つの範囲に分類されています。それぞれの特徴を表で確認してみましょう。

分類 番号範囲 概要
ウェルノウンポート 0〜1023 IANAが標準的なサービスに割り当てた番号。管理者権限が必要
登録済みポート 1024〜49151 特定のアプリケーションやサービスが登録・使用する番号
動的・プライベートポート 49152〜65535 OSが一時的に割り当てるエフェメラルポート

特に0〜1023のウェルノウンポート(Well-known Ports)は、世界共通のルールとして標準化されており、ネットワーク設計の基盤となっています。

ポート番号が必要な理由

1台のサーバーは通常、複数のサービスを同時に提供します。たとえば、同じIPアドレスのサーバーがWebサーバーとしてもメールサーバーとしても機能するケースは珍しくありません。

ポート番号がなければ、届いたデータをどのアプリケーションに渡せばよいか判断できません。ポート番号こそが、複数サービスの並行運用を可能にする仕組みなのです。

ウェルノウンポート一覧と主要ポートの解説(80・443・22など)

続いては、実際によく使われるウェルノウンポートの一覧と、特に重要なポート番号について確認していきます。

ウェルノウンポートはIANA(Internet Assigned Numbers Authority)によって管理されており、世界標準として使われています。代表的なポート番号を一覧で見てみましょう。

ポート番号 プロトコル サービス名 用途
20 TCP FTP(データ) ファイル転送のデータ通信
21 TCP FTP(制御) ファイル転送の制御通信
22 TCP SSH 安全なリモートログイン
23 TCP Telnet リモートログイン(非暗号化)
25 TCP SMTP メール送信
53 TCP/UDP DNS ドメイン名の名前解決
80 TCP HTTP Webページの通信(非暗号化)
110 TCP POP3 メール受信
143 TCP IMAP メール受信(サーバー管理型)
443 TCP HTTPS Webページの通信(SSL/TLS暗号化)
3306 TCP MySQL MySQLデータベース接続
3389 TCP RDP Windowsリモートデスクトップ

ポート80(HTTP)とポート443(HTTPS)の違い

ポート80はHTTPポート443はHTTPSとして使われる最も身近なポートです。どちらもWebページの閲覧に使われますが、暗号化の有無が大きな違いになります。

ポート80では通信内容が平文のまま流れるため、盗聴や改ざんのリスクがあります。一方ポート443では、SSL/TLSによる暗号化が施されており、現代のWebサービスではHTTPSが標準となっています。ブラウザのアドレスバーに「鍵マーク」が表示されていれば、ポート443を使ったHTTPS通信が行われているサインです。

ポート22(SSH)の役割

ポート22はSSH(Secure Shell)に使われるポートで、サーバーへの安全なリモートログインを実現します。以前広く使われていたTelnet(ポート23)は通信内容が暗号化されないため、現在ではほぼSSHに置き換えられています。

LinuxサーバーやクラウドVM(仮想マシン)の管理には、SSHを使ったターミナル接続が一般的です。セキュリティ観点から、デフォルトの22番ポートを別の番号に変更して運用するケースも多くあります。

その他の重要ポートとその用途

DNS(ポート53)は、ドメイン名をIPアドレスに変換する名前解決に使われます。Webブラウザでアドレスを入力するたびに、裏側でDNS通信が行われているのです。

また、データベースサービスにもポートが割り当てられています。MySQLはポート3306、PostgreSQLはポート5432、Redisはポート6379が標準です。これらはサーバー内部での通信に使われることが多く、外部に開放するかどうかはセキュリティポリシーで慎重に判断する必要があります。

ポート番号の確認方法とコマンド解説

続いては、実際に自分の環境でポートの使用状況を確認する方法を見ていきます。

開発やサーバー管理の現場では、どのポートが使われているか、特定のポートが開いているかを調べる機会が頻繁にあります。OSやツールを使ったポート確認の方法をコマンドと合わせて解説します。

Windowsでポートを確認する(netstat)

Windowsではnetstatコマンドを使ってポートの使用状況を確認できます。コマンドプロンプトまたはPowerShellで実行してみましょう。


# 使用中のポートとプロセスIDを一覧表示
netstat -ano
特定のポート(例:80)を絞り込む
netstat -ano | findstr :80
出力結果:
TCP    0.0.0.0:80    0.0.0.0:0    LISTENING    4512
TCP    127.0.0.1:80  0.0.0.0:0    LISTENING    7890

出力結果の「LISTENING」はそのポートで待ち受け中であることを意味します。末尾の数字はプロセスID(PID)で、タスクマネージャーと照合することでどのアプリが使っているかを特定できます。

LinuxやmacOSでポートを確認する(ss・lsof)

Linux環境ではssコマンドlsofコマンドが便利です。


# TCP接続中のポートを一覧表示(ss)
ss -tlnp
特定ポート(443)を使用中のプロセスを確認(lsof)
lsof -i :443
出力結果(lsof例):
COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
nginx    1234   root   6u  IPv4   23456      0t0  TCP *:443 (LISTEN)

lsofは「List Open Files」の略で、ポートに限らず開いているファイルやソケットをすべて確認できる強力なコマンドです。

Pythonでポートの開放状況を確認する

プログラムからポートの開放状況を確認したい場合、Pythonのsocketモジュールを使う方法があります。


import socket
指定したホストとポートへの接続を試みる関数
def check_port(host, port, timeout=3):
# ソケットオブジェクトを作成
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# タイムアウトを設定
sock.settimeout(timeout)
try:
    # 接続を試みる(成功なら0が返る)
    result = sock.connect_ex((host, port))
    if result == 0:
        print(f"ポート {port} は開いています")
    else:
        print(f"ポート {port} は閉じています")
finally:
    sock.close()
サーバー「dragonserver.example.com」のポート443を確認
check_port("dragonserver.example.com", 443)
check_port("dragonserver.example.com", 8080)
出力結果:
ポート 443 は開いています
ポート 8080 は閉じています

このスクリプトを応用すれば、複数のポートをまとめてスキャンする簡易ポートチェッカーを作ることもできます。

UDPとの違い・ポートの決め方・開放の考え方

続いては、TCPのポートを理解するうえで欠かせない「UDPとの違い」「ポート番号の決め方」「ポートの開放」について確認していきます。

TCPとUDPのポートの違い

TCPとUDPは、ともにポート番号を使ってアプリケーションを識別しますが、通信の特性が大きく異なります。

項目 TCP UDP
接続方式 コネクション型(接続確立あり) コネクションレス型(接続確立なし)
信頼性 高い(再送・順序保証あり) 低い(再送・順序保証なし)
速度 やや遅い 高速
主な用途 Web・メール・SSH・FTP DNS・動画ストリーミング・VoIP・ゲーム
代表的なポート 80, 443, 22, 25 53, 67, 68, 123

UDPはデータの到達保証よりも速度を優先するプロトコルです。動画のリアルタイム配信やオンラインゲームでは、多少のデータ欠損よりも遅延の少なさが重要なため、UDPが選ばれます。

同じポート番号でも、TCPとUDPは独立して扱われます。たとえばポート53はDNSとして使われますが、TCPとUDP両方で使用されることがあります。「ポート番号が同じ=同じサービス」とは限らず、プロトコルもセットで確認することが大切です。

ポート番号の決め方

ポート番号をどう決めるかは、システム設計において重要な判断のひとつです。

標準サービスにはウェルノウンポートをそのまま使うのが原則です。HTTPなら80、HTTPSなら443、SSHなら22といった番号はすでに世界共通で認識されているため、ドキュメントや運用で混乱が生じにくくなります。

独自サービスや開発中のアプリケーションには、1024〜49151の登録済みポート範囲から選ぶのが一般的です。よく使われる慣習として、開発用のWebサーバーにはポート3000・8000・8080などが使われることが多くあります。

ただし、すでに他のアプリが使用しているポートとの競合には注意が必要です。netstatやssコマンドで事前に確認してから割り当てるのが安全な進め方でしょう。

ポートの開放とファイアウォール設定

サーバーで新しいサービスを公開するには、ファイアウォールでポートを開放する設定が必要です。Linux環境ではufwやfirewalldがよく使われます。


# ufw(Ubuntu)でポート443を開放する例
sudo ufw allow 443/tcp
現在の開放状況を確認
sudo ufw status
出力結果:
Status: active
To                         Action      From
--                         ------      ----
443/tcp                    ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere

クラウド環境(AWS・GCPなど)では、OSのファイアウォールに加えてセキュリティグループやネットワークACLでもポートの制御が行われます。不要なポートを開放したままにしておくと攻撃の入口になりかねないため、必要最小限のポートのみを開放するという原則を守ることが重要です。

まとめ

本記事では「TCPのポート番号とは?一覧と確認方法も!」というテーマで、ポート番号の基本的な役割から、ウェルノウンポートの一覧、確認コマンド、UDPとの違い、ポートの決め方や開放方法まで幅広く解説しました。

ポート番号は、ネットワーク通信の根幹を支える仕組みです。ポート80のHTTPと443のHTTPSの違い、22番ポートのSSHの重要性、TCPとUDPの使い分けなど、これらを理解することでサーバー設計やトラブルシューティングの精度が格段に上がるでしょう。

また、ポートの確認にはnetstat・ss・lsofといったコマンドが役立ち、Pythonのsocketモジュールを使えばプログラムからの確認も可能です。ファイアウォールの設定とあわせて、必要なポートだけを適切に開放する運用習慣を身につけていくことが、セキュアなネットワーク環境を維持するうえで何より大切な姿勢といえます。