見出し画像

ネットワーク・インターフェースの理解:ループバック、ローカルIP、パブリックIP

多くのコンピュータユーザーは、`localhost` や `127.0.0.1`、または直接ローカル IP を入力して使用する場面に遭遇したことがあるでしょう。一見すると、これらはすべてローカルマシンにアクセスできるように見えますが、なぜ 3 種類の形式が存在するのでしょうか?また、それぞれにどのような違いがあるのでしょうか?見た目は単純ですが、実際には大きな違いがあります。

さらに、公的ネットワーク(インターネット)とプライベートネットワーク(ローカルネットワーク)、ネットワークインターフェースカード(NIC)と IP アドレスの関係についても混乱することがあるかもしれません。以下で、それらの疑問を一つずつ解説します。

ローカル IP アドレス

コンピュータのマザーボードには複数のネットワークインターフェースカード(NIC)が組み込まれており、一般的に以下の種類が存在します。

仮想ネットワークインターフェース(ループバック)

注意:これは物理的なネットワークカードではなく、仮想的なものです。これはローカルループバックアドレス(またはインターフェース)と呼ばれ、通常 `127.0.0.1` がループバックアドレスとして設定されています。

有線ネットワークインターフェース(イーサネット)

これはイーサネット(LAN)で使用されるもので、一般的に「ネットワークカード」と言えばこれを指します。有線接続で、LAN ケーブルを挿入することで使用します。

無線ネットワークインターフェース(WLAN)

無線 LAN(Wi-Fi)を使用するためのネットワークカードで、ノート PC には通常これが内蔵されています。イーサネットのように物理的なケーブルを必要とせず、無線技術を利用して通信を行います。

これらのネットワークインターフェースにはそれぞれローカル IP アドレスが割り当てられます。

`localhost` は特別なドメイン名

まず `localhost` は IP アドレスではなく、特別なドメイン名(サフィックスなし)です。デフォルトではローカル IP(すなわち `127.0.0.1`)に解決され、本機の `hosts` ファイルによって管理されています。もし希望するなら、`localhost` を任意のパブリック IP アドレスにマッピングすることも可能です。

デフォルトでは、以下のように設定されています。

  • IPv4: `127.0.0.1`

  • IPv6: `[::1]`

`hosts` ファイルの場所:

C:\Windows\System32\drivers\etc

`127.0.0.1` はローカル専用のプライベート IP

`127.0.0.1` はプライベート IP の一種で、ローカルループバックアドレス(loopback address)として使用されます。本質的には仮想ネットワークインターフェース(ループバックインターフェース)にバインドされた IP アドレスです。

ループバックアドレスとは?

ループバックアドレスとは、ホストが自分自身に対して通信を行うための特別なアドレスです。たとえば、同じホスト内で動作する 2 つのサービスが通信する場合、ループバックアドレスを使用すると、TCP/IP スタックの下層(リンク層や物理層、イーサネット)を経由せず、直接ネットワーク層とトランスポート層で処理されます。

IP ネットワークの `127.x.x.x` は、ネットワークアドレスではなく、すべてループバック用に予約されているため、生成された IP パケットは外部のネットワークインターフェースに到達することはなく、ホスト内で処理されます。

したがって、`127.0.0.1` は一般的にローカルの TCP/IP プロトコルスタックをテストするために使用されます。もし `ping 127.0.0.1` が成功すれば、ネットワークカードや IP プロトコルのインストールに問題がないことを確認できます(このテストはインターネット接続の有無とは無関係です)。

実際には、IPv4 では `127.0.0.0/8` の範囲全体がループバック用に予約されています。つまり、`127.0.0.1` 以外のアドレスも同様にループバック通信に利用できます。また、`0.0.0.0` というアドレスもよく混同されますが、`0.0.0.0` は厳密にはローカルアドレスを指し、`127.0.0.1` とは用途が異なります。

例えば、ある PC に 2 枚のネットワークカードがあり、一方がパブリック IP を使用してインターネットに接続し、もう一方がプライベート IP でローカルネットワークに接続しているとします。この PC で Web サーバーを稼働させ、どちらのネットワークからもアクセス可能にしたい場合、サーバーのバインドアドレスを `0.0.0.0` に設定すれば、すべての利用可能なネットワークインターフェースでリクエストを受け付けることができます。

`localhost`、ローカル IP、`127.0.0.1` の違い

  • ネットワーク要件の違い

    • `localhost` と `127.0.0.1` は、ネットワーク接続がなくても使用できます。インターネットに接続されていない環境でも、これらにアクセスすればローカルマシンを見つけることができます。

    • ローカル IP のうち、有線ネットワーク IP や無線ネットワーク IP は、ネットワークに接続されている場合にのみ割り当てられ、アクセス可能になります。これらは、外部に公開される IP アドレスです。

  • アクセス対象の違い

    • `localhost` はローカルマシンへのアクセス

    • `127.0.0.1` もローカルマシンへのアクセス

    • ローカル IP は、ローカルマシンまたは外部のデバイスからのアクセスが可能

  • ドメインと IP アドレスの違い

    • `localhost` はドメイン名であり、デフォルトで `127.0.0.1` に解決されます。

    • ローカル IP は、ネットワークインターフェース(物理 NIC)にバインドされ、外部デバイスからのアクセスを許可します。

  • LAN 内でのアクセス

    • 同じサブネット(LAN 内の同じネットワークセグメント) にある他の PC は、ローカル IP を使用して対象の PC にアクセスできます(プライベート IP については後述します)。

ネットワークインターフェースのアドレス & IP アドレス

ネットワークインターフェースのアドレス(MAC アドレス)

ネットワークインターフェースのアドレス(MAC アドレス)は、メディアアクセス制御(Media Access Control) の略で、物理アドレスまたはハードウェアアドレスとも呼ばれます。これは、ネットワークデバイスの識別のために使用されます。

OSI 参照モデルにおいて、

  • 第 3 層(ネットワーク層)が IP アドレス を担当し、

  • 第 2 層(データリンク層)が MAC アドレス を担当します。

したがって、1 つのネットワークインターフェースには 1 つの MAC アドレスが割り当てられますが、ネットワークの接続先ごとに異なる IP アドレス が設定されることがあります。

MAC アドレスはネットワークカードに組み込まれており、通常変更できず、グローバルに一意であることが保証されています。これを人間の身分証明書の番号のように考えることもできます。

IP アドレス

IP アドレス(Internet Protocol Address) は、インターネット上のデバイスを識別するためのアドレスです。これは、インターネット上のネットワークとホストに一意のロジカルアドレスを割り当て、物理アドレス(MAC アドレス)の違いを抽象化するために使用されます。

まとめ

簡単に言えば、

  • MAC アドレス はネットワークインターフェースに固有の物理アドレスであり、通常変更できない。

  • IP アドレス は、ネットワークによって割り当てられるソフトアドレスであり、変更が可能。

補足:Windows では、`ipconfig /all` コマンドを使用して、IP アドレスと MAC アドレスを確認できます。

パブリック IP(公的 IP)とプライベート IP(私的 IP)

私たちは、`127.0.0.1` を使用してローカルマシンにアクセスし、プライベート IP を使用して LAN 内の他のデバイスにアクセスし、パブリック IP を使用してインターネット上の他のデバイスにアクセスします。

パブリック IP アドレス(公的 IP)

企業レベルのネットワークを構築する際、インターネットサービスプロバイダー(ISP)からインターネット接続(ブロードバンド)を申請します。ISP は、私たちに 1 つまたは複数の IP アドレスを割り当てます。これらの IP アドレスは、企業内のデバイスがインターネットにアクセスするために使用されます。

パブリックアドレス(Public Address) は、Internet Network Information Center(INIC、インターネット情報センター) によって管理されています。これらの IP アドレスは、INIC に登録された組織に割り当てられ、インターネット上で直接アクセスできます。

プライベート IP アドレス(私的 IP)

企業や家庭内でローカルネットワーク(LAN)を構築する際、プライベート IP が使用されます。

プライベートアドレス(Private Address) は、非登録アドレスであり、組織内でのみ使用されるため、インターネット上には表示されません。プライベート IP からのトラフィックは、ISP のルーターでブロックされるため、直接インターネットに接続することはできません。

企業内の PC がインターネットにアクセスするためには、NAT(Network Address Translation) を使用して、プライベート IP をパブリック IP に変換する必要があります。

パブリックネットワークとプライベートネットワークのアクセス関係

  • プライベートネットワークからパブリックネットワーク(インターネット)へアクセスする場合、SNAT(Source Network Address Translation) を適用する必要があります。

  • パブリックネットワークからプライベートネットワークへのアクセスは、DNAT(Destination Network Address Translation)VPN(Virtual Private Network) などの技術を利用する必要があります。

  • 2 つの異なるプライベートネットワーク間で通信する場合も、VPN を利用することで接続が可能になります。

インターネット(外部ネットワーク)とプライベートネットワーク(内部ネットワーク)

企業内部のネットワークは一般に「プライベートネットワーク」と呼ばれ、企業外部のネットワークを「外部ネットワーク」と呼びます。しかし、外部ネットワークには ISP が提供するパブリックネットワーク(インターネット)だけでなく、他の企業や家庭のネットワーク(プライベートネットワーク)も含まれる場合があります。

そのため、「外部ネットワーク」と「パブリックネットワーク(インターネット)」は完全に同じ意味ではありませんが、一般的には区別せずに使われることが多いです。

すべての IP アドレスの範囲

IP アドレスは 5 つのクラスに分けられており、それぞれの範囲は以下のとおりです:

  • A クラス IP: `1.0.0.1 ~ 127.255.255.254`

  • B クラス IP: `128.0.0.1 ~ 191.255.255.254`

  • C クラス IP: `192.0.0.1 ~ 223.255.255.254`

  • D クラス IP: `224.0.0.0 ~ 239.255.255.255`(マルチキャスト用)

  • E クラス IP: `240.0.0.0 ~ 255.255.255.255`(将来の用途のために予約)

このうち、A・B・C クラスの IP アドレス はインターネットやユーザーで使用可能ですが、D クラス はマルチキャスト通信に使用され、E クラス は将来の用途のために予約されています。

特殊な IP アドレス

  • `0.0.0.0` → 現在のホストを指す

  • `255.255.255.255` → 現在のサブネットのブロードキャストアドレス

  • `127.0.0.1 ~ 127.255.255.255` → ループバックテスト専用

  • E クラス IP (`11110` で始まるアドレス) → 研究・将来用途のために予約

  • `ネットワークIDの最初の6ビットがすべて0` → ローカルネットワークを表す

パブリック IP アドレスの範囲

IP アドレスの A・B・C クラスのうち、以下の範囲はパブリック IP として利用可能です。

A クラスのパブリック IP

  • `1.0.0.0 ~ 9.255.255.255`

  • `11.0.0.0 ~ 126.255.255.255`

B クラスのパブリック IP

  • `128.0.0.0 ~ 172.15.255.255`

  • `172.32.0.0 ~ 191.255.255.255`

C クラスのパブリック IP

  • `192.0.0.0 ~ 192.168.255.255`

  • `192.169.0.0 ~ 223.255.255.255`

プライベート IP アドレスの範囲

プライベート IP アドレスとして予約されている範囲は以下のとおりです。

  • A クラス: `10.0.0.0 ~ 10.255.255.255`(`10.0.0.0/8`)

  • B クラス: `172.16.0.0 ~ 172.31.255.255`(`172.16.0.0/12`)

  • C クラス: `192.168.0.0 ~ 192.168.255.255`(`192.168.0.0/16`)

これらのアドレスは、インターネット上ではルーティングされず、ISP はプライベート IP アドレスのトラフィックをブロックします。そのため、直接インターネットに接続することはできません。しかし、NAT 技術 を利用すれば、プライベート IP アドレスをパブリック IP アドレスに変換してインターネットと通信することが可能です。

また、プリンターや管理用ハブなど、インターネット接続を必要としないデバイスは、プライベート IP を使用することで IP アドレスの節約が可能です。

ネットワークセグメント(サブネット)とローカルネットワーク(LAN)

ネットワークセグメント(サブネット)とは?

ネットワークセグメント(サブネット) とは、同じ物理層のネットワークデバイス(例:ハブ、スイッチ)によって直接通信可能な範囲のことを指します。つまり、同じネットワークセグメント内のコンピュータは、ルーターを介さずに直接通信することができます。

ローカルネットワーク(LAN)とは?

LAN(Local Area Network) は、スイッチなどのネットワーク機器を使用して構成されるネットワーク全体を指します。通常、LAN 内のすべてのデバイスは同じサブネット内にあり、直接通信できます。しかし、VLAN(仮想 LAN) を利用すれば、1 つの LAN を複数のネットワークセグメントに分割することも可能です。

同じサブネット内のデバイスのみが直接通信可能

ネットワーク内のデバイスが同じサブネットに属している場合、直接通信が可能です。したがって、1 つの LAN 内にネットワークセグメントが 1 つしかない場合、LAN = ネットワークセグメント となります。

異なるネットワークセグメントの判別方法

IP アドレスとサブネットマスクを使用した判別

サブネットマスクを利用すると、2 つの IP アドレスが同じネットワークセグメントに属しているかどうかを判別できます。

例 1

以下の 2 つの IP アドレスを考えます。

  • IP アドレス 1: `192.168.1.1`(サブネットマスク:`255.255.255.0`)

  • IP アドレス 2: `192.168.1.2`(サブネットマスク:`255.255.255.0`)

サブネットマスク `255.255.255.0` を適用すると、両方とも `192.168.1.0/24` のネットワークセグメントに属している ため、直接通信できます。

例 2

  • IP アドレス 1: `192.168.1.1`(サブネットマスク:`255.255.255.0`)

  • IP アドレス 2: `192.168.1.2`(サブネットマスク:`255.255.0.0`)

一見すると似ていますが、サブネットマスクが異なるため、同じネットワークセグメントには属していません。

  • `192.168.1.1 & 255.255.255.0` → `192.168.1.0/24`

  • `192.168.1.2 & 255.255.0.0` → `192.168.0.0/16`

このため、異なるネットワークセグメントに属していると判断できます。

例 3

  • IP アドレス 1: `192.168.1.1`(サブネットマスク:`255.255.252.0`)

  • IP アドレス 2: `192.168.2.1`(サブネットマスク:`255.255.252.0`)

サブネットマスク `255.255.252.0` を適用すると、どちらも `192.168.0.0/22` のネットワークセグメントに属している ため、同じネットワークセグメント内で直接通信が可能です。


私たちはLeapcell、バックエンド・プロジェクトのホスティングの最適解です。

Leapcellは、Webホスティング、非同期タスク、Redis向けの次世代サーバーレスプラットフォームです:

複数言語サポート

  • Node.js、Python、Go、Rustで開発できます。

無制限のプロジェクトデプロイ

  • 使用量に応じて料金を支払い、リクエストがなければ料金は発生しません。

比類のないコスト効率

  • 使用量に応じた支払い、アイドル時間は課金されません。

  • 例: $25で6.94Mリクエスト、平均応答時間60ms。

洗練された開発者体験

  • 直感的なUIで簡単に設定できます。

  • 完全自動化されたCI/CDパイプラインとGitOps統合。

  • 実行可能なインサイトのためのリアルタイムのメトリクスとログ。

簡単なスケーラビリティと高パフォーマンス

  • 高い同時実行性を容易に処理するためのオートスケーリング。

  • ゼロ運用オーバーヘッド — 構築に集中できます。

ドキュメントで詳細を確認!

Xでフォローする:@LeapcellHQ


ブログでこの記事を読む

いいなと思ったら応援しよう!