ЯoomeR

プログラミング~実装とエラー解決と、時々、AI~

localhost:3000とは何か

Railsを触り始めてなんとなく使っている呪文「localhost:3000」

rails sとセットで使用している例のアレである。

初学者に分かりやすくさらっと解説!

localhost」とは何を指すか

localhost」はホスト名

ネットワークに接続された機器(PC、プリンタ、ルーター等)を「ホスト」と呼ぶ。

ホストに名付けられた名前を「ホスト名」と呼ぶ。

localhost」は現在使用しているシステム自身(=自分のPC)の名前である。

Macで自分のホスト名を確認する方法

アップルメニュー(左上のリンゴマーク) >「システム環境設定」>「共有」を選択。

画面上部、「ローカルネットワーク上のコンピューターから...」と書かれている部分の「xxx.local」がホスト名である。

自分自身を示すIPアドレス

自分自身を指すIPアドレスを「ループバックアドレス」と呼ぶ。

#IPv4の場合 
127.0.0.0/8 

#IPv6の場合 
::1/128

つまり、「localhost」という文字列は「http://127.0.0.1」というアドレスなのである。

localhost:3000」は、「http://127.0.0.1:3000」というわけだ。

図解

個別IPアドレスとループバックアドレス

PCにはいくつかのIPアドレスが存在する。


ここでは、「ネットワーク内でのPCの住所」を「独自のIPアドレス」としている。

インターネットと言う町の中で、相対的に自分の住所を表すIPアドレスである。

(東京都文京区,...のような住所。)

それでは、「自分を示すIPアドレス」とはなんぞや?

それぞれのPCにおいて、「127.0.0.1」は「そのPC自身」を表すIPアドレスとなっている。

絶対的に自分の住所を表す、いわば「自宅」という単語と同義である。


AさんのPCで「127.0.0.1」は「AさんのPC」を表し、

BさんのPCで「127.0.0.1」は「BさんのPC」を表す。

「3000」とは何か

ポート番号である

ポート番号3000でのデータの受け入れ

上図のビルをPCとすると、どのポート(入口)でリクエストを受け取るかを指定している。


Railsのポート番号のデフォルトは3000に指定されている。

補足① 外部から「localhost:3000」に接続できないの?

結論:できる

Railsではサーバーを起動したとき、デフォルトで"IPアドレス127.0.0.1」で通信を待ち受ける設定"になっている。


上記の通り自身のPCを参照してしまい外部のPCへアクセスできないのである。

よって、このデフォルトのIPアドレスを変えてやれば外部からもアクセスできるようになる。

bindingのオプションをつければ外部から接続可能


例えば、ネットワーク上でのIPアドレスが「192.168.111.1」である場合、

rails server -b 192.168.111.1

とオプションをつけることで、外部からも「http://192.168.111.1:3000」とすれば接続できる。

ちなみに、

rails server -b 0.0.0.0

とすれば、「その機器に付いている全部のIPアドレスで待ち受ける」状態になる。

補足② ポート番号は変えられないの?

例によって、オプションで変更できる。

rails s -b 192.168.111.1 -p 3100

上記の場合、IPアドレスをデフォルトのlocalhostから「192.168.111.1」に、


ポート番号をデフォルトの「3000」から「3100」に変更している