localhostと127.0.0.1の違いとは?

localhostと127.0.0.1は、どちらも「自分のパソコン自身」へ接続するときによく使われます。 そのため同じものに見えますが、厳密には役割が違います。

localhostはホスト名、127.0.0.1はIPv4のループバックIPアドレスです。 localhostを使うと、OSや名前解決の仕組みによって127.0.0.1やIPv6の::1へ変換されます。

30秒でわかる結論

  • localhostは、自分自身を表すために使われる特別なホスト名
  • 127.0.0.1は、IPv4で自分自身を表す代表的なループバックアドレス
  • localhostと127.0.0.1は「名前」と「IPアドレス」なので厳密には別物
  • localhostは127.0.0.1だけでなく、IPv6の::1へ解決されることもある
  • 127.0.0.0/8はIPv4のループバック用として扱われる
  • ループバック通信は通常、外部ネットワークへ出ない
  • 開発環境ではlocalhostと127.0.0.1でアプリの挙動が変わる場合がある
  • 初心者は「localhost=名前、127.0.0.1=IPv4アドレス」と覚えればよい

localhostと127.0.0.1の違いとは?

最も大きな違いは、localhostがホスト名で、127.0.0.1がIPアドレスであることです。

項目 localhost 127.0.0.1
種類 ホスト名 IPv4アドレス
意味 自分自身を表す特別な名前 IPv4のループバックアドレス
名前解決 必要 不要
IPv6 ::1へ解決される場合がある IPv4のみ

初心者向けの覚え方

localhost=人が使いやすい名前、127.0.0.1=IPv4で自分自身を示す住所と考えると分かりやすくなります。

localhostとは?

localhostは、自分自身のコンピューターを表すために使われる特別なホスト名です。

RFC 6761では、localhost.およびその配下の名前は特別用途として扱われ、IPv4・IPv6の問い合わせではそれぞれループバックアドレスへ解決されることが想定されています。

よくある使い方

  • http://localhost/
  • http://localhost:3000/
  • http://localhost:8080/

Web開発では、自分のPC上で起動したWebサーバーやアプリへアクセスするときによく使います。

127.0.0.1とは?

127.0.0.1は、IPv4で自分自身へ通信するために使われる代表的なループバックアドレスです。

RFC 1122では、127で始まるアドレスが内部ホストのループバック用として扱われ、ホストの外部へ出てはいけないものと定義されています。

例

http://127.0.0.1:8080/

このURLへアクセスすると、インターネット上の別サーバーではなく、自分自身のコンピューター上で8080番ポートを待ち受けているサービスへ接続しようとします。

127.0.0.1だけがループバックアドレス?

IPv4では127.0.0.1だけでなく、127.0.0.0/8の範囲がループバック用として扱われます。

代表例

  • 127.0.0.1
  • 127.0.0.2
  • 127.1.2.3

ただし、一般的な開発や設定では127.0.0.1が最もよく使われるため、初心者はまず127.0.0.1を覚えれば十分です。

127.0.0.1は代表値

「127.0.0.1だけが特別」というより、「127で始まるループバック用範囲の中で最も一般的に使われるアドレス」と理解すると正確です。

IPv6では::1を使う

IPv6には、IPv4の127.0.0.1に相当するループバックアドレスとして::1があります。

RFC 4291では、0:0:0:0:0:0:0:1、省略表記では::1がIPv6のループバックアドレスとして定義されています。

方式 ループバック
IPv4 127.0.0.1など127.0.0.0/8
IPv6 ::1

localhostが必ず127.0.0.1になるとは限らない

IPv6が有効な環境では、localhostが先に::1へ解決される場合があります。 そのため「localhost=127.0.0.1」と完全に同一視しないでください。

localhostはどうやってIPアドレスへ変換される?

localhostは文字列のホスト名なので、通信するときにはIPアドレスとして扱える形へ解決されます。

1.localhostへアクセス
2.OS・名前解決機能がlocalhostを認識
3.127.0.0.1または::1などへ解決
4.自分自身へ接続

RFC 6761では、localhostの名前解決を通常の外部DNSへ問い合わせるのではなく、ローカルで特別に扱うことが推奨されています。

hostsファイルとの関係

OSには、ホスト名とIPアドレスを対応付けるhostsファイルがあります。 多くの環境ではlocalhostに関する設定も確認できます。

よくある記述例

127.0.0.1 localhost
::1       localhost

ただし、現在のOSや名前解決ライブラリはlocalhostを特別な名前として扱う場合があるため、「hostsファイルに書いてあるからlocalhostが成立する」とだけ理解するのは不十分です。

localhost自体が特別扱いされる

RFC上、localhostは特別用途ドメインとして定義されています。 hostsファイルは名前解決の一要素ですが、localhostという名前自体にも特別な意味があります。

localhostと127.0.0.1で結果が違うことはある?

あります。 同じPC上のサービスへ接続する用途でも、localhostと127.0.0.1で挙動が変わる場合があります。

主な理由

  • localhostがIPv6の::1へ解決される
  • アプリがIPv4だけで待ち受けている
  • アプリがIPv6だけで待ち受けている
  • Webアプリ側がHostヘッダーを見ている
  • Cookieのドメイン条件が違う
  • CORSや許可ホスト設定が異なる

例

開発サーバーが127.0.0.1:3000だけで待ち受けている場合、環境によってはlocalhost:3000が::1へ解決され、接続できないことがあります。

localhostと0.0.0.0の違い

開発サーバーの設定では、127.0.0.1と0.0.0.0も混同されやすいので注意してください。

値 主な意味
127.0.0.1 自分自身へ接続するループバック
0.0.0.0 サーバー待受設定では全IPv4インターフェースを表す用途で使われることがある

0.0.0.0で待ち受けると外部から届く場合がある

開発サーバーを0.0.0.0へバインドすると、ファイアウォールやネットワーク条件によってはLAN内など他の端末から接続できる場合があります。 ローカルだけで使いたいなら公開範囲を確認してください。

localhostはインターネットへ通信する?

通常、localhostやループバックアドレス宛ての通信は、自分自身のホスト内部で処理されます。 ルーターを経由してインターネット上へ送られるものではありません。

RFC 1122ではIPv4の127系アドレスはホスト外へ出てはいけないとされ、RFC 4291でもIPv6の::1宛てパケットは単一ノードの外へ送信・転送してはいけないとされています。

ローカル開発で使われる理由

外部サーバーへ公開せず、自分のPC内部だけでWebサーバーやデータベースを動かして確認できるためです。

Web開発ではどちらを使えばよい?

一般的なローカル開発では、localhostでも127.0.0.1でも問題ないケースが多くあります。

普段のブラウザ確認

localhostでOK

人が覚えやすく、URLとして扱いやすいので一般的です。

IPv4を明示したい

127.0.0.1

名前解決を介さず、IPv4ループバックへ直接接続できます。

IPv6確認

::1

IPv6のループバックへ直接接続します。

接続トラブル調査

両方を比較

localhost・127.0.0.1・::1で結果が変わるか確認します。

データベース接続では違いが出ることがある

MySQLなどのデータベースクライアントでは、localhostと127.0.0.1で接続方式が変わる実装があります。

環境によってはlocalhost指定時にUnixソケットを使い、127.0.0.1指定時にはTCP/IP接続を使うことがあります。

アプリごとの仕様を確認

localhostと127.0.0.1が常に同じ通信経路になるとは限りません。 データベースや開発ツールで接続エラーが出る場合は、そのソフトウェアの公式ドキュメントで接続方式を確認してください。

Dockerや仮想環境ではlocalhostの意味に注意

Dockerコンテナや仮想マシン内でlocalhostを指定した場合、その「自分自身」はホストPCではなく、コンテナや仮想マシン自身を指します。

例

PC上のデータベースへ、Dockerコンテナ内からlocalhostで接続しようとしても、コンテナ自身を参照するため接続できない場合があります。

localhostは「今いる環境の自分自身」

コンテナ、VPS、仮想マシンなど環境が分かれている場合は、「どのOS・どのネットワーク名前空間から見たlocalhostか」を確認してください。

127.0.0.1へ外部PCからアクセスできる?

できません。

別のPCで127.0.0.1へアクセスすると、その別PC自身を指します。 あなたのPCの127.0.0.1へ接続する意味にはなりません。

2台のPCがある場合

PC-Aの127.0.0.1 → PC-A自身
PC-Bの127.0.0.1 → PC-B自身

LAN内の別端末から開発サーバーへ接続したい場合は、PCのLAN内IPアドレスや適切なホスト名を使い、サーバーの待受範囲とファイアウォールを設定します。

localhostで接続できないときの確認ポイント

1.サービスが起動しているか

Webサーバー・データベースなどが実際に動いているか確認します。

2.ポート番号を確認

3000、8000、8080など、サービスが待ち受けているポートと一致しているか確認します。

3.127.0.0.1で試す

localhostの名前解決との違いを切り分けます。

4.::1で試す

IPv6側の待受状態を確認します。

5.アプリの待受アドレスを確認

127.0.0.1、::1、0.0.0.0など、どこで待ち受けているか確認します。

ファイアウォールを無闇に無効化しない

接続できないからといって、最初からOSやクラウドのファイアウォールをすべてOFFにする必要はありません。 まずサービスの起動・ポート・待受アドレスを確認してください。

共用レンタルサーバー利用者も知る必要がある?

一般的なWordPressサイトを共用レンタルサーバーで運営するだけなら、localhostと127.0.0.1の違いを深く理解する必要はありません。

ただし、次のような場面では知っておくと役立ちます。

  • ローカルPCでWordPress開発環境を作る
  • VPSでWebサーバー・DBを構築する
  • Dockerを利用する
  • データベース接続設定を変更する
  • APIや開発サーバーをローカル起動する

通常のサイト運営なら

「localhostは自分自身を表す名前、127.0.0.1はIPv4の自分自身を表すIP」と理解しておけば十分です。

教科書判定

教科書判定

localhostと127.0.0.1は似ているが「名前」と「IPアドレス」で別物

初心者が最も重要なのは、localhost=ホスト名、127.0.0.1=IPv4ループバックアドレスという違いです。

普段のローカル開発ではどちらでも同じサービスへ接続できることが多いですが、localhostがIPv6の::1へ解決されたり、アプリ側がIPv4だけで待ち受けていたりすると結果が変わることがあります。

また、Dockerや仮想マシンではlocalhostが「ホストPC」ではなく、そのコンテナ・仮想マシン自身を指します。

接続トラブル時は、localhost・127.0.0.1・::1の違いと、サービスがどのアドレスで待ち受けているかを確認する。 これが実務上のポイントです。

よくある質問

Q.localhostと127.0.0.1は完全に同じですか?

完全には同じではありません。localhostはホスト名、127.0.0.1はIPv4アドレスです。localhostは環境によってIPv6の::1へ解決される場合もあります。

Q.localhostはDNSサーバーへ問い合わせますか?

RFC 6761では、localhostは特別用途としてローカルで処理され、通常のDNSサーバーへ問い合わせないことが推奨されています。実際の名前解決方法はOSやライブラリの実装にも関係します。

Q.127.0.0.2も自分自身ですか?

IPv4では127.0.0.0/8がループバック用として扱われます。そのため127.0.0.2などもループバック範囲ですが、通常は127.0.0.1が代表的に使われます。

Q.IPv6のlocalhostは何ですか?

IPv6のループバックアドレスは::1です。localhostがIPv6で名前解決される場合、::1が使われることがあります。

Q.別のPCから127.0.0.1へアクセスすれば自分の開発サーバーを見られますか?

いいえ。127.0.0.1はアクセスした端末自身を指します。別端末から接続する場合は、サーバー側PCのLAN内IPなどを使い、待受設定とファイアウォールも確認します。

まとめ

この記事の結論

  • localhostは自分自身を表す特別なホスト名
  • 127.0.0.1はIPv4の代表的なループバックアドレス
  • localhostと127.0.0.1は「名前」と「IP」で役割が違う
  • localhostは::1へ解決される場合もある
  • IPv4では127.0.0.0/8がループバック範囲
  • IPv6のループバックは::1
  • ループバック通信は通常ホスト外へ出ない
  • 開発環境ではIPv4・IPv6や待受設定によって挙動が変わる
  • Docker等ではlocalhostがその環境自身を指す

localhostと127.0.0.1は、普段は同じように使えることが多いものの、技術的には別物です。 「localhostは名前、127.0.0.1はIPv4アドレス」と理解しておけば、ローカル開発や接続トラブルの切り分けがしやすくなります。

次に読む

「リバースプロキシとは?仕組みと用途を解説」もあわせて確認してください。