ポート番号 ぽーとばんごう
ポート番号Well-Known PortソケットTCPUDPサービス識別
ポート番号について教えて
簡単に言うとこんな感じ!
IPアドレスが「建物の住所」なら、ポート番号は「部屋番号」みたいなものだよ。同じPCでもWebサーバーはポート80、メールはポート25ってふうに、どのサービス宛かを識別するんだ!
ポート番号とは
ポート番号は、TCP・UDPが使う通信の宛先を細かく識別する番号です。IPアドレスがコンピューターを特定するのに対し、ポート番号はそのコンピューター上のどのアプリケーション(プロセス)宛かを区別します。0〜65535の範囲の整数で表されます。
例えばWebサーバーは同じIPアドレスを持ちながら、HTTP(ポート80)・HTTPS(ポート443)・SSH(ポート22)を同時に待ち受けています。クライアントは宛先IPアドレスと宛先ポート番号の組み合わせで、どのサービスに接続するかを指定します。
通信は「送信元IPアドレス:ポート番号」と「宛先IPアドレス:ポート番号」の4つの組み合わせ(4-tuple)で一意に識別されます。これにより、一台のサーバーが何千もの同時接続を管理できます。
ポート番号の分類
| 範囲 | 分類 | 説明 |
|---|---|---|
| 0〜1023 | Well-Known Port(ウェルノウンポート) | IANAが標準サービスに割り当て済み。特権ポートとも呼ばれる |
| 1024〜49151 | Registered Port(登録済みポート) | アプリケーションが登録して使用 |
| 49152〜65535 | Dynamic/Private Port(動的ポート) | クライアントが一時的に使う送信元ポート |
主なWell-Knownポート番号
| ポート番号 | プロトコル | サービス |
|---|---|---|
| 20 / 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/UDP | HTTPS(暗号化Web)/ HTTP/3 |
| 3306 | TCP | MySQL |
| 5432 | TCP | PostgreSQL |
| 8080 | TCP | HTTP代替(開発環境でよく使う) |
歴史と背景
- 1972年:ARPANETで最初のポート割り当てが行われた
- 1980年代:IANA(Internet Assigned Numbers Authority)がポート番号の管理機関となる
- 1994年:RFC 1700でポート番号の公式リストが整備
- 現在:IANAの公式リストは定期更新され、
/etc/services(Linux)で確認できる
ファイアウォールとポート番号
ポート番号はファイアウォールの設定に直結します。「ポート80と443は許可、それ以外は拒否」のようなルールで、不要なサービスへの外部アクセスを遮断します。
# iptablesの例(ポート80と443のみ許可)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
セキュリティの観点から、不要なポートは閉じておくことが基本です。netstat -tlnp(Linux)やss -tlnpコマンドで開いているポートを確認できます。
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 6335 | IANA サービス名およびトランスポートプロトコルポート番号レジストリ |
| RFC 793 | TCP(ポート番号の使用方法を定義) |
| RFC 768 | UDP(ポート番号の使用方法を定義) |
関連用語
- TCP — ポート番号を使うトランスポートプロトコル
- UDP — ポート番号を使うトランスポートプロトコル
- ソケット — IPアドレスとポート番号を組み合わせた通信端点
- 3ウェイハンドシェイク — TCPがポートを使って接続を確立する手順