同じサーバーの受付を分けるポート番号

ポート番号は、同じIPアドレスの中でどのサービス宛てかを見分けるための番号です。

「3000番で起動しているので、localhost:3000 を開いてください」「443だけ開けておいてください」。開発やサーバーの話で出てくるこの数字が、ポート番号です。

ポート番号は、同じ住所に届いた通信を、どの受付に回すかを決める番号です。IPアドレスが建物の住所だとすると、住所だけでは建物の前までしか着けません。営業窓口、配送窓口、総合受付のどこへ用件を出すかを示すのがポート番号で、内線番号のような役割をしています。だから1台のサーバーでも、Webの表示、メールの受信、管理画面などを番号で分けて扱えます。

よく見かけるのは、Webサイトの公開に使う 80(HTTP)と 443(HTTPS)、開発中のアプリを起動するときの 3000 や 8080 あたりです。

つながらないときは三か所を順に見る

開発チームとのチャット
開発担当

テスト用のサーバー、3000番で起動しました。

Tatoediaの読者モブ
あなた

ブラウザで開いてみたけど、つながらないです。

開発担当

あれ、こっちでは動いてるんですけど……

サーバーは動いているはずなのに、つながらない。こういうとき、原因はだいたい次のどこかにあります。

  1. アプリそのものが起動しているか
  2. アプリが待ち受けている番号と、接続しに行っている番号が合っているか
  3. ファイアウォールが、その番号への通信を止めていないか

アプリの設定、サーバーの設定、ファイアウォールの設定で番号がそろっていないと、どれか一つが正しくても通信は届きません。サービスが止まっているのか、途中で遮断されているのかを、この順で切り分けます。

開けた番号は外への入口になる

ポートを開けるというのは、その番号で待ち受けているサービスを外部へ出すことです。入口が増えれば、そのぶん狙われる場所も増えます。外部に公開するポートは必要最小限にしましょう。

よく知られた番号を別の番号へ変えるだけで安全になる、と考えるのも早計です。番号は「どの窓口か」を示す目印にすぎず、窓口の奥を守るのは認証やアプリの設定、監視の仕事です。