ポート
ネットワーク通信でプロセスを識別する番号で、TCP/UDP の接続先を指定する
ネットワーク基礎
ポートとは
ポートは、ネットワーク通信でプロセスを識別する 0〜65535 の番号で、IP アドレスと組み合わせて通信先を特定する。IP アドレスが「建物の住所」なら、ポートは「部屋番号」。
ポート番号の分類
| 範囲 | 名称 | 例 |
|---|---|---|
| 0〜1023 | ウェルノウンポート | 80 (HTTP), 443 (HTTPS) |
| 1024〜49151 | 登録済みポート | 3000 (開発サーバー), 5432 (PostgreSQL) |
| 49152〜65535 | 動的ポート | OS が自動割り当て |
主要なポート番号
| ポート | プロトコル | 用途 |
|---|---|---|
| 22 | SSH | リモートログイン |
| 53 | DNS | 名前解決 |
| 80 | HTTP | Web (非暗号化) |
| 443 | HTTPS | Web (暗号化) |
| 3306 | MySQL | データベース |
| 5432 | PostgreSQL | データベース |
| 6379 | Redis | キャッシュ |
| 8080 | HTTP (代替) | 開発サーバー |
Lambda とポート
Lambda はサーバーレスのため、ポートの概念がない。API Gateway がポート 443 (HTTPS) でリクエストを受け、Lambda を呼び出す。
クライアント → API Gateway (:443) → Lambda (ポートなし)
ポートの確認
# 使用中のポートを確認
lsof -i :3000
# COMMAND PID USER FD TYPE DEVICE NODE NAME
# node 1234 user 22u IPv6 TCP *:3000 (LISTEN)
# ポートが開いているか確認
nc -zv localhost 3000
ポートフォワーディング
# ローカルの 8080 をリモートの 80 に転送
ssh -L 8080:localhost:80 user@remote-server
# localhost:8080 でリモートの Web サーバーにアクセス
よくある問題
| 問題 | 対策 |
|---|---|
| ポートが既に使用中 | lsof -i :PORT で確認、プロセスを停止 |
| ファイアウォールでブロック | セキュリティグループのインバウンドルールを確認 |
| 権限エラー (1024 未満) | root 権限が必要、または 8080 等を使用 |
理論と実装の両面から学ぶなら関連書籍が参考になる。