IPアドレスの正体とは?MACアドレスとの違いも解説!【コンピュータ】
コンピュータネットワークについて学び始めると、必ず「IP アドレス」という言葉が出てきます。多くの場合、例えとして、郵便番号や住所の関係に置き換えられます。・・・が、実際のところ、これだけではよく分かりませんよね。特に、この辺りの分野は、OSI 参照モデル、TCP/UDP、サブネットマスクなど、インプットする専門用語も多く、理解が追いつかないこともあるでしょう。
そこで今回は、「IP アドレス」に焦点を絞り、より深く理解できるよう解説します。
IPアドレスとは
「ネットワーク上で」・「論理的な」・「ネットワーク層」という部分が重要なポイントです。
IPアドレスの役割
次の3つの主要な役割を担っています。
IPアドレスのバージョン
次の2つのバージョンがあります。今回は、この IPv4 を中心にお話します。
IPv4
IPv4 は、最も広く使用されている IP アドレスのバージョンで、次のような32ビットの数値(2進数)で構成されます。
うーん、分かりづらい・・・。笑
そこで、一般的には、8ビットごとにドット(.)で区切られた4つの10進数で表されます。先程の例では、10進数で表すと「192.168.1.10」となります。これでスッキリ!
なお、2進数と10進数の相互変換については、別の記事を掲載しているので、よろしければこちらもお読みください。
IPv4 の余談
デバイス数の増加に伴い、IPv4 アドレスは枯渇しつつあるという問題があります。32ビットということは、2の32乗なので、IPv4 のアドレスは、約43億個あることになりますが、それでも人類の全人口よりは少ないです。
このような背景から、現在では、将来の需要に対応するため、新しいバージョンである IPv6 への移行が進められています。
IPv6
IPv6 は、IPv4 の後継として開発された IP アドレスのバージョンで、128ビットの数値で構成されます。一般的には、次のような16進数の数字とコロン(:)で区切られた8つのグループで表されます。
IPv6 は、膨大な数のデバイスを収容できるアドレス空間と、セキュリティ機能の強化などの利点を備えているのが特徴です。
IPアドレスの種類
次の2種類があります。
グローバルIPアドレス
インターネット上で個々のデバイスを識別するために、一意に割り当てられる IP アドレスのことです。各国の専門機関によって管理されており、日本では JPNIC がその役割を担っています。
プライベートIPアドレス
企業や家庭などの特定のネットワーク(LAN)内でのみで使用される IP アドレスで、インターネット上からは直接アクセスできません。つまり、同じプライベート IP アドレスが、別のネットワークで使用されていても問題ないということです。
グローバルIPアドレスとプライベートIPアドレスの変換
インターネットを利用する場合、必要となるのが、グローバル IP アドレスです。しかし、前述の通り、利用可能な IP アドレスの数には限りがあります。そうなると、すべてのデバイスにグローバル IP アドレスを割り当てるのは現実的ではなさそうです。
「限られた数のグローバル IP アドレスを、効率的に使うにはどうすれば良いのか?」
そこで登場するのが、NAT や NAPT と呼ばれる技術です。これらは、デフォルトゲートウェイ(ルータなど)で実装されています。
余談ですが、IPv6 では、NAT や NAPT は必要ないとされています。128ビットということは、2の128乗なので、約340澗個の IPv6 のアドレスがあります。そのため、アドレス数を気にする必要がないということですね。
IPアドレスの構造
IP アドレスは、前半の「ネットワーク部」と後半の「ホスト部」という2つの部分から構成されます。
このとき、32ビットの上位から何ビットがネットワーク部なのかを表す方法として、次の2つがあります。
サブネットマスク
サブネットマスクは、32ビットで表されます。上位から各ビットが「1」の場合はネットワーク部、「0」の場合はホスト部となります。IPv4 と同様に、一般的には、8ビットごとにドット(.)で区切られた4つの10進数で表されます。
例えば、次の IP アドレスとサブネットマスクがあるとします。
これを2進数に変換します。
このとき、サブネットマスクから、上位24ビットは「1」なので「11000000 10101000 00000001」がネットワーク部、残り8ビットは「0」なので「00001010」がホスト部となります。
プレフィックス
プレフィックスは、スラッシュ(/)とそれに続く数値で表されます。この数値は、ネットワーク部で使用されるビット数を示します。
例えば、次の IP アドレスとプレフィックスがあるとします。
このとき、プレフィックス(/24)は、IP アドレス「192.168.1.10」のネットワーク部に24ビット使用することを意味します。これは、サブネットマスク 「255.255.255.0」と同じです。
予約済み IP アドレス
各ネットワーク内には、予約済み IP アドレスというものが存在します。これは、デバイスに割り当てることができない IP アドレスのことです。主に、2つあります。
ネットワークアドレス
ネットワークアドレスは、ネットワーク自体を識別するために使用されます。例えば、デフォルトゲートウェイ(ルータなど)は、宛先の IP アドレスが属するネットワークを判断し、自分のネットワークであれば、直接転送します。別のネットワークであれば、そのネットワークを担当する適切なゲートウェイに転送します。
そして、ネットワークアドレスは、ホスト部のビットがすべて「0」となる IP アドレスです。これは、IP アドレスとサブネットマスクを AND 演算した結果と一致します。
例えば、次の IP アドレスとサブネットマスクがあるとします。
これらの AND 演算を行うと、次のようになります。
これを10進数にすると、ネットワークアドレスが「192.168.1.0」であると分かります。
ブロードキャストアドレス
ブロードキャストアドレスは、ネットワーク上のすべての機器に同時にデータを送信するために使用されます。そして、ホスト部のビットがすべて「1」となる IP アドレスです。これは、IP アドレスとすべてのビットを反転(NOT 演算)したサブネットマスクを OR 演算した結果と一致します。
先程の IP アドレスとサブネットマスクにおける、ブロードキャストアドレスは、次の通り。
これを10進数にすると、「192.168.1.255」であることが分かります。
つまり、ネットワーク部が n ビットの場合、各ネットワーク内のデバイスで使用できる IP アドレスの数は、次のようになりますね。
$$
2^{32-n} - 2 \text{ 個}
$$
IPアドレスとMACアドレスの違い
これまで IP アドレスについて説明してきましたが、ここで疑問に思うのが、MAC アドレスとの違いについて。結論として、この2つのアドレスは、デバイス間の通信において異なる役割を担っています。
まずは、MAC アドレスについて簡単に解説します。
MAC アドレス
「特定のネットワーク内で」・「物理的な」・「データリンク層」という部分が重要なポイントです。
役割の違い
IP アドレスは、送信元と宛先を識別するため。いわば、通信の筋道を立てる指標として機能します。「論理」という言葉には、「議論/論証の筋道」という意味合いがあります。そのため、論理的な番号と表されます。
一方、MAC アドレスは、有線・無線を問わず、隣接するデバイス間でデータを送受信するため。つまり、宛先デバイスの IP アドレスに基づいた、実際の直接的かつ即時的なデータ転送に使用されます。イメージとしては、バケツリレーのようなものですね。そのため、物理的な番号と表されます。
同一ネットワーク(LAN)内では、MAC アドレスだけで十分です。しかし、異なるネットワークのデバイス間でデータを送受信するには、IP アドレスと MAC アドレスの両方が必要となります。
ルータの視点では、IP アドレスがなければ、隣接する MAC アドレスが分かっていても、最適な転送先を判断できません。適当に転送してしまうと、かえって逆方向へ送ってしまう可能性もあります。反対に、IP アドレスだけが分かっていても、MAC アドレスがなければ、転送自体できないという訳ですね。
こういった役割の違いから、OSI 参照モデルでは、IP アドレスは「ネットワーク層(第3層)」、MAC アドレスは「データリンク層(第2層)」と位置付けられています。
IPアドレスからMACアドレスへの変換
IP アドレスから MAC アドレスへの変換は、ARP(Address Resolution Protocol)というプロトコルによって行われます。
例えば、送信元が、宛先の IP アドレスは分かっているものの、MAC アドレスが分からない、というときがあります。その場合、「ARP リクエスト」というメッセージを、ネットワーク全体にブロードキャスト(一斉送信)します。
同一ネットワーク上に存在する宛先デバイスであれば、そのデバイス自身が応答し、そうでない場合は、外部ネットワークへ転送するため、デフォルトゲートウェイ(ルータなど)が応答します。
送信元は、この応答から得られた MAC アドレスを記録し、以降の通信に利用されるということです。
最後に
コンピュータネットワークは、目に見えない部分や基盤となる技術を扱うため、理解するのが難しい分野だと思います。私もこの記事を書くのに、大分苦労しました。(※誤りがあれば、遠慮なくご指摘ください)
理解への近道は、まずは全体像を掴み、そこから1つずつ要素を学んでいくことです。一緒に頑張っていきましょう!
最後になりましたが、数あるサイトの中からこの記事を最後まで見てくださった方にお礼を申し上げます。どうもありがとうございました!
少しでも参考になれれば幸いです。
参考/関連ページ
【キタミ式イラストIT塾 応用情報技術者 令和06年 / きたみ りゅうじ】
【図解でよくわかる ネットワークの重要用語解説 / きたみ りゅうじ】
【IPv4・IPv6 に関する記事 / 日経 XTECH】
【IP アドレス・MAC アドレスの役割の違い】
質問箱はこちら!
「うっちーの実験室」をより良いものにするために、質問箱を開設しました。この記事に関する内容や、筆者に対するメッセージ・ご意見・質問などがあれば、お気軽に投稿ください!
この記事が気に入ったらサポートをしてみませんか?