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

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

スマホは どうして Wi-Fiに つなぐだけで つかえるの? ばんごうを かりる しくみ

Wi-Fiにつなぐだけで使えるわけ ── 番号を「借りる」DHCPのしくみ

DHCPとは何か ── 通信設定を自動で配る4回のやりとり

分野:技術

ともだちの いえに あそびに いって、スマホを Wi-Fiに つなぎます。パスワードを 入れると、すぐに ゲームも どうがも つかえます。

でも、あなたは「ばんごう」を 入れて いません。それなのに、どうして つながるのでしょうか。この メモでは、スマホが ばんごうを 「かりて」いる しくみを、じゅんばんに みて いきます。

友だちの家でスマホをWi-Fiにつなぎ、パスワードだけ入力すると、すぐにネットが使えます。IPアドレスやDNSといった設定画面には、一文字も打ち込んでいません。それなのに、なぜつながるのでしょうか。

この記事では、スマホがWi-Fiにつながる直前の数回のやりとりと、そこで渡される番号に「期限」がある理由を、DHCPという仕組みからたどります。

Wi-Fiのパスワードを入力しただけで、IPアドレスやDNSサーバの設定には手を触れていないのに、端末は通信を始める。通信に必要なはずの設定は、いつ、誰から渡されたのだろうか。

この記事は、その答えであるDHCP(Dynamic Host Configuration Protocol)を、アドレス取得の4段階、貸出期限(リース)と更新、DHCPが見つからないときの動き、という順に整理する。

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

1. スマホは なにを もらって いるの?

1. つながる前に、スマホが受け取っているもの

1. DHCPの役割 ── 通信の基本設定を自動で配る

ネットを つかう ときは、じぶんの 「ばんごう」が ひつように なります。てがみに じゅうしょが いるのと おなじで、この ばんごうが ないと、へんじが とどきません。この ばんごうを 「IPアドレス」と よびます。

ほかにも、インターネットへの でぐちや、なまえを しらべる あいての ばんごうも いります。これらを、つなぐ ときに じどうで くばって くれる しくみが 「DHCP」です[1]。

もし ぜんぶ 手で 入れるとしたら、スマホが ふえるたびに たいへんです。DHCPが あるから、ばんごうを 手で 入れなくても つながるのです。

ネットで通信するには、機器ごとに「IPアドレス」という番号が必要です。手紙に住所が要るのと同じで、自分の番号がないと、返事が届きません。

実は、必要な設定は番号だけではありません。どこまでが同じネットワークかを示すサブネットマスク、外の世界への出口にあたるデフォルトゲートウェイ、名前から番号を調べるDNSサーバの場所なども要ります。DHCPは、こうした設定を自動で渡す仕組みです。IPv4のネットワーク向けに使われます[1]。

台数が増えるほど、手で設定する作業は大変になります。DHCPがスマホの設定の受け取りを助けてくれるので、私たちは番号を手で入力しなくてもネットにつなげます。

DHCPは、IPv4ネットワークで通信に必要な基本設定を自動的に配るためのプロトコルである。正式名称はDynamic Host Configuration Protocolで、読みはディーエイチシーピー[1]。

配られる設定は、IPv4アドレス、サブネットマスク、デフォルトゲートウェイ、DNSサーバのアドレスなどとされる[1]。このうちIPアドレスは端末の宛先、デフォルトゲートウェイは同じネットワークの外へ出る際の出口、DNSサーバは名前からアドレスを引く先にあたる。

端末の台数が増えるほど手作業の設定は負担になる。DHCPはその負担を減らす仕組みとして使われ、以下の章では、その中身であるやりとりを順に追う。なお、IPv6のアドレスの決め方はこの記事では扱わない。

2. まだ ばんごうが ないのに、どうやって さがすの?

2. 番号のない状態で、最初にどう呼びかけるのか

2. 最初の呼びかけ ── DHCPDISCOVERとブロードキャスト

ここに ふしぎな ことが あります。ばんごうを もらうには、だれかに たのまないと いけません。でも、まだ じぶんの ばんごうも、だれが ばんごうを くばる 人かも わかりません。

そこで スマホは、おなじ ネットワークに いる 全員に きこえるように、よびかけます[2]。ホテルに ついた 人が、ロビーで 「へやの あきは ありますか」と おおきな こえで きく ようなものです。ただし ほんとうは、こえでは なく、電波や ケーブルを つかった 小さな データの やりとりです。

この よびかけは、「ディスカバー」と いう なまえが ついて います。「みつけたい」と いう いみです。

ここで、ちょっとした難題があります。番号をもらうには、誰かに頼まなければなりません。ところが、スマホはまだ自分の番号を持っておらず、誰が番号の係なのかも知りません。

そこでスマホは、同じネットワークにいる全員に届く形で呼びかけます。これをブロードキャストといい、その呼びかけの名前が「DHCPDISCOVER(ディスカバー)」です[2]。ホテルに着いた人が、ロビーで「空いている部屋はありますか」と大きな声で尋ねる様子に似ています。ただし実際は、声ではなく、電波やケーブルで送る小さなデータです。

宛先を決められないので、全員宛てにするしかありません。呼びかけを聞いた番号の係が、返事をします。

端末は接続直後、自分のアドレスも、DHCPサーバの場所も知らない。そのため最初のDHCPDISCOVERは、同一ネットワーク内の全機器に宛てたブロードキャストとして送られる[2]。UDPのポートはサーバが67、クライアントが68である[2]。宛先は255.255.255.255と説明する資料がある[3]。

この呼びかけはネットワーク内の全員に届くため、サーバが複数あれば、それぞれが応答できる[2]。応答する側も、まだ番号が決まっていない端末を相手にしていることになる。

ここで注意したいのは、この段階ではまだ何も割り当てられていない点だ。「探索」の意味をもつDiscoverという名のとおり、この呼びかけは、番号を貸してくれる相手を探す段階にあたる。

3. ばんごうを もらうまでの 4かいの やりとり

3. 4回のやりとり ── 「DORA」で番号が決まるまで

3. アドレス取得の4段階 ── DISCOVERからACKまで

はじめて ばんごうを もらう ときの ふつうの ながれは、4かいの やりとりです[2]。ホテルの ロビーの おはなしで たとえて みましょう。

1かいめ、スマホが 「さがして います」と よびかけます。2かいめ、ばんごうの かかりが 「この ばんごうは どうですか」と ていあんします。3かいめ、スマホが 「それを かりたいです」と こたえます。4かいめ、かかりが 「では この ばんごうを どうぞ」と きめて、つたえます。

この 4つの ことばの あたまの もじを とって、「ドラ」と よぶ ことが あります。ただし、この よびかたは せつめいの ために つかわれて いる もので、きまりの ほんもんの ことばでは ありません。

かかりは、わたす まえに、その ばんごうが ほかの きかいに つかわれて いないか たしかめる ことが すすめられて います[2]。

新しく番号を受け取る典型的な流れは、次の4段階です(手順が省かれる場合もあります)[2]。ホテルのたとえを続けます。

①DISCOVER(ディスカバー):スマホが全員に「番号をください」と呼びかけます。②OFFER(オファー):DHCPサーバが「この番号はどうですか」と提案します。③REQUEST(リクエスト):スマホが「その番号を借りたいです」と申し込みます。④ACK(アック):サーバが「では、その番号で確定です」と設定を伝えます。

4つの頭文字をとって「DORA」と呼ぶことがありますが、これは解説でよく使われる通称で、規格の本文にある言葉ではありません。

渡す前に、サーバがその番号がすでに使われていないかを確かめることが望ましい、と規格には書かれています。たとえば、その番号宛てに呼びかけを送って、返事が来るか探る方法が挙げられています[2]。ただし、これは「必ずする」ではなく推奨で、実際の機器によって動きは違います。

アドレス取得の基本手順は4段階である。クライアントがDHCPDISCOVERをブロードキャストし、サーバがDHCPOFFERでアドレスを提案し、クライアントがDHCPREQUESTで選んだ提案を申し込み、サーバがDHCPACKで設定を確定させる[2]。頭文字からDORAと呼ばれるが、RFC本文の用語ではなく、解説上の通称にすぎない。読みはそれぞれディスカバー、オファーである。

OFFERが複数のサーバから届く場合があり、クライアントはREQUESTでそのうち1つを選ぶ。REQUESTもブロードキャストで送られるため、選ばれなかったサーバも「選ばれなかった」と知ることができる[2]。

RFC 2131は、サーバが新しいアドレスを渡す前に、そのアドレスが使用中でないかを確認するべきだとしている(SHOULD)。例として、ICMP Echoによる問い合わせが挙げられている[2]。SHOULDは推奨の水準で、必須ではない。

規格そのものは、R. Dromsが著者のRFC 2131(1997年3月)で、前身にRFC 1541(1993年10月)があり、BOOTPを土台にしていた。RFC 1541は現在RFC 2131に置き換えられている[2][4]。ここでDromsの名を挙げたのは規格の著者としてであり、DHCPの「発明者」と断定するものではない。

4. ばんごうは 「かして もらって いる」だけ

4. 番号には期限がある ── 貸出と延長

4. リースと更新 ── T1・T2の考え方

もらった ばんごうは、ずっと じぶんの ものでは ありません。「かして もらって いる」だけで、きげんが あります[4]。ロッカーを かりるのと にて います。

きげんが きれると、スマホは その ばんごうを つかうのを やめて、かかりは ほかの 人に かせるように なります[4]。ばんごうの かずには かぎりが あるので、かえって もらう ことで、たくさんの スマホが つかえるのです。

では、きげんが きれる まで つかいつづけて、きれた しゅんかんに こまる のでしょうか。じつは スマホは、きげんの 半分が すぎた ころに、じぶんから「もう すこし かして ください」と たのみに いきます[5]。

たとえば きげんが 8じかんなら、4じかんが すぎた ころです。へんじが なければ、8ぶんの7が すぎた ころから、きげんが きれる まで、ほかの かかりにも よびかけて たのみます。ただし この わりあいは めやすで、せっていで かえられます[5]。

もらった番号は、実は永久に自分のものではありません。DHCPには、番号を期限つきで「貸し出す」考え方(リース)があります。期限が切れると、端末はその番号を使うのをやめ、サーバはその番号をほかの機器に貸せるようになります[4]。

この方式は、使える番号の数が限られている場所や、一時的につなぐ機器がたくさん来る場所で役に立つ、と規格の前身の文書に書かれています[4]。図書館の本や、ロッカーの貸出に似ています。番号の貸出期間の長さは、機器や設定によって違います。

では、期限が切れた瞬間に、通信は突然止まるのでしょうか。実際は、そうならないように、スマホが自分から手を打ちます。期限の半分(T1)を過ぎると、番号を貸してくれた元のサーバに直接「延長してください」と頼みます。返事がなければ、期限の8分の7(T2)に達すると、期限が切れるまで、ほかのサーバにも呼びかけて延長を頼みます[5]。

たとえば期限が8時間なら、T1は4時間後、T2は7時間後です。この2つの割合は既定の目安で、設定によって変えられます。

DHCPでは、アドレスを永続ではなく貸出(リース)として渡せる。割り当て方式には自動(永続)、動的(期限つき)、手動の3種類があり、Wi-Fiのような環境では通常、動的が使われる[4]。期限が切れると自動的に回収され、再利用できる。アドレスの数が限られる場や、一時的に接続する機器が多い場で有効とされる[4]。リース期間の具体的な長さは、機器や設定によって異なる。

更新の手順は、リース時間に対する比率で決まる。T1はリース時間の1/2で、この時点でクライアントは元のサーバにユニキャストで更新を要求する。応答がなければT2(リース時間の7/8)に達した時点から、リース期限まで、他のサーバにもブロードキャストで更新を求める[5]。T2以降の動きには、さらに細かな決まりがある。

たとえばリース時間が8時間なら、T1は4時間後、T2は7時間後になる。1/2、7/8は既定値の目安で、設定で変更できる[5]。

5. だれも ばんごうを くれなかったら?

5. 係の人が見つからないとき

5. DHCPサーバが見つからないとき ── リンクローカル

もし 「ばんごうを ください」と よびかけても、だれも へんじを して くれなかったら、どう なるのでしょうか。

そのときは、きかいが 「169.254」で はじまる 番号を、じぶんで えらぶ ことが あります[6]。いわば、じぶんで つけた あだなです。

この あだなは、おなじ ケーブルや Wi-Fiで つながる きかいの あいだでしか つうじません。インターネットには でて いけません[6]。きかいに よって うごきは ちがうので、この 番号が 出たら かならず しっぱい、とは いえません。

では、「番号をください」と呼びかけても誰も応えなかったら、どうなるでしょうか。

そのとき、機器は「169.254」で始まる範囲の中から、自分で番号を選ぶことがあります(リンクローカルアドレス)。この番号は、同じ線につながった機器同士でしか通信できません。ルーターは、この番号宛ての通信を先に転送しません[6]。

そのため、その場所のほかの機器と話すことはできても、外のインターネットには出られません。もし自分の機器に「169.254」で始まる番号が出ていたら、番号の係と話せていない目安になります。ただし、機器の作りによっても動きは変わるので、目安として考えてください。

DHCPサーバに到達できない場合、機器は169.254.0.0/16の範囲から自分でアドレスを選ぶことがある(リンクローカルアドレス)。このアドレスは、同じ物理的または論理的なリンクにつながる機器との通信にだけ有効で、ルーターは転送しない[6]。

このため、169.254で始まるアドレスは「DHCPが機能していない」ことを疑う目安になる。ただし、これは機器の実装に依存するもので、常にDHCPの失敗を意味するとは限らない。

6. いえの ばんごうと、スマホの なまえ

6. 家の中だけの番号と、追跡を減らす工夫

6. プライベートアドレスと、MACアドレスの使い分け

いえの 中で もらう ばんごうは、せかい中で ひとつだけでは ありませんが、おなじ ネットワークの 中では くべつできる ばんごうが ひつようです。いえの 中だけで つかう 「プライベートアドレス」と いう はんいが きめられて います。はじまりの かずは、「10」「172.16から172.31」「192.168」です[7]。

それから、ばんごうを くばる かかりは、きかいを 見分ける ために、きかいごとに ちがう 「MACアドレス」という ばんごうを てがかりに する ことが あります。

アップルの スマホには、Wi-Fiごとに ちがう なまえを つかいわける 「プライベートWi-Fiアドレス」と いう きのうが あります。おなじ なまえを ずっと つかわないので、どこで つないで いたかを たどりにくく なります[8]。

家庭やオフィスなどの私的なネットワークでは、世界中で重ならない番号を使わなくてもよい範囲が決められています。これを「プライベートアドレス」といい、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16の3つです。172.16から172.31までで、172.32以降は含まれません[7]。番号の数を節約する狙いなどがあります。

なお、DHCPのサーバは、機器の見分けにMACアドレス(機器ごとの識別番号)を材料にすることがあります。JPNICの説明にも、登録した機器のMACアドレスごとに決まった番号を渡す運用と、範囲から自動で割り当てる運用があると紹介されています[1]。

この点に関わる工夫として、Appleの「プライベートWi-Fiアドレス」があります。Wi-Fiネットワークごとに異なるMACアドレスを使い分け、事業者などが機器の行動や位置を追跡しにくくするものです[8]。これはDHCPそのものの機能ではなく、機器の側の設定です。

私的な網では、インターネット全体で一意なアドレスを使わなくてよい。RFC 1918は、そのためのプライベートアドレスとして10.0.0.0/8、172.16.0.0/12、192.168.0.0/16を定める(172.16〜172.31まで。172.32以降は含まれない)[7]。理由の一つは、外部と直接通信する必要のない機器に、世界で一意なアドレスを割り当てずに済むためである。

JPNICによると、DHCPの運用には、不特定の利用者へ範囲から自動で割り当てる方式と、登録した機器のMACアドレスごとに決まったアドレスを割り当てる方式がある[1]。この2つは、アドレスの自動割り当ての中でも使い分けの異なる例といえる。

Appleの「プライベートWi-Fiアドレス」は、Wi-Fiネットワークごとに異なるMACアドレスを使い分け、事業者などが機器の行動や位置を追跡しにくくする[8]。DHCPの機能ではないが、DHCPサーバが機器を見分ける材料とMACアドレスが関わる点で、関連する話題である。

7. じぶんでも しらべて みたく なったら

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

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

おうちの 人と いっしょに、スマホの せっていで、つないで いる Wi-Fiの くわしい じょうほうを ひらいて みましょう。「192.168」のように はじまる ばんごうが、出て くるかも しれません。

見るだけに して、なにも かえないように します。パスワードは、だれにも みせない ように しましょう。きかいに よって 画面が ちがうので、わからない ときは おとなに ききましょう。

もっと くわしく 知りたい ときは、下の 「しらべた もとの じょうほう」を 見て みてください。

スマホの設定にある、いまつないでいるWi-Fiの詳細な情報を開いてみましょう。「192.168」や「10」で始まる番号が見つかるかもしれません。プライベートアドレスの範囲に入っているかを、この記事の数字と見比べられます。

見るだけにして、設定は変えないでください。パスワードなど、ほかの人に知られたくない情報は写真に撮って共有しないようにしましょう。機種によって画面は違うので、見つからないときは家の人に聞いてください。

見つけた番号が、記事の「プライベートアドレス」の3つの範囲のどれに入るか、または「169.254」で始まっていないかを、家族の端末とも見比べてみましょう。

原典に当たるなら、RFC 2131(DHCPの本体)、RFC 1918(プライベートアドレス)、RFC 3927(リンクローカル)が候補になる。いずれも英語だが、RFC 2131の4章は、更新の時刻T1・T2の扱いまで含めて読める。

手元の端末でも、Wi-Fiの詳細画面でIPアドレスとネットワークの設定を見比べられる。プライベートアドレスの3つの範囲のどれに入るか、または169.254で始まっていないかを確かめると、この記事の内容が自分の環境と結びつく。画面の項目名は機種によって違い、確認だけにとどめ設定は変更しない。

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

参考にした情報源

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

出典について:DHCPの規格の本体はRFC 2131で、RFCはインターネットの技術の決まりごとを公開する文書。JPNICは日本のインターネットの番号などを管理する団体。「DORA」は解説上の通称で、規格の言葉ではない。宛先アドレスなどの一部は二次資料による。

  1. JPNIC, “インターネット用語1分解説 DHCP”. https://www.nic.ad.jp/ja/basics/terms/dhcp.html (DHCPの定義、配られる設定の種類、運用方式について)
  2. R. Droms, “Dynamic Host Configuration Protocol”, RFC 2131, 1997. https://www.rfc-editor.org/rfc/rfc2131 (4段階のやりとり、使用中かの確認、規格の位置づけについて)
  3. pynetlabs, “What is DHCP”. https://www.pynetlabs.com/what-is-dhcp/ (DISCOVERの宛先アドレスについて。二次資料)
  4. “Dynamic Host Configuration Protocol”, RFC 1541, 1993. https://www.rfc-editor.org/rfc/rfc1541 (貸出期限つきの割り当て、回収、前身の規格について)
  5. R. Droms, RFC 2131 第4.4.5節. https://datatracker.ietf.org/doc/html/rfc2131#section-4.4.5 (更新の時刻T1・T2の定義について)
  6. “Dynamic Configuration of IPv4 Link-Local Addresses”, RFC 3927. https://www.rfc-editor.org/rfc/rfc3927 (169.254で始まる自己設定アドレスについて)
  7. “Address Allocation for Private Internets”, RFC 1918. https://www.rfc-editor.org/rfc/rfc1918 (プライベートアドレスの3つの範囲について)
  8. Apple サポート, “プライベートWi-Fiアドレスを使用する”. https://support.apple.com/ja-jp/102509 (Wi-Fiごとにちがう識別番号を使う機能について)

なおした ところ

更新履歴

更新履歴(改版の記録)

  •  初版を公開。

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