5年間使っていた「3000」って何だ?

「60歳から始めるホワイトハッカーへの道」第3回です。

前回はIPアドレスについて勉強しました。

今回は「ポート番号」です。



私はRuby on Railsを約5年間使っています。 Railsで開発していると、何度もこんなアドレスを使います。

http://localhost:3000

今まで当たり前のように使っていましたが、セキュリティの勉強を始めて、ふと思いました。

「この3000って、そもそも何だ?」

5年間使ってきたのに、改めて説明しろと言われると自信がありません(笑)。



IPアドレスが住所なら、ポート番号は?

前回、IPアドレスをネットワーク上の「住所」のようなものとして勉強しました。

でも、一台のパソコンではWebだけでなく、メールやSSHなど複数の通信サービスを利用できます。

そこで通信をどのサービスへ届けるのかを区別するために使われるのがポート番号です。


初心者の私なりにイメージすると、

IPアドレス = 建物の住所 ポート番号 = 建物の中にある受付窓口

と考えると分かりやすそうです。



80・443・22番って何?

ポート番号には、よく使われるサービスに割り当てられているものがあります。

  • 22番:SSH
  • 80番:HTTP
  • 443番:HTTPS


80番は通常のWeb通信で使われるHTTP、443番はTLSなどによって保護されたHTTPSで使われます。

そして22番は、離れたコンピューターへ安全に接続するためのSSHで使われます。

ホワイトハッカーの勉強を続けていけば、これらの番号は何度も見ることになりそうです。



ではRailsの3000番は?

ここでようやく、いつも使っているRailsにつながりました。


ターミナルからRailsを起動すると、

bin/rails server

開発環境では通常、

http://localhost:3000

でアクセスできます。

つまり3000はRailsの開発サーバーが待ち受けているポート番号だったわけです。

IPアドレスとポート番号を組み合わせることで、「どのコンピューターの、どのサービスへ通信するのか」が分かってきました。



Macで実際にRailsを起動して確認

自分のRailsアプリで確認してみます。

bundle exec rails s

起動時の表示を見ると、3000番ポートで待ち受けていることが確認できます。

ブラウザから、

http://localhost:3000

へアクセスすると、いつものRailsアプリが表示されます。

さらに別のポートで起動することもできます。

bundle exec rails s -p 4000

今度は、

http://localhost:4000

になります。

なるほど。

3000という数字に特別な魔法があるわけではなかったんですね。



ポートとセキュリティの関係

ここからホワイトハッカーの勉強らしくなってきます。

ネットワーク上でどんなサービスが動いているのかを知るうえで、ポートは重要な情報になります。


必要のないサービスを外部へ公開していないか、どの通信を許可するのか、といった考え方はセキュリティにもつながります。

ただし、他人が管理するサーバーを勝手に調査するのではなく、このシリーズでは自分のMacや自分で用意した学習環境を使って確認していきます。



今回覚えたこと

  • ポート番号は通信するサービスを区別するために使われる
  • 22番はSSH
  • 80番はHTTP
  • 443番はHTTPS
  • Railsの開発サーバーは通常3000番を使う
  • IPアドレスとポート番号はネットワークを理解するための基礎



5年間のRailsとセキュリティがつながってきた

今回一番面白かったのは、ホワイトハッカーの勉強で出てきた「ポート」という言葉が、5年間使ってきたRailsのlocalhost:3000につながったことです。

新しいことを一から覚えているつもりでしたが、実は今まで使ってきた技術の意味を改めて理解している部分も多そうです。



次回はTCP/IPを調べてみる

IPアドレスとポート番号は少し分かってきました。

ところが調べていると、今度はTCP、UDP、TCP/IPという言葉が何度も出てきます。



次回は、 「TCP/IPとは?データはどうやって相手まで届くのか」 を初心者なりに調べてみます。