ソケットとポート番号
1台のマシンで同時に動く多数の通信を、IPアドレスとポート番号の組で見分ける仕組みです。通信の出入口であるソケットの考え方まで解説します。
- 1.ポート番号 はマシン内の“どのアプリ宛か”を示す番号。IPアドレス が住所なら、ポートは部屋番号にあたる。
- 2.通信の終端は IP+ポート+プロトコル で一意に決まり、これを束ねた出入口が ソケット。
- 3.0〜1023 は ウェルノウンポート(80=HTTP、443=HTTPS など)で、定番サービスに予約されている。
なぜポート番号が要るのか
1台のマシンには通常、IPアドレスが1つしかありません。しかしその上では、Webサーバ・メール・SSH など複数のアプリが同時に通信しています。届いたデータを「どのアプリに渡すか」を見分ける番号が ポート番号 です。
IPアドレスを建物の住所にたとえるなら、ポート番号は 部屋番号 にあたります。住所だけでは建物までしか届きませんが、部屋番号まで指定して初めて目的の相手に届きます。
- IPアドレス … どのマシンか(L3:ネットワーク層)
- ポート番号 … そのマシン内のどのアプリか(L4:トランスポート層)
通信の終端を一意に決める
ポート番号は 0〜65535 の範囲を取り、TCP と UDP がそれぞれ独立して持ちます。1本の通信(コネクション)は、次の組み合わせで世界に1つだけと特定できます。
- 送信元 IP + 送信元ポート
- 宛先 IP + 宛先ポート
- プロトコル(TCP / UDP)
この5つの値の組を 5タプル と呼びます。同じサーバの 443 番に多数のブラウザが同時接続できるのは、クライアント側のポートが1本ごとに違うため、5タプル全体としては別物になるからです。
ソケットという考え方
アプリがこの通信の出入口を扱うための抽象が ソケット です。プログラムはソケットを「ファイルのように開いて読み書きする」感覚で通信できます。
- サーバは特定ポートで
listen(待ち受け)し、接続が来るとacceptする - クライアントは相手の IP とポートへ
connectする - 以後は確立したソケットに対して読み書きするだけでよい
つまりソケットは「IP + ポート + プロトコル」を1つにまとめ、面倒な配送の詳細を隠してくれる窓口です。
サーバが listen しているソケットは「受付係」で、実際の通信は接続ごとに新しく作られるソケットが担います。受付係は1つでも、確立した会話の本数だけソケットが並行して存在します。
ウェルノウンポートと動的ポート
ポート番号は用途ごとに大きく3つの帯に分かれます。
| 区分 | 範囲 | 用途 |
|---|---|---|
| ウェルノウンポート | 0〜1023 | 定番サービスに予約(HTTP=80、HTTPS=443、SSH=22 など) |
| 登録済みポート | 1024〜49151 | ソフトウェアごとに登録される(PostgreSQL=5432 など) |
| 動的・私用ポート | 49152〜65535 | クライアントが一時的に使う(エフェメラルポート) |
代表的なウェルノウンポートは覚えておくと役立ちます。
- 80 … HTTP
- 443 … HTTPS
- 22 … SSH
- 53 … DNS
多くのOSでは 1023 以下のポートで listen するのに管理者権限が必要です。そのため一般ユーザで動くアプリは 8080 などの高い番号を使い、前段のロードバランサやリバースプロキシで 80/443 を受けるのが定石です。
つまずきポイント
通信トラブルの多くはポート周りの確認で切り分けられます。
- ポートが開いていない … サービスが起動していない、別ポートで待ち受けている
- ファイアウォールで遮断 … サーバは待ち受けていても、手前で止められている
- ポート競合 … 同じ IP・同じポートで複数アプリは同時に
listenできない
接続できないときは、まず「相手がそのポートで待ち受けているか」を確認します。
# 待ち受け中のポートを一覧(Linux)
ss -tlnp
# 特定ホストのポートに到達できるか確認
nc -vz example.com 443
「IP で建物まで、ポートで部屋まで、ソケットでその会話の窓口へ」と段階で捉えると、通信の終端の考え方がすっきり整理できます。
ネットワーク Article
ソケットとポート番号を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ポート番号
比較で見る軸
難易度: basic / カテゴリ: ネットワーク / タグ数: 3
導入後に効く点
通信の終端は IP+ポート+プロトコル で一意に決まり、これを束ねた出入口が ソケット。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- basic
- カテゴリ
- ネットワーク
- タグ数
- 3
判断チェックリスト
- 自社の用途が「ポート番号 / ソケット」に近いか確認する。
- 強みである「ポート番号 はマシン内の“どのアプリ宛か”を示す番号。IPアドレス が住所なら、ポートは部屋番号にあたる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。