ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
ポート番号は、1 台のホスト上で動く複数の通信アプリケーションを区別するための 16bit の識別子です。IP アドレスが「どのホストか」を示すのに対し、ポート番号は「そのホストのどのサービス/プロセスか」を示します。トランスポート層 (TCP/UDP) のヘッダに送信元ポートと宛先ポートが入り、この組み合わせ (IP+ポート×送受信) でコネクションが一意に識別されます。詳しくは親項目の ポート番号 および IP を参照してください。
ポート番号は 0 から 65535 までの値を取り、IANA (Internet Assigned Numbers Authority) によって用途別に 3 つの帯域に区分されています。中でも 0〜1023 の「ウェルノウンポート (well-known ports / システムポート)」は、世界共通で主要サービスに割り当てられた予約済みの番号帯で、サーバがこの番号で待ち受けることで、クライアントは事前に番号を知らなくても標準サービスへ接続できます。
仕組み
IANA はポート空間を次の 3 帯域に分けて管理しています。それぞれ割り当てポリシーと使われ方が異なります。
- ウェルノウンポート (0〜1023): HTTP・HTTPS・SSH・SMTP など基幹サービスの予約帯。UNIX 系 OS ではこの帯で listen するのに root 権限が必要なため「特権ポート (privileged ports)」とも呼ばれます。
- 登録済みポート (1024〜49151): MySQL の 3306、PostgreSQL の 5432 のように、ベンダやプロジェクトが IANA に申請して登録するポート。一般ユーザ権限でも listen できます。
- 動的/プライベートポート (49152〜65535): エフェメラルポート (一時ポート) とも呼ばれ、クライアントが接続する際の送信元ポートとして OS が自動割り当てします。特定サービスへの固定割り当ては行われません。
重要なのは TCP と UDP がそれぞれ独立した 65536 個のポート空間を持つ点です。たとえば TCP/53 と UDP/53 は両方とも DNS が使いますが、別々のソケットです。同様に、ある番号が TCP では使用中でも UDP では空いている、ということが普通に起こります。
主要ウェルノウンポート一覧
| ポート | プロトコル | サービス | 用途 |
|---|---|---|---|
| 20 / 21 | TCP | FTP | ファイル転送 (20=データ, 21=制御) |
| 22 | TCP | SSH | 暗号化リモートログイン・SFTP |
| 23 | TCP | Telnet | 平文リモートログイン (現在は非推奨) |
| 25 | TCP | SMTP | メール送信 (MTA 間転送) |
| 53 | TCP/UDP | DNS | 名前解決 (通常 UDP、大きい応答やゾーン転送は TCP) |
| 80 | TCP | HTTP | Web (平文) |
| 110 | TCP | POP3 | メール受信 (ダウンロード型) |
| 143 | TCP | IMAP | メール受信 (サーバ保持型) |
| 443 | TCP | HTTPS | Web (TLS 暗号化) |
| 3306 | TCP | MySQL | リレーショナルデータベース |
| 5432 | TCP | PostgreSQL | リレーショナルデータベース |
| 6379 | TCP | Redis | インメモリ KVS |
| 8080 | TCP | HTTP 代替 | アプリサーバ・プロキシ (登録済み帯) |
実用例
現在どのポートでサービスが待ち受けているかは、Linux なら ss や netstat で確認できます。下記は LISTEN しているポートとサービスの対応を見る例です。
# LISTEN 中の TCP ポートをプロセス名付きで一覧 (ss は新しい定番)
sudo ss -tlnp
# /etc/services にポート番号とサービス名の対応表がある
grep -E '^(http|https|ssh|smtp|domain)\s' /etc/services
# 80 番が何のプロセスに使われているか
sudo ss -tlnp 'sport = :80'
# 任意のポートで簡易サーバを立てて挙動を確認 (8080 は登録済み帯なので非 root で可)
python3 -m http.server 8080
1023 以下で listen しようとして Permission denied になった場合は特権ポートの制約です。sudo で起動するか、リバースプロキシ (80/443) からアプリ (8080) へ転送する構成にします。
主な用途
- サーバ設計: 公開サービスは標準ポートで待ち受けることで、クライアント側の設定を簡略化できる。
- ファイアウォール設計: 「22/80/443 だけ許可」のようにウェルノウンポート単位で通信制御を行う。
- トラブルシュート: 期待したポートで listen できているかを確認し、接続不能の原因を切り分ける。
- セキュリティ監査: 不要なポートが開いていないか棚卸しする。
帯域の比較
| 帯域 | 範囲 | 別名 | 主な使われ方 | listen に必要な権限 (UNIX) |
|---|---|---|---|---|
| ウェルノウン | 0〜1023 | システムポート / 特権ポート | 標準サービスの待受 | root |
| 登録済み | 1024〜49151 | ユーザポート | 製品・アプリの待受 | 一般ユーザ可 |
| 動的 | 49152〜65535 | エフェメラル / プライベート | クライアントの送信元ポート | 一般ユーザ可 |
注意点
- 標準ポート≠固定義務: 80=HTTP はあくまで慣習。SSH を 22 以外で動かすことも技術的には可能だが、ポートスキャンで容易に見つかるため「ポート変更=セキュリティ対策」とは言えない。
- TCP/UDP の取り違え: 53 のように両方使うサービスがあり、ファイアウォールで片方しか許可せず障害になる事故が多い。
- 特権ポートの誤解: 1023 以下で動かすために常に root 実行するのはセキュリティ上望ましくない。可能なら capability (CAP_NET_BIND_SERVICE) やリバースプロキシを使う。
- エフェメラルポート枯渇: 大量の短命コネクションを張る環境では送信元ポートが枯渇 (port exhaustion) することがある。TIME_WAIT の蓄積に注意。
関連リンク
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- ウェルノウンポート一覧
- ポートフォワーディング
- ポートの確認方法
- nmapによるポートスキャン
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- Scratch 作品の公開方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?