このサイトは、ほんの入り口です

ここにあるのは、だれかが実際に調べ、考え、作ってきたことを集めたメモです。気になったら、ページの下の「参考にした情報源」から、もとの本や記事、それを生み出した人たちに、直接ふれてみてください。このメモには書ききれないおもしろさが、そこにあります。

ネットの なふだと じゅうしょは、どう ちがうの?

MACアドレスとIPアドレスのちがい ── 通常の転送では、旅の途中で名札だけが貼りかえられる

MACアドレスとIPアドレス ── リンクごとに書き換わるMAC、終点まで保たれるIP、そして名札のランダム化

分野:技術

おなじ スマホなのに、いえの Wi-Fiと カフェの Wi-Fiで、きかいの「なふだ」が ちがう ことが あります。なふだが かわっても、どうして ネットは つながるのでしょう。

この メモでは、ネットの 「なふだ」と「じゅうしょ」が、それぞれ なにを して いるのかが わかります。

同じスマホでも、家のWi-FiとカフェのWi-Fiでは、機器の名札にあたるMACアドレスが別になっていることがあります。名札が変わるのに、なぜ通信は相手に届くのでしょうか。

実は、データが旅をするあいだに、名札は何度も貼りかえられています。通常のルーター転送で変わらないのは、住所にあたるIPアドレスのほうです。このメモでは、2つの役割のちがいと、名札を変える理由が分かります。

同じ端末でも、接続するWi-Fiによって、MACアドレスが別の値になることがある。それでも通信が成り立つのは、MACアドレスが「次の区間の相手を指す番号」にすぎず、ルーターは区間ごとにMACを付け替えるからだ。一方IPアドレスは送信元と宛先を示し、通常の転送では終点まで保たれる。

では、終点まで保たれるIPアドレスと何が違うのか。なぜ近年は、MACアドレスのほうを変える方向に進んでいるのか。このメモでは、その2点が分かる。

読み方を切り替えられます。画面の上にある「よみかた」のボタンで、小学校低学年むけ・小学校高学年むけ・中学生むけの3つの書き方に切り替わります。むずかしいと思ったら、いつでもやさしい方に戻ってください。選んだ読み方はブラウザが覚えているので、次に別の記事を開いたときも同じ読み方で始まります。

1. スマホの なふだは、どうして かわるの?

1. 同じスマホなのに、名札が変わる

1. 同じ端末でMACアドレスが変わる ── ランダム化の既定化

スマホや パソコンの Wi-Fiには、「MACアドレス」という なふだが ついて います。きかいを くべつする ための 番ごうです。

Appleの きかいは、Wi-Fiの ネットワークごとに、ちがう アドレスを つかう しくみが あります[7]。いつも おなじ 番ごうだと、きかいの うごきを おいかけやすく なるからです[7]。

Androidも、10からは、Wi-Fiで ランダムな アドレスを つかうのが ふつうに なりました[6]。

なふだが かわるなら、ネットの 中では、ほかに おくりさきを しめす ものが ひつようです。それが「IPアドレス」です。

Appleのサポートページは、iPhoneやiPad、Mac、Apple Watchなどが、Wi-Fiネットワークごとに異なるアドレスを使うと説明しています。同じアドレスを使い続けると、ネットワークの事業者などが、機器の動きや居場所に結びつけやすくなるためです[7]。

Androidは、10以降のWi-Fi接続で、ランダムなMACアドレスを既定で使います[6]。

名札が変わっても通信が続くなら、通信には名札とは別の「宛先」があるはずです。それがIPアドレスです。では、この2つはそれぞれ何を指しているのでしょうか。

Appleは、iPhone・iPad・Mac・Apple Watchなどが、Wi-Fiネットワークごとに異なるアドレスを使うと説明している。同じアドレスを使い続けると、事業者などが端末の動きや位置と結びつけやすくなるからだ[7]。

Androidも、10以降はWi-Fi接続でランダムなMACアドレスを既定で使う[6]。ここで疑問が出る。MACアドレスが接続先ごとに変わるなら、通信の宛先は何で決まっているのか。答えは、もう1つのアドレス、IPアドレスにある。

2. なふだと じゅうしょは、なにが ちがうの?

2. 名札(MAC)と住所(IP)は、指しているものが違う

2. MACアドレスとIPアドレスの役割 ── 識別用の番号と、場所を示す番号

たくはいびんで たとえて みましょう。IPアドレスは、にもつの さいごの とどけ先の「じゅうしょ」です。MACアドレスは、いま にもつを うけとる、つぎの はこび手の「なふだ」です。なふだは、おなじ 線で つながる ひろさの 中だけで つかいます。

ただし ほんとうは、MACは「きかいの なまえ」では ありません。おなじ 線の 上で、きかいを くべつする ための 番ごうです。

IPアドレスは、「ネットワークの 番ごう」の ぶぶんと「その 中の きかいの 番ごう」の ぶぶんに わけて あつかわれます[1]。町の 名まえと 番ちの ような ものです。どこで わけるかは、きまった 場所では なく、せっていで かわります[9]。

MACアドレスは、全部で 48ビットです。よくある 形では、前の 半分は、きかいを つくる そしきに わりあてられた 番ごうで、後ろの 半分は、その そしきが つけます[2]。

宅配便にたとえてみましょう。IPアドレスは、荷物の最終的な届け先の「住所」です。MACアドレスは、荷物をいま受け取る運び手の「名札」です。

ただし、たとえと実際は少しちがいます。IPの規格(RFC 791)は、「名前は何を探すか、アドレスはそれがどこにあるか、経路はどう行くか」を区別しています[1]。MACアドレスは「名前」ではなく、同じ線でつながる範囲で機器を見分ける番号です。

IPv4のアドレスは32ビットで、ネットワークを指す部分と、その中の機器を指す部分に分けて扱われます[1]。町名と番地のようなものです。ただし、どこで分けるか(プレフィックス長)は設定で決まり、固定ではありません[9]。

MACアドレス(EUI-48)は48ビットです。MA-Lという割り当てでは、IEEEが組織に割り当てる24ビットの識別子(OUI)に、その組織が決める24ビットを足して作られます[2]。すべてがこの構成とは限りません。前半は、機器を作った会社などが分かる部分です。

RFC 791は、「名前は何を探すか、アドレスはそれがどこにあるか、経路はどう行くか」と区別する[1]。IPが主に扱うのは、このうち「どこにあるか」、つまり場所のほうだ。IPv4のアドレスは32ビット固定長で、ネットワーク部とホスト部に分けて扱われる[1]。その境目はプレフィックス長で決まり、固定ではない[9]。場所を示すから、ネットワーク部を見れば「どの町か」が分かる。

これに対しMACアドレス(EUI-48)は、場所ではなく識別のための番号だ。IEEEが組織に割り当てる24ビットのOUI(Organizationally Unique Identifier、オーユーアイ)に、組織が付ける24ビットを足して48ビットにする[2]。ただしIEEEには短いブロックの割り当てもあり、すべてが24+24ビットとは限らない。

では、この2つはどうやって組み合わさり、1つのデータを運ぶのか。まず、同じ町内の場合から見る。

3. おなじ 町の 中では、どう とどくの?

3. 同じネットワーク内では、名札を尋ねて届ける

3. 同一リンク内の配送 ── ARPによるIPからMACへの対応づけ

おなじ 町の 中で にもつを とどけるなら、しるす のは、あいての なふだです。でも、あいての「じゅうしょ」しか しらないことが あります。

そこで つかうのが、ARP(アープ)という しくみです。おなじ ネットワークの 中で、「この じゅうしょの 人の なふだは なんですか」と たずねる ための ものです[3]。

こたえが わかれば、なふだを つけて とどけられます。

同じネットワークの中の相手に送るとき、箱に貼るのは、相手の名札(MACアドレス)です。ところが、手元にあるのは相手のIPアドレスだけ、ということがよくあります。

そこで使われるのがARP(アープ、Address Resolution Protocol)です。ARPは、IPなどのアドレスと、48ビットのイーサネットアドレスとの対応を、そのつど配るために作られました[3]。同じ線でつながる範囲で、「このIPの持ち主のMACは何ですか」と尋ねる仕組みです。

答えが分かれば、その名札を貼って、箱を手渡せます。では、相手が別の町にいるときは、どうなるのでしょうか。

同じリンク内で配送するフレームには、宛先のMACアドレスが必要になる。ところが上位の層が持っているのは、宛先のIPアドレスだ。そこでARP(Address Resolution Protocol、アープ)が使われる。RFC 826は、IPなどのプロトコルアドレスと48ビットのイーサネットアドレスの対応を動的に配る仕組みとして、これを定めた[3]。

つまりARPは、同じリンクの中で「このIPの持ち主のMACは」と尋ねるための道具だ。裏を返せば、MACアドレスの出番はそのリンクの内側に限られる。では、リンクの外にいる相手には、どう届けるのか。

4. べつの 町に おくる ときは?

4. 別の町へ送ると、(通常の転送では)名札だけが貼りかえられる

4. ルーターを越える転送 ── リンク層ヘッダの付け替えと、通常の転送でのIPの保持

べつの 町へ おくる ときは、まず「ルーター」という きかいに にもつを わたします。ルーターは、町と 町を つなぐ 中つぎ場です。

ルーターは、うけとった にもつの なふだを はずして、つぎの あいて むけの なふだに つけかえます[4]。ふつうの ルーターの おくり方では、「じゅうしょ」は そのままです。

こうして にもつは、なふだを かえながら、じゅうしょを たよりに すすみます。ふつうは じゅうしょは さいごまで おなじ。なふだは、くかんごとに ちがいます。いえの ルーターなどは、じゅうしょも かきかえる ことが あります(NAT)。

また、ルーターは、なん回も 中つぎされて いる にもつを すてる ことが あります。たびの 回数に かぎりが あるからです[4]。

ここが、このメモでいちばん話したいところです。ルーターは荷物を転送するとき、受け取ったときのリンク層のヘッダ(MACアドレスの宛先・送信元が入った部分)をいったん外し、IPヘッダを調整して、次の相手向けの新しいリンク層ヘッダをつけ直します[4]。

つまり旅の途中では、名札(MAC)は区間ごとに貼りかえられます。いっぽう、通常のルーター転送では、IPの送信元と宛先は保たれます[4]。家庭のルーターなどでNAT(住所の変換)を使うと、IPも書きかわります。

「調整する」IPヘッダの中には、旅の回数の制限(TTL)もあります。ルーターは、TTLが0に達したデータを捨てます[4]。道に迷った荷物が、いつまでも町をぐるぐる回り続けない仕組みです。

名札が毎回変わるなら、貼りかえる名札そのものは、そんなに大切ではないのでしょうか。

ルーターは転送のとき、受信したリンク層ヘッダを一般に取り除き、IPヘッダを修正し、再送信のために新しいリンク層ヘッダに置き換える[4]。そのため、MACアドレスは1つのリンクの内側でしか意味を持たず、ルーターを越えるたびに書き換わる。一方、通常のルーター転送ではIPの送信元と宛先は保たれるから、終点まで同じ宛先を指し続けられる。ただしNATを使う場合はIPも書き換わる。

IPヘッダの修正の例が、TTL(time to live)の扱いだ。ルーターは、TTLが0に達したデータグラムを捨てる[4]。経路が環状になっても、データが無限に回らないための歯止めである。

これで2つのアドレスの分担は見えた。だが、役目が「リンク内の識別」にすぎないMACアドレスを、なぜ今は積極的に変えるのか。

5. どうして なふだを かえるの?

5. 名札を変えて、追いかけられにくくする

5. 追跡への対策 ── MACランダム化とIPv6の一時アドレス

なふだは、いつも おなじだと、きかいを おいかける 手がかりに なります。MACアドレスは、あんごうに されずに おくられる ため、いばしょの おいかけに つかわれる ことが あると、Androidの しりょうは せつめい して います[6]。

だから、なふだを ランダムに かえます。じゅうしょ ほうも、くふうが あります。IPv6では、「いちじ アドレス」で、じかんと ともに アドレスを かえて、おいかけられる 期かんを みじかく します[8]。

IPv6は、アドレスの ながさを 32ビットから 128ビットに ふやしました[5]。

MACアドレスは暗号化されずに送られます。そのため、位置の追跡に使われうる、とAndroidの資料は説明しています[6]。Androidでは、ローカル管理ビットを1、ユニキャスト(1対1の宛先)ビットを0にして、残りの46ビットをランダムにします[6]。メーカーが決める部分も含めて、乱数にするわけです。

IPアドレスの側にも、同じ考えがあります。IPv6でアドレスを自動で作る方式(SLAAC)は、時間がたっても変わらない識別子を含みうるため、通信の相関(同じ機器の通信だと結びつけること)に使われえます。そこで、時間とともにアドレスを変える「一時アドレス」が提案されました。追跡できる期間を限るためです[8]。

ちなみにIPv6は、アドレスのビット数を32から128に増やしました。ビット数は4倍ですが、アドレスの総数は4倍ではなく、2の96乗倍です[5]。

MACアドレスはリンク上で暗号化されずに送られるため、位置の追跡に使われうる。Androidは10以降、Wi-Fiでランダムなアドレスを既定で使い、ローカル管理ビットを1、ユニキャストビットを0にして、残りの46ビットを乱数にする[6]。Appleも、ネットワークごとに異なるアドレスを使う理由として、同じアドレスの継続使用が機器の動きや位置に結びつけやすいことを挙げている[7]。

IPv6でも事情は似ている。SLAACで作るアドレスは、時間がたっても変わらない識別子を含みうる。RFC 8981は、時間とともにアドレスを変えることで、盗聴者などが通信を相関づけられる期間を限るとする[8]。そのため、MAC由来の固定的なIPv6アドレスが今も標準、という整理は適切でない。

なお、IPv6はアドレス長を32ビットから128ビットに拡張した[5]。ビット数は4倍だが、アドレス数は2の96乗倍になる。

名札は、機器を区別する便利な道具として生まれたが、今は「いつも同じ」ことの是非が問われる段階に入っている。

自分でも しらべて みたく なったら

自分でも調べてみたくなったら

自分でも調べてみたくなったら ── 原典と手がかり

今日できること

スマホの Wi-Fiの せってい画めんを ひらいて、つながっている ネットワークの くわしい じょうほうを 見て みましょう。なふだが ランダムに なって いるか たしかめる ための ものです。「アドレス」と かかれた こうもくが あるかも しれません。名まえは きしゅで ちがいます。

見るだけにして、せっていは かえないでください。おうちの 人が いるときに、いっしょに 見ると あんしんです。

今日できること

スマホのWi-Fi設定画面を開き、いま接続しているネットワークの詳細を見てみましょう。設定を変えずに、名札がランダムになっているかを画面の項目で確かめるのが目的です。「プライベートアドレス」や「ランダム」といった名前の項目があるかもしれません。表示名は機種ごとに違うので、見つからなくても心配はいりません。

見るだけにして、設定は変えないでください。家の人と一緒に見ると安心です。

資料を読むなら

Appleのサポートページ(日本語)は、プライベートWi-Fiアドレスの説明を載せています[7]。Androidをお使いなら、AOSPの資料(英語)に動作がまとまっています[6]。

手がかり

スマホのWi-Fi詳細画面を見ると、MACアドレスにあたる項目や、ランダム化の設定があるかもしれない。表示名は機種ごとに違う。見るだけにして、設定は変えない。

原典

役割の区別はRFC 791、転送でのリンク層ヘッダの扱いはRFC 1812、ARPはRFC 826、一時アドレスはRFC 8981に書かれている[1][4][3][8]。Androidのランダム化の動作は、AOSPの資料にまとまっている[6]。

しらべた もとの じょうほう

参考にした情報源

参考にした情報源と、その使い方

使った資料は次のとおり。RFCはIETFの規格文書で、英語。

  1. RFC 791 Internet Protocol. https://www.rfc-editor.org/rfc/rfc791.txt (IPアドレスの構造、名前・アドレス・経路の区別)
  2. IEEE Registration Authority, OUI. https://standards.ieee.org/products-programs/regauth/oui/ (MACアドレスの構成)
  3. RFC 826 An Ethernet Address Resolution Protocol. https://www.rfc-editor.org/rfc/rfc826.txt (ARPの目的)
  4. RFC 1812 Requirements for IP Version 4 Routers. https://www.rfc-editor.org/rfc/rfc1812.txt (ルーターの転送、TTL)
  5. RFC 8200 Internet Protocol, Version 6 (IPv6) Specification. https://www.rfc-editor.org/rfc/rfc8200.txt (IPv6のアドレス長)
  6. Android Open Source Project, MAC randomization behavior. https://source.android.com/docs/core/connect/wifi-mac-randomization-behavior (MACランダム化の動作と理由)
  7. Apple サポート「プライベートWi-Fiアドレス」. https://support.apple.com/ja-jp/102509 (Apple機器のWi-Fiアドレス)
  8. RFC 8981 Temporary Address Extensions for Stateless Address Autoconfiguration in IPv6. https://www.rfc-editor.org/rfc/rfc8981.txt (IPv6の一時アドレス)
  9. RFC 4632 Classless Inter-domain Routing (CIDR). https://www.rfc-editor.org/rfc/rfc4632.txt (プレフィックス長によるネットワーク部の区切り)

なおした ところ

更新履歴

更新履歴(改版の記録)

  •  初版を公開。

このサイトでは、公開した記事の本文は原則として書き直しません。誤りが見つかったときや、内容が古くなったときだけ手を入れ、その理由をこの欄に残します。