第2章 アドレスのしくみ|2-1|コース全体 19回中5本目
MACアドレスとIPアドレスの違い
どちらも「アドレス」と呼ばれて混同しがちなMACアドレスとIPアドレス。役割の違いと、複数のルータを経由するときに何が書き換わるのかを整理します。
IPアドレスは「住所」、MACアドレスは「次に渡す相手」
IPアドレスは、通信の最終的な届け先(または送り主)を示す住所です。途中でどれだけ中継されても、 パケットが目的地に届くまで変わりません。
MACアドレスは、区間ごとに「次にこのデータを手渡す相手」を示すアドレスです。配送員が中継地点ごとに 入れ替わるように、ルータを1つ越えるたびに書き換わります。
MACアドレスとIPアドレスの比較表
| 項目 | MACアドレス | IPアドレス(IPv4) |
|---|---|---|
| ビット数 | 48ビット | 32ビット |
| 表記 | 16進数・コロン区切り 例:AC:DE:48:00:11:22 | 10進数・ドット区切り 例:192.168.10.25 |
| 転送中に変わるか | 中継のたびに書き換わる | 宛先に届くまで変わらない |
| 届く範囲 | 同一ネットワーク内のみ有効 | ネットワークをまたいで有効 |
| どの層か | 第2層(データリンク層) | 第3層(ネットワーク層) |
宅配便で考える
荷物を送るとき、伝票に書く宛先住所は最初から最後まで変わりません。これがIPアドレスです。
一方、荷物を実際に手で運ぶ配送員は、営業所を経由するたびに交代します。自宅から最寄りの営業所まで運ぶ人と、 営業所間のトラック運転手と、最後に届ける配達員は、みんな別人です。これがMACアドレスにあたります。
パケットが転送されるとき、何が書き換わるか
まず、HTTPリクエストがEthernetフレームとして組み立てられるまでの様子(カプセル化)を確認します。
ブラウザが GET /index.html HTTP/1.1 というHTTPリクエストを作りました。この時点ではまだ「文章」でしかなく、どこへどう届くかの情報は何も付いていません。
TCPヘッダが付きます。送信元ポート52310 / 宛先ポート80、シーケンス番号、ACK番号などが入り、「相手のどのアプリ宛か」「何番目のデータか」が分かるようになりました。
IPヘッダが付きます。送信元 192.168.10.25 / 宛先 93.184.216.34 とTTLが入り、ルータはこれを見て世界中のどこへ転送するかを決められるようになりました。
Ethernetヘッダと、末尾に誤り検査用のFCSが付きます。宛先MACアドレスは最終目的地ではなく、次に渡す相手(自宅ルータ)のものです。ここが混乱しやすい点です。
完成したフレームが 0 と 1 の列になり、電気信号や電波としてケーブルへ流れ出ます。受信側はこの逆順に、ヘッダを1枚ずつはがしながら上の層へ渡していきます(非カプセル化)。
ただし上のステッパーが見せているのは、1回の区間(1ホップ)でフレームが組み立てられる様子だけです。 実際の通信では複数のルータを経由するので、区間ごとにEthernetヘッダが作り直されます。 PCからサーバまで、ルータA・ルータBの2台を経由する例で見てみましょう。
| 区間 | 送信元MAC | 宛先MAC | 送信元IP | 宛先IP |
|---|---|---|---|---|
| PC → ルータA | AA:AA:AA:AA:AA:01 | AA:AA:AA:AA:AA:02 | 192.168.10.25 | 203.0.113.50 |
| ルータA → ルータB | AA:AA:AA:AA:AA:03 | AA:AA:AA:AA:AA:04 | 192.168.10.25 | 203.0.113.50 |
| ルータB → サーバ | AA:AA:AA:AA:AA:05 | AA:AA:AA:AA:AA:06 | 192.168.10.25 | 203.0.113.50 |
送信元MACと宛先MACは区間が変わるたびに別の値に書き換わっています。一方で、送信元IPと宛先IPは 3つの区間を通じてずっと同じです。IPヘッダの宛先は変わらず、Ethernetヘッダの宛先MACだけが ルータごとに書き換わります。
ARPの役割
MACアドレスは自分で決めるものではないので、同じネットワーク内の相手について「IPアドレスは分かっているが、 MACアドレスが分からない」という状況が起こります。これを解決するのがARP(Address Resolution Protocol)です。
流れはシンプルです。ARPリクエスト(「このIPアドレスの人はいますか」とネットワーク内全員に問い合わせる ブロードキャスト)を送ると、該当するIPアドレスを持つ機器だけがARPリプライ(「私です、MACアドレスは これです」という返信)を返します。
自分の手元で確認する
ターミナルで、自分のMACアドレス・IPアドレスと、同じネットワーク内の機器のIP↔MAC対応表を見てみましょう。
$ ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
link/ether ac:de:48:00:11:22 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.25/24 brd 192.168.10.255 scope global eth0
# link/ether の行がMACアドレス、inet の行がIPアドレスです。$ arp -a ? (192.168.10.1) at ac:de:48:aa:bb:cc [ether] on eth0 ? (192.168.10.30) at ac:de:48:dd:ee:ff [ether] on eth0 # これまでにARPで解決済みの、IPアドレスとMACアドレスの対応表です(ARPキャッシュ)。
練習問題(全5問)
選んでから「採点する」を押すと、解説つきで答え合わせができます。
正解:48ビット
MACアドレスは48ビットで、16進数2桁を6組コロンで区切って表記します(例:AC:DE:48:00:11:22)。
正解:32ビット
IPv4アドレスは32ビットです。10進数4組をドットで区切って表記します(例:192.168.10.25)。
正解:宛先MACアドレスだけ
IPヘッダの宛先IPは最終目的地を指したまま変わりません。書き換わるのはEthernetヘッダの宛先MACアドレスで、ルータを1つ越えるたびに「次に渡す相手」のMACアドレスに変わります。
正解:ARP
ARPは、IPアドレスからそれに対応するMACアドレスを調べる仕組みです。ARPリクエストをブロードキャストで送り、該当する機器だけがARPリプライを返します。
正解:MAC=第2層データリンク層、IP=第3層ネットワーク層
MACアドレスは第2層(データリンク層)、IPアドレスは第3層(ネットワーク層)のアドレスです。