見出し画像

IPアドレスの正体とは?MACアドレスとの違いも解説!【コンピュータ】

コンピュータネットワークについて学び始めると、必ず「IP アドレス」という言葉が出てきます。多くの場合、例えとして、郵便番号や住所の関係に置き換えられます。・・・が、実際のところ、これだけではよく分かりませんよね。特に、この辺りの分野は、OSI 参照モデル、TCP/UDP、サブネットマスクなど、インプットする専門用語も多く、理解が追いつかないこともあるでしょう。

そこで今回は、「IP アドレス」に焦点を絞り、より深く理解できるよう解説します。


IPアドレスとは

■ IP アドレスInternet Protocol Address):
インターネットなどのネットワーク上で、コンピュータやデバイスを識別する論理的な番号。OSI 参照モデルの「ネットワーク層(第3層)」で使用される。ISP(Internet Service Provider)によって割り当てられるか、DHCP サーバによって自動的に割り当てられる。

ISP:一般的には、プロバイダと呼ばれる。個人や企業などのユーザに対して、インターネットへの接続サービスを提供する事業者。

DHCP サーバ:ネットワークに接続するデバイスに、IP アドレスなどのネットワーク設定情報などを自動的に割り当てるサーバ。

ネットワーク上で」・「論理的な」・「ネットワーク層」という部分が重要なポイントです。

IPアドレスの役割

次の3つの主要な役割を担っています。

個々のデバイスの識別
ネットワーク上の異なるデバイスを個別に識別する。

所属ネットワークの識別
ネットワーク上のどのグループに属するかを識別する。

ルーティング経路選択):
データ(パケット)が宛先のデバイスに正しく届くように、ネットワーク上の経路を決定する際に使用される。これは、デフォルトゲートウェイ(ルータなど)と呼ばれる装置によって処理される。

パケット:小さく一定のサイズに分割されたデータのこと。これにより、通信回線が占有されずに、複数の通信を効率的に行うことができる。

IPアドレスのバージョン

次の2つのバージョンがあります。今回は、この IPv4 を中心にお話します。

IPv4IP Version 4
IPv6IP Version 6

IPv4

IPv4 は、最も広く使用されている IP アドレスのバージョンで、次のような32ビットの数値(2進数)で構成されます。

11000000 10101000 00000001 00001010

うーん、分かりづらい・・・。笑

そこで、一般的には、8ビットごとにドット(.)で区切られた4つの10進数で表されます。先程の例では、10進数で表すと「192.168.1.10」となります。これでスッキリ!

11000000 10101000 00000001 00001010

192.168.1.10

なお、2進数と10進数の相互変換については、別の記事を掲載しているので、よろしければこちらもお読みください。

IPv4 の余談

デバイス数の増加に伴い、IPv4 アドレスは枯渇しつつあるという問題があります。32ビットということは、2の32乗なので、IPv4 のアドレスは、約43億個あることになりますが、それでも人類の全人口よりは少ないです。

このような背景から、現在では、将来の需要に対応するため、新しいバージョンである IPv6 への移行が進められています。

IPv6

IPv6 は、IPv4 の後継として開発された IP アドレスのバージョンで、128ビットの数値で構成されます。一般的には、次のような16進数の数字とコロン(:)で区切られた8つのグループで表されます。

2001:0db8:85a3:0000:0000:8a2e:0370:7334

IPv6 は、膨大な数のデバイスを収容できるアドレス空間と、セキュリティ機能の強化などの利点を備えているのが特徴です。

IPアドレスの種類

次の2種類があります。

グローバル IP アドレス
プライベート IP アドレス

グローバルIPアドレス

インターネット上で個々のデバイスを識別するために、一意に割り当てられる IP アドレスのことです。各国の専門機関によって管理されており、日本では JPNIC がその役割を担っています。

プライベートIPアドレス

企業や家庭などの特定のネットワーク(LAN)内でのみで使用される IP アドレスで、インターネット上からは直接アクセスできません。つまり、同じプライベート IP アドレスが、別のネットワークで使用されていても問題ないということです。

グローバルIPアドレスとプライベートIPアドレスの変換

インターネットを利用する場合、必要となるのが、グローバル IP アドレスです。しかし、前述の通り、利用可能な IP アドレスの数には限りがあります。そうなると、すべてのデバイスにグローバル IP アドレスを割り当てるのは現実的ではなさそうです。

「限られた数のグローバル IP アドレスを、効率的に使うにはどうすれば良いのか?」

そこで登場するのが、NAT や NAPT と呼ばれる技術です。これらは、デフォルトゲートウェイ(ルータなど)で実装されています。

NAT
グローバル IP アドレスとプライベート IP アドレスを1対1で変換する。

NAPT
グローバル IP アドレスとプライベート IP アドレスを1対多で変換する。つまり、1つのグローバル IP アドレスを、複数のプライベート IP アドレスで使用できる。

余談ですが、IPv6 では、NAT や NAPT は必要ないとされています。128ビットということは、2の128乗なので、約340澗個の IPv6 のアドレスがあります。そのため、アドレス数を気にする必要がないということですね。

IPアドレスの構造

IP アドレスは、前半の「ネットワーク部」と後半の「ホスト部」という2つの部分から構成されます。

ネットワーク部Network prefix):
どのネットワークなのかを識別する部分

ホスト部Host identifier):
そのネットワーク内の、どのデバイスなのかを識別する部分

このとき、32ビットの上位から何ビットがネットワーク部なのかを表す方法として、次の2つがあります。

サブネットマスク
プレフィックス

サブネットマスク

サブネットマスクは、32ビットで表されます。上位から各ビットが「1」の場合はネットワーク部、「0」の場合はホスト部となります。IPv4 と同様に、一般的には、8ビットごとにドット(.)で区切られた4つの10進数で表されます。

例えば、次の IP アドレスとサブネットマスクがあるとします。

■ IP アドレス:192.168.1.10
■ サブネットマスク:255.255.255.0

これを2進数に変換します。

■ IP アドレス:192.168.1.10

11000000 10101000 00000001 00001010

■ サブネットマスク:255.255.255.0

11111111 11111111 11111111 00000000

このとき、サブネットマスクから、上位24ビットは「1」なので「11000000 10101000 00000001」がネットワーク部、残り8ビットは「0」なので「00001010」がホスト部となります。

プレフィックス

プレフィックスは、スラッシュ(/)とそれに続く数値で表されます。この数値は、ネットワーク部で使用されるビット数を示します。

例えば、次の IP アドレスとプレフィックスがあるとします。

192.168.1.10/24

このとき、プレフィックス(/24)は、IP アドレス「192.168.1.10」のネットワーク部に24ビット使用することを意味します。これは、サブネットマスク 「255.255.255.0」と同じです。

予約済み IP アドレス

各ネットワーク内には、予約済み IP アドレスというものが存在します。これは、デバイスに割り当てることができない IP アドレスのことです。主に、2つあります。

ネットワークアドレス
ブロードキャストアドレス

ネットワークアドレス

ネットワークアドレスは、ネットワーク自体を識別するために使用されます。例えば、デフォルトゲートウェイ(ルータなど)は、宛先の IP アドレスが属するネットワークを判断し、自分のネットワークであれば、直接転送します。別のネットワークであれば、そのネットワークを担当する適切なゲートウェイに転送します。

そして、ネットワークアドレスは、ホスト部のビットがすべて「0」となる IP アドレスです。これは、IP アドレスとサブネットマスクを AND 演算した結果と一致します。

例えば、次の IP アドレスとサブネットマスクがあるとします。

■ IP アドレス:192.168.1.10

11000000 10101000 00000001 00001010

■ サブネットマスク:255.255.255.0

11111111 11111111 11111111 00000000

これらの AND 演算を行うと、次のようになります。

11000000 10101000 00000001 00001010
AND
11111111 11111111 11111111 00000000

11000000 10101000 00000001 00000000

これを10進数にすると、ネットワークアドレスが「192.168.1.0」であると分かります。

ブロードキャストアドレス

ブロードキャストアドレスは、ネットワーク上のすべての機器に同時にデータを送信するために使用されます。そして、ホスト部のビットがすべて「1」となる IP アドレスです。これは、IP アドレスとすべてのビットを反転(NOT 演算)したサブネットマスクを OR 演算した結果と一致します。

先程の IP アドレスとサブネットマスクにおける、ブロードキャストアドレスは、次の通り。

11000000 10101000 00000001 00001010
OR
00000000 00000000 00000000 11111111

11000000 10101000 00000001 11111111

これを10進数にすると、「192.168.1.255」であることが分かります。

つまり、ネットワーク部が n ビットの場合、各ネットワーク内のデバイスで使用できる IP アドレスの数は、次のようになりますね。

$$
2^{32-n} - 2 \text{ 個}
$$

IPアドレスとMACアドレスの違い

これまで IP アドレスについて説明してきましたが、ここで疑問に思うのが、MAC アドレスとの違いについて。結論として、この2つのアドレスは、デバイス間の通信において異なる役割を担っています。

まずは、MAC アドレスについて簡単に解説します。

MAC アドレス

MAC アドレスMedia Access Control Address):
特定のネットワーク内で NIC(Network Interface Card)を持つデバイスを識別する物理的な番号。48ビットの数値で構成される。OSI 参照モデルの「データリンク層(第2層)」で使用される。製造時に割り当てられ、変更できない。

※ NIC:デバイスをネットワークに接続するために必要な拡張装置のこと。基本的には、パソコンやルータに備わっている LAN ケーブルのプラグ(差し込み口)と同義。

特定のネットワーク内で」・「物理的な」・「データリンク層」という部分が重要なポイントです。

役割の違い

IP アドレスは、送信元と宛先を識別するため。いわば、通信の筋道を立てる指標として機能します。「論理」という言葉には、「議論/論証の筋道」という意味合いがあります。そのため、論理的な番号と表されます。

一方、MAC アドレスは、有線・無線を問わず、隣接するデバイス間でデータを送受信するため。つまり、宛先デバイスの IP アドレスに基づいた、実際の直接的かつ即時的なデータ転送に使用されます。イメージとしては、バケツリレーのようなものですね。そのため、物理的な番号と表されます。

同一ネットワーク(LAN)内では、MAC アドレスだけで十分です。しかし、異なるネットワークのデバイス間でデータを送受信するには、IP アドレスと MAC アドレスの両方が必要となります。

ルータの視点では、IP アドレスがなければ、隣接する MAC アドレスが分かっていても、最適な転送先を判断できません。適当に転送してしまうと、かえって逆方向へ送ってしまう可能性もあります。反対に、IP アドレスだけが分かっていても、MAC アドレスがなければ、転送自体できないという訳ですね。

こういった役割の違いから、OSI 参照モデルでは、IP アドレスは「ネットワーク層(第3層)」、MAC アドレスは「データリンク層(第2層)」と位置付けられています。

IPアドレスからMACアドレスへの変換

IP アドレスから MAC アドレスへの変換は、ARPAddress Resolution Protocol)というプロトコルによって行われます。

例えば、送信元が、宛先の IP アドレスは分かっているものの、MAC アドレスが分からない、というときがあります。その場合、「ARP リクエスト」というメッセージを、ネットワーク全体にブロードキャスト(一斉送信)します。

同一ネットワーク上に存在する宛先デバイスであれば、そのデバイス自身が応答し、そうでない場合は、外部ネットワークへ転送するため、デフォルトゲートウェイ(ルータなど)が応答します。

送信元は、この応答から得られた MAC アドレスを記録し、以降の通信に利用されるということです。

最後に

コンピュータネットワークは、目に見えない部分や基盤となる技術を扱うため、理解するのが難しい分野だと思います。私もこの記事を書くのに、大分苦労しました。(※誤りがあれば、遠慮なくご指摘ください)

理解への近道は、まずは全体像を掴み、そこから1つずつ要素を学んでいくことです。一緒に頑張っていきましょう!

最後になりましたが、数あるサイトの中からこの記事を最後まで見てくださった方にお礼を申し上げます。どうもありがとうございました!

少しでも参考になれれば幸いです。


参考/関連ページ

【キタミ式イラストIT塾 応用情報技術者 令和06年 / きたみ りゅうじ】

【図解でよくわかる ネットワークの重要用語解説 / きたみ りゅうじ】

【IPv4・IPv6 に関する記事 / 日経 XTECH】

【IP アドレス・MAC アドレスの役割の違い】

質問箱はこちら!

「うっちーの実験室」をより良いものにするために、質問箱を開設しました。この記事に関する内容や、筆者に対するメッセージ・ご意見・質問などがあれば、お気軽に投稿ください!

この記事が気に入ったらサポートをしてみませんか?