IP アドレスがどのコンピュータかを決める
インターネットにつながったコンピュータには固有の住所が付く。それが IP アドレスである。
見た目は点で区切られた四つの数字だ。192.0.2.10 のような形で、各桁には 0 から 255 が入る。この範囲が決まっているのは、一桁が 8 ビット、つまり 256 通りを表すからだ。
この住所が分かればインターネット上のどのコンピュータかが定まる。自分のノートパソコンにも IP がある。前回、自分の機械もサーバーになれると述べたのはこの意味である。
ポートがそのコンピュータの何番の扉かを決める

ところが一台のコンピュータがする仕事は一つではない。ウェブサービスも動かし、データベースも動かし、開発用の道具も立ち上げる。住所だけではそのどれ宛てか分からない。
だから扉が複数ある。一つの港に船の入る門がいくつもあり、門ごとに通過手続きが違うのと同じだ。その門番号がポートである。
慣習で位置の決まった番号がある。80 番は暗号化しないウェブ、443 番は暗号化されたウェブだ。開発中に 3000 番や 8000 番を見るのも、その道具が慣習的に使う番号だからである。
まとめると、リクエストはどのコンピュータの何番の扉へ行く。住所は一つではなく二つ必要だ。
| ポート | 用途 | いつ目にするか |
|---|---|---|
| 80 | 暗号化しないウェブ | http で始まるアドレス |
| 443 | 暗号化されたウェブ | https で始まるアドレス |
| 3000 | フロントエンド開発サーバー | npm run dev の実行中 |
| 8000 | バックエンド開発サーバー | FastAPI などの実行中 |
| 5432 | PostgreSQL | データベース接続設定 |
ドメインは数字を名前に書き換えたもの
人が数字四つを覚えることはできない。他人の家の電話番号より覚えにくく、案内として書き出すこともできない。だから名前を付ける。
ドメインを買うと、販売元が世界の登録機関にこの名前はこの IP だと登録してくれる。その対応表を DNS という。ドメインネームシステムの略で、販売元の設定画面でこの対応を自分で触れる。
名前の前に付く断片をサブドメインという。www が最も多いが api や blog を付けることもある。使う目的は同じ名前の下で複数のサーバーへ振り分けることだ。www はウェブサーバーへ、api はバックエンドへという具合である。何も付けず名前だけを使うのも同様に有効だ。
ポートはどうなるのか。ブラウザが代わりに埋めてくれる。http で始まれば 80 番、https で始まれば 443 番を付けて要求する。だからアドレスバーに番号を打つことはない。
人が打つもの https://www.example.com/insights
ブラウザが組むもの プロトコル https → ポート 443
名前 www.example.com
DNS 参照 → 192.0.2.10
パス /insights
実際のリクエスト 192.0.2.10 の 443 番の扉 へ /insights を要求画面が出ないとき見る三か所
この構造が分かると、問題が起きたときに確かめる場所が三つに絞られる。
一つ、ドメインが正しい IP を指しているか。DNS 設定を変えた直後なら、世界に行き渡るまで時間がかかる。壊れていると判断する前に待つべき区間がある。
二つ、その IP のサーバーが生きているか。ドメインはきちんと引けているのに、そのコンピュータが落ちていたりプログラムが死んでいたりすることがある。
三つ、開いているべきポートが開いているか。サーバーは生きているのにファイアウォールがその扉をふさいでいれば、リクエストは届かない。クラウドを使うならセキュリティグループの設定でこの扉を開ける。
三つのどれか分からないまま検索しても答えは出ない。逆に一つに絞れば検索語がとても具体的になる。
